This commit is contained in:
phaichayon
2026-06-22 10:22:45 +07:00
parent 51d67ef7c2
commit b154a8de33
37 changed files with 5952 additions and 332 deletions

View File

@@ -45,7 +45,12 @@ export default async function LeadDetailRoute({ params }: PageProps) {
organizationId: session.user.activeOrganizationId,
userId: session.user.id,
membershipRole: session.user.activeMembershipRole ?? 'user',
businessRole: session.user.activeBusinessRole ?? 'sales_support'
businessRole: session.user.activeBusinessRole ?? 'sales_support',
branchScopeIds: session.user.activeBranchScopeIds ?? [],
productTypeScopeIds: session.user.activeProductTypeScopeIds ?? [],
ownershipScope: session.user.activeOwnershipScope ?? 'organization',
branchScopeMode: 'all',
productScopeMode: 'all'
})
: null;

View File

@@ -16,7 +16,7 @@ export default async function MasterOptionsRoute(props: PageProps) {
session?.user?.systemRole === 'super_admin' ||
(!!session?.user?.activeOrganizationId &&
(session.user.activeMembershipRole === 'admin' ||
session.user.activePermissions.includes(PERMISSIONS.organizationManage)));
session.user.activePermissions.includes(PERMISSIONS.crmMasterOptionRead)));
searchParamsCache.parse(searchParams);

View File

@@ -0,0 +1,39 @@
import { auth } from '@/auth';
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
import PageContainer from '@/components/layout/page-container';
import { RoleManagementPage } from '@/features/foundation/role-management/components/role-management-page';
import { crmRoleProfilesQueryOptions } from '@/features/foundation/role-management/api/queries';
import { PERMISSIONS } from '@/lib/auth/rbac';
import { getQueryClient } from '@/lib/query-client';
export default async function CrmRolesRoute() {
const session = await auth();
const canRead =
session?.user?.systemRole === 'super_admin' ||
(!!session?.user?.activeOrganizationId &&
session.user.activePermissions.includes(PERMISSIONS.crmRoleRead));
const queryClient = getQueryClient();
if (canRead) {
void queryClient.prefetchQuery(crmRoleProfilesQueryOptions());
}
return (
<PageContainer
pageTitle='Roles & Permissions'
pageDescription='Configure CRM role profiles, permission matrices, ownership visibility, and approval authority.'
access={canRead}
accessFallback={
<div className='text-muted-foreground rounded-lg border border-dashed p-8 text-center'>
You do not have access to CRM role management.
</div>
}
>
{canRead ? (
<HydrationBoundary state={dehydrate(queryClient)}>
<RoleManagementPage />
</HydrationBoundary>
) : null}
</PageContainer>
);
}