Files
clinicpro/assets/admin/hooks/usePermissions.ts
T
hamed e4ddd38f0c feat: add per-doctor permissions management in clinics
- Implement DoctorPermissionsModal for managing doctor permissions in clinics.
- Create usePermissions hook to handle user permissions context.
- Add migration for clinic_doctor_permissions table with default permissions.
- Develop ClinicDoctorPermissionController for handling permissions API.
- Create ClinicDoctorPermission entity to manage permissions data.
- Implement ClinicDoctorPermissionRepository for database interactions.
- Add ClinicDoctorPermissionChecker for permission validation logic.
- Write tests for clinic doctor permissions functionality.
2026-07-18 09:44:13 +03:30

30 lines
1.1 KiB
TypeScript

import { useCallback } from 'react';
import { useAuthStore } from '../stores/authStore';
/**
* دسترسی کاربر در context فعال.
*
* نبودِ فیلد permissions یعنی «محیط شخصی، محدودیتی نیست» — نه «هیچ دسترسی».
* فقط پزشکِ عضو کلینیک و منشی، context دارای مجوز می‌گیرند.
*/
export function usePermissions() {
const context = useAuthStore((s) => s.context);
const primaryRole = useAuthStore((s) => s.primaryRole);
const can = useCallback(
(resource: string, action: string): boolean => {
if (primaryRole === 'admin') return true;
// مجوز per-context حساب می‌شود نه per-role: کاربری که مالک یک کلینیک است
// ممکن است در کلینیک دیگری فقط عضو باشد.
const perms = context?.permissions as { resources?: Record<string, Record<string, boolean>> } | undefined | null;
if (!perms?.resources) return true;
return Boolean(perms.resources[resource]?.[action]);
},
[context, primaryRole],
);
return { can };
}