add title to permission
Build and Deploy Docker Images / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-19 16:37:45 +03:30
parent c956bc0deb
commit c82cc654f0
4 changed files with 63 additions and 4 deletions
@@ -0,0 +1,15 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddTitleToPermission1784465631499 implements MigrationInterface {
name = "AddTitleToPermission1784465631499";
public async up(queryRunner: QueryRunner): Promise<void> {
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<void> {
await queryRunner.query(`ALTER TABLE "permission" DROP COLUMN "title"`);
}
}
+44 -3
View File
@@ -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, string> = {
[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");
@@ -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[];
}
@@ -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,
};