diff --git a/database/migrations/1784465631499-addTitleToPermission.ts b/database/migrations/1784465631499-addTitleToPermission.ts new file mode 100644 index 0000000..bcd2795 --- /dev/null +++ b/database/migrations/1784465631499-addTitleToPermission.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddTitleToPermission1784465631499 implements MigrationInterface { + name = "AddTitleToPermission1784465631499"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "permission" ADD "title" character varying(150)`); + await queryRunner.query(`UPDATE "permission" SET "title" = "name"::text WHERE "title" IS NULL`); + await queryRunner.query(`ALTER TABLE "permission" ALTER COLUMN "title" SET NOT NULL`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "permission" DROP COLUMN "title"`); + } +} diff --git a/database/seeders/role.seeder.ts b/database/seeders/role.seeder.ts index 747354b..7e93d38 100755 --- a/database/seeders/role.seeder.ts +++ b/database/seeders/role.seeder.ts @@ -6,8 +6,46 @@ import { DataSource } from "typeorm"; import { PermissionEnum } from "../../src/modules/users/enums/permission.enum"; import { RoleEnum } from "../../src/modules/users/enums/role.enum"; +const permissionTitles: Record = { + [PermissionEnum.SERVICES]: "سرویس‌ها", + [PermissionEnum.CUSTOMERS]: "مشتریان", + [PermissionEnum.AGENTS]: "نمایندگان", + [PermissionEnum.DEVELOPERS]: "توسعه‌دهندگان", + [PermissionEnum.INVOICES]: "صورتحساب‌ها", + [PermissionEnum.TRANSACTIONS]: "تراکنش‌ها", + [PermissionEnum.DISCOUNTS]: "تخفیف‌ها", + [PermissionEnum.ADMINS]: "ادمین‌ها", + [PermissionEnum.TICKETS]: "تیکت‌ها", + [PermissionEnum.CRITICISMS]: "انتقادات", + [PermissionEnum.CONTACTS_US]: "تماس با ما", + [PermissionEnum.ADVERTISEMENTS]: "تبلیغات", + [PermissionEnum.ANNOUNCEMENTS]: "اطلاعیه‌ها", + [PermissionEnum.BLOGS]: "بلاگ‌ها", + [PermissionEnum.LEARNINGS]: "آموزش‌ها", + [PermissionEnum.LOGS]: "لاگ‌ها", + [PermissionEnum.SETTINGS]: "تنظیمات", + [PermissionEnum.BANK_ACCOUNTS]: "حساب‌های بانکی", + [PermissionEnum.PAYMENTS]: "پرداخت‌ها", + [PermissionEnum.MANAGE_SSO_CLIENTS]: "مدیریت کلاینت‌های SSO", + [PermissionEnum.SUPPORT_PLAN]: "پلن پشتیبانی", + [PermissionEnum.DMENU]: "دی‌منو", + [PermissionEnum.DKALA]: "دی‌کالا", + [PermissionEnum.DPAGE]: "دی‌پیج", + [PermissionEnum.DMAIL]: "دی‌میل", + [PermissionEnum.RESELLER]: "نمایندگی فروش", + [PermissionEnum.WORKSPACE]: "فضای کار", + [PermissionEnum.VIEW_ALL_WORKSPACES]: "مشاهده همه فضاهای کار", + [PermissionEnum.PROJECT]: "پروژه", + [PermissionEnum.VIEW_ALL_PROJECTS]: "مشاهده همه پروژه‌ها", + [PermissionEnum.TASK]: "وظیفه", + [PermissionEnum.TASK_PHASE]: "فاز وظیفه", +}; + // Define permissions -const permissions = Object.values(PermissionEnum).map((perm) => ({ name: perm })); +const permissions = Object.values(PermissionEnum).map((perm) => ({ + name: perm, + title: permissionTitles[perm], +})); // Define roles with their default permissions const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[] = [ @@ -23,8 +61,8 @@ const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[] export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Logger) => { try { - const permissionRepo = dataSource.getRepository('Permission'); - const roleRepo = dataSource.getRepository('Role'); + const permissionRepo = dataSource.getRepository("Permission"); + const roleRepo = dataSource.getRepository("Role"); // Seed Permissions logger.log("Seeding Permissions..."); @@ -33,6 +71,9 @@ export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Lo if (!existingPerm) { const newPerm = permissionRepo.create(perm); await permissionRepo.save(newPerm); + } else if (!existingPerm.title || existingPerm.title !== perm.title) { + existingPerm.title = perm.title; + await permissionRepo.save(existingPerm); } } logger.log("Permissions seeded successfully"); diff --git a/src/modules/users/entities/permission.entity.ts b/src/modules/users/entities/permission.entity.ts index f93290c..26d6ab8 100755 --- a/src/modules/users/entities/permission.entity.ts +++ b/src/modules/users/entities/permission.entity.ts @@ -9,6 +9,9 @@ export class Permission extends BaseEntity { @Column({ type: "enum", enum: PermissionEnum, nullable: false, unique: true }) name: PermissionEnum; + @Column({ type: "varchar", length: 150, nullable: false }) + title: string; + @ManyToMany(() => Role, (role) => role.permissions) roles: Role[]; } diff --git a/src/modules/users/providers/admins.service.ts b/src/modules/users/providers/admins.service.ts index aec1d42..4a4597d 100755 --- a/src/modules/users/providers/admins.service.ts +++ b/src/modules/users/providers/admins.service.ts @@ -288,7 +288,7 @@ export class AdminsService { /************************************************************ */ async getPermissions() { - const permissions = await this.permissionsRepository.find({ select: { id: true, name: true } }); + const permissions = await this.permissionsRepository.find({ select: { id: true, name: true, title: true } }); return { permissions, };