mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
e3742dbc66
* Always enforce one owner * updates from merge * remove redudant eslint rules * Update packages/features/pbac/services/pbac-role-manager.service.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import { FeaturesRepository } from "@calcom/features/flags/features.repository";
|
|
import { prisma } from "@calcom/prisma";
|
|
|
|
import { LegacyRoleManager } from "./legacy-role-manager.service";
|
|
import { PBACRoleManager } from "./pbac-role-manager.service";
|
|
import { PermissionCheckService } from "./permission-check.service";
|
|
import { IRoleManager } from "./role-manager.interface";
|
|
import { RoleService } from "./role.service";
|
|
|
|
export class RoleManagementFactory {
|
|
private static instance: RoleManagementFactory;
|
|
private featuresRepository: FeaturesRepository;
|
|
private roleService: RoleService;
|
|
private permissionCheckService: PermissionCheckService;
|
|
|
|
private constructor() {
|
|
// Not used but needed for DI
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
(this.featuresRepository = new FeaturesRepository(prisma)), (this.roleService = new RoleService());
|
|
this.permissionCheckService = new PermissionCheckService();
|
|
}
|
|
|
|
public static getInstance(): RoleManagementFactory {
|
|
if (!RoleManagementFactory.instance) {
|
|
RoleManagementFactory.instance = new RoleManagementFactory();
|
|
}
|
|
return RoleManagementFactory.instance;
|
|
}
|
|
|
|
async createRoleManager(organizationId: number): Promise<IRoleManager> {
|
|
const isPBACEnabled = await this.featuresRepository.checkIfTeamHasFeature(organizationId, "pbac");
|
|
|
|
return isPBACEnabled
|
|
? new PBACRoleManager(this.roleService, this.permissionCheckService)
|
|
: new LegacyRoleManager();
|
|
}
|
|
}
|