mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-04 12:26:13 +00:00
Update 20240724101056_access-request-groups.ts
This commit is contained in:
committed by
Daniel Hougaard
parent
1216d218c1
commit
b717de4f78
@@ -116,14 +116,17 @@ export async function up(knex: Knex): Promise<void> {
|
|||||||
tb.foreign("projectId").references("id").inTable(TableName.Project).onDelete("CASCADE");
|
tb.foreign("projectId").references("id").inTable(TableName.Project).onDelete("CASCADE");
|
||||||
});
|
});
|
||||||
|
|
||||||
await knex.raw(`
|
await knex(TableName.ProjectUserAdditionalPrivilege)
|
||||||
UPDATE ${TableName.ProjectUserAdditionalPrivilege} AS puap
|
.update({
|
||||||
SET
|
// eslint-disable-next-line
|
||||||
"userId" = pm."userId",
|
// @ts-ignore because generate schema happens after this
|
||||||
"projectId" = pm."projectId"
|
userId: knex.ref("pm.userId"),
|
||||||
FROM ${TableName.ProjectMembership} AS pm
|
// eslint-disable-next-line
|
||||||
WHERE puap."projectMembershipId" = pm."id"
|
// @ts-ignore because generate schema happens after this
|
||||||
`);
|
projectId: knex.ref("pm.projectId")
|
||||||
|
})
|
||||||
|
.from(`${TableName.ProjectUserAdditionalPrivilege} as puap`)
|
||||||
|
.join(`${TableName.ProjectMembership} as pm`, "puap.projectMembershipId", "pm.id");
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.ProjectUserAdditionalPrivilege, (tb) => {
|
await knex.schema.alterTable(TableName.ProjectUserAdditionalPrivilege, (tb) => {
|
||||||
tb.uuid("userId").notNullable().alter();
|
tb.uuid("userId").notNullable().alter();
|
||||||
@@ -168,18 +171,25 @@ export async function down(knex: Knex): Promise<void> {
|
|||||||
|
|
||||||
if (!hasProjectMembershipId) {
|
if (!hasProjectMembershipId) {
|
||||||
// First, update records where a matching project membership exists
|
// First, update records where a matching project membership exists
|
||||||
await knex.raw(`
|
await knex(TableName.ProjectUserAdditionalPrivilege).update({
|
||||||
UPDATE ${TableName.ProjectUserAdditionalPrivilege} AS puap
|
// eslint-disable-next-line
|
||||||
SET "projectMembershipId" = pm."id"
|
// @ts-ignore because generate schema happens after this
|
||||||
FROM ${TableName.ProjectMembership} AS pm
|
projectMembershipId: knex(TableName.ProjectMembership)
|
||||||
WHERE puap."userId" = pm."userId" AND puap."projectId" = pm."projectId"
|
.select("id")
|
||||||
`);
|
.where("userId", knex.raw("??", [`${TableName.ProjectUserAdditionalPrivilege}.userId`]))
|
||||||
|
});
|
||||||
|
|
||||||
|
await knex(TableName.AccessApprovalRequest).update({
|
||||||
|
// eslint-disable-next-line
|
||||||
|
// @ts-ignore because generate schema happens after this
|
||||||
|
projectMembershipId: knex(TableName.ProjectMembership)
|
||||||
|
.select("id")
|
||||||
|
.where("userId", knex.raw("??", [`${TableName.SecretApprovalRequest}.userId`]))
|
||||||
|
});
|
||||||
|
|
||||||
// Then, delete records where no matching project membership was found
|
// Then, delete records where no matching project membership was found
|
||||||
await knex.raw(`
|
await knex(TableName.AccessApprovalRequest).whereNull("projectMembershipId").delete();
|
||||||
DELETE FROM ${TableName.ProjectUserAdditionalPrivilege}
|
await knex(TableName.ProjectUserAdditionalPrivilege).whereNull("projectMembershipId").delete();
|
||||||
WHERE "projectMembershipId" IS NULL
|
|
||||||
`);
|
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.ProjectUserAdditionalPrivilege, (tb) => {
|
await knex.schema.alterTable(TableName.ProjectUserAdditionalPrivilege, (tb) => {
|
||||||
// DROP AT A LATER TIME
|
// DROP AT A LATER TIME
|
||||||
@@ -238,36 +248,20 @@ export async function down(knex: Knex): Promise<void> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// await knex(TableName.AccessApprovalRequest).update({
|
|
||||||
// // eslint-disable-next-line
|
|
||||||
// // @ts-ignore because generate schema happens after this
|
|
||||||
// requestedBy: knex(TableName.ProjectMembership)
|
|
||||||
// .select("id")
|
|
||||||
// .where("userId", knex.raw("??", [`${TableName.AccessApprovalRequest}.requestedByUserId`]))
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Try to find a project membership based on the AccessApprovalRequest.requestedByUserId and AccessApprovalRequest.policyId(reference to AccessApprovalRequestPolicy).envId(reference to Environment).projectId(reference to Project)
|
// Try to find a project membership based on the AccessApprovalRequest.requestedByUserId and AccessApprovalRequest.policyId(reference to AccessApprovalRequestPolicy).envId(reference to Environment).projectId(reference to Project)
|
||||||
// If a project membership is found, set the AccessApprovalRequest.requestedBy to the project membership id
|
// If a project membership is found, set the AccessApprovalRequest.requestedBy to the project membership id
|
||||||
// If a project membership is not found, remove the AccessApprovalRequest record
|
// If a project membership is not found, remove the AccessApprovalRequest record
|
||||||
await knex.raw(`
|
|
||||||
UPDATE ${TableName.AccessApprovalRequest} AS aar
|
await knex(TableName.AccessApprovalRequest).update({
|
||||||
SET "requestedBy" = pm."id"
|
// eslint-disable-next-line
|
||||||
FROM ${TableName.ProjectMembership} AS pm
|
// @ts-ignore because generate schema happens after this
|
||||||
WHERE aar."requestedByUserId" = pm."userId" AND aar."policyId" IN (
|
requestedBy: knex(TableName.ProjectMembership)
|
||||||
SELECT "id"
|
.select("id")
|
||||||
FROM ${TableName.AccessApprovalPolicy}
|
.where("userId", knex.raw("??", [`${TableName.AccessApprovalRequest}.requestedByUserId`]))
|
||||||
WHERE "envId" IN (
|
});
|
||||||
SELECT "id"
|
|
||||||
FROM ${TableName.Environment}
|
|
||||||
WHERE "projectId" = pm."projectId"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
`);
|
|
||||||
// Then, delete records where no matching project membership was found
|
// Then, delete records where no matching project membership was found
|
||||||
await knex.raw(`
|
await knex(TableName.AccessApprovalRequest).whereNull("requestedBy").delete();
|
||||||
DELETE FROM ${TableName.AccessApprovalRequest}
|
|
||||||
WHERE "requestedBy" IS NULL
|
|
||||||
`);
|
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.AccessApprovalRequest, (tb) => {
|
await knex.schema.alterTable(TableName.AccessApprovalRequest, (tb) => {
|
||||||
if (hasRequestedByUserId) {
|
if (hasRequestedByUserId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user