mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
f796802ed3
* feat: add fallbackRoles parameter to getTeamIdsWithPermissions method - Add fallbackRoles parameter to method signature in interface and implementation - Implement second query for teams without PBAC where user has fallback roles - Combine and deduplicate results from both PBAC-enabled and fallback role teams - Supports fallback to role-based permissions when PBAC is disabled - Fix linting issue in getUserMemberships method by replacing include with select Co-Authored-By: [email protected] <[email protected]> * fix usages * revert some change * fix unit tests --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
82 lines
2.1 KiB
TypeScript
82 lines
2.1 KiB
TypeScript
import type { MembershipRole } from "@calcom/prisma/enums";
|
|
|
|
import type { TeamPermissions } from "../models/Permission";
|
|
import type { PermissionString, Resource, CrudAction, CustomAction } from "../types/permission-registry";
|
|
|
|
export interface IPermissionRepository {
|
|
getUserMemberships(userId: number): Promise<TeamPermissions[]>;
|
|
|
|
getMembershipByMembershipId(membershipId: number): Promise<{
|
|
id: number;
|
|
teamId: number;
|
|
userId: number;
|
|
customRoleId: string | null;
|
|
team: {
|
|
parentId: number | null;
|
|
};
|
|
} | null>;
|
|
|
|
getMembershipByUserAndTeam(
|
|
userId: number,
|
|
teamId: number
|
|
): Promise<{
|
|
id: number;
|
|
teamId: number;
|
|
userId: number;
|
|
customRoleId: string | null;
|
|
team: {
|
|
parentId: number | null;
|
|
};
|
|
} | null>;
|
|
|
|
getOrgMembership(
|
|
userId: number,
|
|
orgId: number
|
|
): Promise<{
|
|
id: number;
|
|
teamId: number;
|
|
userId: number;
|
|
customRoleId: string | null;
|
|
} | null>;
|
|
|
|
getTeamById(teamId: number): Promise<{
|
|
id: number;
|
|
parentId: number | null;
|
|
} | null>;
|
|
|
|
checkRolePermission(roleId: string, permission: PermissionString): Promise<boolean>;
|
|
checkRolePermissions(roleId: string, permissions: PermissionString[]): Promise<boolean>;
|
|
|
|
/**
|
|
* Gets all permissions for a specific resource in a team context
|
|
*/
|
|
getResourcePermissions(
|
|
userId: number,
|
|
teamId: number,
|
|
resource: Resource
|
|
): Promise<(CrudAction | CustomAction)[]>;
|
|
|
|
/**
|
|
* Gets all permissions for a specific resource by role ID
|
|
*/
|
|
getResourcePermissionsByRoleId(roleId: string, resource: Resource): Promise<(CrudAction | CustomAction)[]>;
|
|
|
|
/**
|
|
* Gets all team IDs where the user has a specific permission
|
|
*/
|
|
getTeamIdsWithPermission(params: {
|
|
userId: number;
|
|
permission: PermissionString;
|
|
fallbackRoles: MembershipRole[];
|
|
}): Promise<number[]>;
|
|
|
|
/**
|
|
* Gets all team IDs where the user has all of the specified permissions
|
|
*/
|
|
getTeamIdsWithPermissions(params: {
|
|
userId: number;
|
|
permissions: PermissionString[];
|
|
fallbackRoles: MembershipRole[];
|
|
}): Promise<number[]>;
|
|
}
|