Files
dvbooking/server/src/migration/1761597689677-add_rbac_to_admin.ts
2025-11-06 17:24:11 +01:00

64 lines
1.8 KiB
TypeScript

import { MigrationInterface, QueryRunner } from 'typeorm';
export class AddRbacToAdmin1761597689677 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
const idRoleAdmin = await this.doInsert(queryRunner, 'user_role', {
name: 'admin',
});
console.info('idRoleAdmin', idRoleAdmin);
const idRoleUserManagement = await this.doInsert(queryRunner, 'user_role', {
name: 'user_manager',
});
console.info('idRoleUserManagement', idRoleUserManagement);
const idGroupAdmin = await this.doInsert(queryRunner, 'user_group', {
name: 'admin',
});
console.info('idGroupAdmin', idGroupAdmin);
await this.doInsert(queryRunner, 'user_group_roles_user_role', {
userGroupId: idGroupAdmin,
userRoleId: idRoleAdmin,
});
await this.doInsert(queryRunner, 'user_group_roles_user_role', {
userGroupId: idGroupAdmin,
userRoleId: idRoleUserManagement,
});
const users: object[] = (await queryRunner.query(
`SELECT * FROM "user" WHERE "username" = $1`,
['admin'],
)) as object[];
let userId: number | undefined = undefined;
if (users?.length > 0) {
const user = users[0] as { id: number };
userId = user.id;
}
await this.doInsert(queryRunner, 'user_groups_user_group', {
userGroupId: idGroupAdmin,
userId: userId,
});
}
public async down(_queryRunner: QueryRunner): Promise<void> {
// await queryRunner.query(
}
private async doInsert(
queryRunner: QueryRunner,
table: string,
values: Record<string, any>,
): Promise<string> {
console.info("inserting values",values);
const insertResult = await queryRunner.manager
.createQueryBuilder()
.insert()
.into(table)
.values(values)
.execute();
return insertResult.raw[0]?.id as string;
}
}