Files
cal.diy/apps/api/v2/src/modules/roles/roles.module.ts
T
Lauris Skraucis 45278a2195 feat: api v2 pbac support (#24402)
* feat: Pbac decorator and guard

* feat: v2 roles endpoints

* fix: test

* fix: starting v2

* fix: test error

* fix: test api keys

* fix fixture

* test permission creation

* feat: permissions endpoints

* refactors

* refactor: project structure

* test: role permissions crud

* test: permissions endpoint negative tests

* docs: org, team permissions swagger

* unit tests for validator

* Update roles.guard.ts

* fix type

* test: error messages

* refactor: dont throw error in pbac

* delete redundant test file

* feedback: logging error

* fix: persist role.permissions when updating role.otherProperty

* refactor: use output service to return permissions

* refactor: service functions return current permissions

* refactor: remove OrganizationsRepository from providers

* refactor: try catch possibly duplicate create

* refactor: require min length name if provided

* refactor: org role has orgId and team role teamId

* fix: pbac guard caching

* fix: e2e tests in parallel

* refactor: use IsTeamInOrg guard for orgs teams roles and permissions endpoints

* refactor: use redis service getter and setter

* refactor: invalidate team permissions cache when permissions change

* refactor: delete keys instead of versioning when caching
2025-11-06 17:14:55 +00:00

40 lines
1.5 KiB
TypeScript

import { MembershipsModule } from "@/modules/memberships/memberships.module";
import { OrganizationsRolesOutputService } from "@/modules/organizations/roles/services/organizations-roles-output.service";
import { PrismaModule } from "@/modules/prisma/prisma.module";
import { RedisModule } from "@/modules/redis/redis.module";
import { StripeModule } from "@/modules/stripe/stripe.module";
import { Module } from "@nestjs/common";
import { RoleService } from "@calcom/platform-libraries/pbac";
import { TeamRolesOutputService } from "../organizations/teams/roles/services/team-roles-output.service";
import { RolesPermissionsCacheService } from "./permissions/services/roles-permissions-cache.service";
import { RolesPermissionsOutputService } from "./permissions/services/roles-permissions-output.service";
import { RolesPermissionsService } from "./permissions/services/roles-permissions.service";
import { RolesService } from "./services/roles.service";
@Module({
imports: [StripeModule, PrismaModule, RedisModule, MembershipsModule],
providers: [
{
provide: RoleService,
useFactory: () => new RoleService(),
},
RolesService,
TeamRolesOutputService,
OrganizationsRolesOutputService,
RolesPermissionsService,
RolesPermissionsOutputService,
RolesPermissionsCacheService,
],
exports: [
RolesService,
TeamRolesOutputService,
OrganizationsRolesOutputService,
RolesPermissionsService,
RolesPermissionsOutputService,
RolesPermissionsCacheService,
],
})
export class RolesModule {}