feature: phase1 - org-type navigation, Cases permissions, staff filtering, and route guards.

This commit is contained in:
2026-06-28 14:59:06 +03:30
parent 64c7e5a257
commit dc965b2528
22 changed files with 376 additions and 76 deletions

View File

@@ -11,6 +11,10 @@ import { Prisma } from '@prisma/client';
import { PrismaService } from '../../../prisma/prisma.service';
import { AcceptStaffInviteDto } from './dto/accept-staff-invite.dto';
import { isUnlimitedSeats, normalizeTabPermissions } from '../../common/permissions';
import {
filterPermissionsForOrgType,
getOrganizationTypeName,
} from '../../common/organization-type';
import { InviteStaffDto } from './dto/invite-staff.dto';
import { UpdateStaffMemberDto } from './dto/update-staff-member.dto';
@@ -96,7 +100,8 @@ export class StaffService {
}
const email = dto.email.trim().toLowerCase();
const normalizedPerms = normalizeTabPermissions(dto.permissionNames);
const orgType = await getOrganizationTypeName(this.prisma, organizationId);
const normalizedPerms = filterPermissionsForOrgType(dto.permissionNames, orgType);
const permissionRows = await this.prisma.permission.findMany({
where: { name: { in: normalizedPerms } },
@@ -371,7 +376,8 @@ export class StaffService {
}
if (dto.permissionNames !== undefined) {
const normalizedPerms = normalizeTabPermissions(dto.permissionNames);
const orgType = await getOrganizationTypeName(this.prisma, organizationId);
const normalizedPerms = filterPermissionsForOrgType(dto.permissionNames, orgType);
const permissionRows = await this.prisma.permission.findMany({
where: { name: { in: normalizedPerms } },
select: { id: true, name: true },