admin
7f467600e9
feat(auth): enforce strict branch scoping for branch-assigned HR and staff accounts
- Introduce authBranchId() helper to resolve assigned branch while allowing company admin/superadmin cross-branch oversight
- Restrict branch, department, and employee listings and mutations to assigned branch for branch-scoped accounts
- Scope attendance records, biometric logs, leave applications/balances, payslips, shifts, and announcements by assigned branch
- Add comprehensive automated feature tests in BranchScopedAccessTest to prevent branch cross-visibility regression
2026-09-10 11:14:24 +08:00
..
2026-05-30 11:13:45 +08:00
2026-04-30 13:20:44 +08:00
2026-04-13 08:16:56 +08:00
2026-05-19 11:24:41 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-04-23 13:51:54 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-09-10 11:14:24 +08:00
2026-05-04 14:37:36 +08:00
2026-04-13 08:16:56 +08:00
2026-07-16 10:31:07 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-16 10:31:07 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-23 10:40:14 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-05-12 11:29:50 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-09-10 11:14:24 +08:00
2026-04-22 11:26:22 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 09:24:02 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-05-05 10:47:35 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-06 13:16:00 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-01 09:22:17 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-01 09:48:52 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-28 09:50:44 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-07-22 10:49:03 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-09-10 11:14:24 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00
2026-04-13 08:16:56 +08:00