This commit is contained in:
@@ -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"`);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,8 +6,46 @@ import { DataSource } from "typeorm";
|
|||||||
import { PermissionEnum } from "../../src/modules/users/enums/permission.enum";
|
import { PermissionEnum } from "../../src/modules/users/enums/permission.enum";
|
||||||
import { RoleEnum } from "../../src/modules/users/enums/role.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
|
// 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
|
// Define roles with their default permissions
|
||||||
const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[] = [
|
const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[] = [
|
||||||
@@ -23,8 +61,8 @@ const rolesWithPermissions: { name: RoleEnum; permissions: PermissionEnum[] }[]
|
|||||||
|
|
||||||
export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Logger) => {
|
export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Logger) => {
|
||||||
try {
|
try {
|
||||||
const permissionRepo = dataSource.getRepository('Permission');
|
const permissionRepo = dataSource.getRepository("Permission");
|
||||||
const roleRepo = dataSource.getRepository('Role');
|
const roleRepo = dataSource.getRepository("Role");
|
||||||
|
|
||||||
// Seed Permissions
|
// Seed Permissions
|
||||||
logger.log("Seeding Permissions...");
|
logger.log("Seeding Permissions...");
|
||||||
@@ -33,6 +71,9 @@ export const seedPermissionsAndRoles = async (dataSource: DataSource, logger: Lo
|
|||||||
if (!existingPerm) {
|
if (!existingPerm) {
|
||||||
const newPerm = permissionRepo.create(perm);
|
const newPerm = permissionRepo.create(perm);
|
||||||
await permissionRepo.save(newPerm);
|
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");
|
logger.log("Permissions seeded successfully");
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ export class Permission extends BaseEntity {
|
|||||||
@Column({ type: "enum", enum: PermissionEnum, nullable: false, unique: true })
|
@Column({ type: "enum", enum: PermissionEnum, nullable: false, unique: true })
|
||||||
name: PermissionEnum;
|
name: PermissionEnum;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 150, nullable: false })
|
||||||
|
title: string;
|
||||||
|
|
||||||
@ManyToMany(() => Role, (role) => role.permissions)
|
@ManyToMany(() => Role, (role) => role.permissions)
|
||||||
roles: Role[];
|
roles: Role[];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ export class AdminsService {
|
|||||||
/************************************************************ */
|
/************************************************************ */
|
||||||
|
|
||||||
async getPermissions() {
|
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 {
|
return {
|
||||||
permissions,
|
permissions,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user