feat(rbac): added new validation to all routes and permission check to most

This commit is contained in:
Akhil Mohan
2023-09-08 21:22:36 +05:30
parent 520a553ea1
commit 549121f44e
78 changed files with 4518 additions and 3499 deletions
+234 -1
View File
@@ -9,6 +9,7 @@ import { BotService } from "../services";
import { AuthData } from "../interfaces/middleware";
import { extractIPDetails } from "../utils/ip";
import { z } from "zod";
import { EventType, UserAgentType } from "../ee/models";
/**
* Validate authenticated clients for workspace with id [workspaceId] based
@@ -122,9 +123,241 @@ export const validateClientForWorkspace = async ({
}
};
export const CreateWorkspacev1 = z.object({
export const GetWorkspaceSecretSnapshotsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
query: z.object({
environment: z.string().trim(),
folderId: z.string().trim().default("root"),
offset: z.number(),
limit: z.number()
})
});
export const GetWorkspaceSecretSnapshotsCountV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
query: z.object({
environment: z.string().trim(),
folderId: z.string().trim().default("root")
})
});
export const RollbackWorkspaceSecretSnapshotV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
environment: z.string().trim(),
folderId: z.string().trim().default("root"),
version: z.number()
})
});
export const GetWorkspaceLogsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
query: z.object({
offset: z.number(),
limit: z.number(),
sortBy: z.string().trim().optional(),
userId: z.string().trim().optional(),
actionNames: z.string().trim().optional()
})
});
export const GetWorkspaceAuditLogsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
query: z.object({
eventType: z.nativeEnum(EventType).nullable().optional(),
userAgentType: z.nativeEnum(UserAgentType).nullable().optional(),
startDate: z.string().datetime().nullable().optional(),
endDate: z.string().datetime().nullable().optional(),
offset: z.number(),
limit: z.number(),
actor: z.string().nullish().optional()
})
});
export const GetWorkspaceAuditLogActorFilterOptsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceTrustedIpsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const AddWorkspaceTrustedIpV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
ipAddress: z.string().trim(),
comment: z.string().trim().default(""),
isActive: z.boolean()
})
});
export const UpdateWorkspaceTrustedIpV1 = z.object({
params: z.object({
workspaceId: z.string().trim(),
trustedIpId: z.string().trim()
}),
body: z.object({
ipAddress: z.string().trim(),
comment: z.string().trim().default("")
})
});
export const DeleteWorkspaceTrustedIpV1 = z.object({
params: z.object({
workspaceId: z.string().trim(),
trustedIpId: z.string().trim()
})
});
export const GetWorkspacePublicKeysV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceMembershipsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const CreateWorkspaceV1 = z.object({
body: z.object({
workspaceName: z.string().trim(),
organizationId: z.string().trim()
})
});
export const DeleteWorkspaceV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const ChangeWorkspaceNameV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
name: z.string().trim()
})
});
export const InviteUserToWorkspaceV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
email: z.string().trim()
})
});
export const GetWorkspaceIntegrationsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceIntegrationAuthorizationsV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceServiceTokensV1 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceServiceTokenDataV2 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceKeyV2 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceMembershipsV2 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const UpdateWorkspaceMembershipsV2 = z.object({
params: z.object({
workspaceId: z.string().trim(),
membershipId: z.string().trim()
}),
body: z.object({
role: z.string().trim()
})
});
export const DeleteWorkspaceMembershipsV2 = z.object({
params: z.object({
workspaceId: z.string().trim(),
membershipId: z.string().trim()
})
});
export const ToggleAutoCapitalizationV2 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
autoCapitalization: z.string().trim()
})
});
export const GetWorkspaceBlinkIndexStatusV3 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const GetWorkspaceSecretsV3 = z.object({
params: z.object({
workspaceId: z.string().trim()
})
});
export const NameWorkspaceSecretsV3 = z.object({
params: z.object({
workspaceId: z.string().trim()
}),
body: z.object({
secretsToUpdate: z
.object({
secretName: z.string().trim(),
_id: z.string().trim()
})
.array()
})
});