@brite-future-schools-contracts/contracts 2.0.28 → 2.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-LIPNVYGK.js +374 -0
- package/dist/chunk-LIPNVYGK.js.map +1 -0
- package/dist/chunk-W3NAS6DL.js +1 -0
- package/dist/{chunk-CL7UHAQE.js → chunk-WGPI4GGP.js} +362 -10
- package/dist/chunk-WGPI4GGP.js.map +1 -0
- package/dist/contracts/index.cjs +494 -0
- package/dist/contracts/index.cjs.map +1 -1
- package/dist/contracts/index.d.cts +2084 -1
- package/dist/contracts/index.d.ts +2084 -1
- package/dist/contracts/index.js +84 -2
- package/dist/index.cjs +613 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +171 -3
- package/dist/index.js.map +1 -1
- package/dist/schemas/index.cjs +404 -9
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +545 -1
- package/dist/schemas/index.d.ts +545 -1
- package/dist/schemas/index.js +88 -2
- package/package.json +1 -1
- package/dist/chunk-CL7UHAQE.js.map +0 -1
- package/dist/chunk-NCAGCDZV.js +0 -1
- package/dist/chunk-YKK4SQI7.js +0 -204
- package/dist/chunk-YKK4SQI7.js.map +0 -1
- /package/dist/{chunk-NCAGCDZV.js.map → chunk-W3NAS6DL.js.map} +0 -0
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { AcademicTerm, AcademicTermSchema, AcademicYear, AcademicYearSchema, AttendanceRecordInputSchema, AttendanceStatusEnum, AttendanceStatusSchema, BranchRefSchema, BulkUploadStudentRow, BulkUploadStudentRowSchema, BulkUploadStudentsInput, BulkUploadStudentsInputSchema, BulkUploadStudentsOutput, BulkUploadStudentsOutputSchema, ChangePasswordInput, ChangePasswordInputSchema, ClassAttendanceRow, ClassAttendanceRowSchema, ClassSummary, ClassSummarySchema, CreateDepartmentInput, CreateDepartmentInputSchema, CreateGradeInput, CreateGradeInputSchema, CreateStaffInput, CreateStaffInputSchema, CreateStaffOutput, CreateStaffOutputSchema, CreateStudentInput, CreateStudentInputSchema, CreateStudentOutput, CreateStudentOutputSchema, CreateTermInput, CreateTermInputSchema, CreateYearInput, CreateYearInputSchema, CuidSchema, Department, DepartmentSchema, EmploymentTypeSchema, GRADE_LEVELS, GenderSchema, GetByClassInput, GetByClassInputSchema, GetByStudentInput, GetByStudentInputSchema, Grade, GradeLevel, GradeLevelSchema, GradeSchema, LinkGuardianInput, LinkGuardianInputSchema, ListStaffInput, ListStaffInputSchema, ListStudentsInput, ListStudentsInputSchema, ListTermsInputSchema, LoginInput, LoginInputSchema, LoginOutput, LoginOutputSchema, LogoutInputSchema, MarkAttendanceInput, MarkAttendanceInputSchema, MarkAttendanceOutput, MarkAttendanceOutputSchema, PaginationInput, PaginationInputSchema, RefreshTokenInput, RefreshTokenInputSchema, RefreshTokenOutput, RefreshTokenOutputSchema, RequestPasswordResetInputSchema, ResetPasswordInputSchema, SessionUserOutput, SessionUserOutputSchema, SessionUserRoleSchema, SessionUserSubRoleSchema, SetCurrentTermInputSchema, SetCurrentYearInputSchema, SoftDelete, SoftDeleteSchema, StaffListItem, StaffListItemSchema, StaffProfile, StaffProfileSchema, StudentAttendanceRow, StudentAttendanceRowSchema, StudentListItem, StudentListItemSchema, StudentProfile, StudentProfileSchema, StudentStatusSchema, SwitchBranchInput, SwitchBranchInputSchema, Term, TermSchema, Timestamps, TimestampsSchema, UuidSchema, paginatedOutputSchema } from './schemas/index.cjs';
|
|
2
|
-
export { attendanceContract, authContract, bulkUploadStudentsContract, calendarContract, calendarListTermsContract, changePasswordContract, createDepartmentContract, createGradeContract, createStaffContract, createStudentContract, createTermContract, createYearContract, getByClassContract, getByStudentContract, getMeContract, getStaffByIdContract, getStudentByIdContract, gradesContract, hrContract, linkGuardianContract, listClassesContract, listDepartmentsContract, listGradesContract, listStaffContract, listStudentsContract, listTermsContract, listYearsContract, loginContract, logoutContract, markAttendanceContract, refreshTokenContract, requestPasswordResetContract, resetPasswordContract, setCurrentTermContract, setCurrentYearContract, studentsContract, switchBranchContract, updateStaffStatusContract } from './contracts/index.cjs';
|
|
1
|
+
export { AcademicTerm, AcademicTermSchema, AcademicYear, AcademicYearSchema, AcknowledgeDeliveryInputSchema, AcknowledgeDiaryEntryInputSchema, AttendanceRecordInputSchema, AttendanceStatusEnum, AttendanceStatusSchema, BankAccountTypeSchema, BlockResolutionMethodSchema, BranchBankAccountSchema, BranchRefSchema, BulkUploadStudentRow, BulkUploadStudentRowSchema, BulkUploadStudentsInput, BulkUploadStudentsInputSchema, BulkUploadStudentsOutput, BulkUploadStudentsOutputSchema, ChangePasswordInput, ChangePasswordInputSchema, ClassAttendanceRow, ClassAttendanceRowSchema, ClassSummary, ClassSummarySchema, CreateBankAccountInput, CreateBankAccountInputSchema, CreateDepartmentInput, CreateDepartmentInputSchema, CreateDiaryCategoryInputSchema, CreateDiaryEntryInputSchema, CreateGradeInput, CreateGradeInputSchema, CreateNotificationInput, CreateNotificationInputSchema, CreateStaffInput, CreateStaffInputSchema, CreateStaffOutput, CreateStaffOutputSchema, CreateStudentInput, CreateStudentInputSchema, CreateStudentOutput, CreateStudentOutputSchema, CreateTermInput, CreateTermInputSchema, CreateYearInput, CreateYearInputSchema, CuidSchema, Department, DepartmentSchema, DiaryAcknowledgementSchema, DiaryBlockIdInputSchema, DiaryBlockSchema, DiaryCategorySchema, DiaryEntryDetailSchema, DiaryEntryForGuardianSchema, DiaryEntrySchema, DiaryEntryStatusSchema, DiarySeveritySchema, EmploymentTypeSchema, GRADE_LEVELS, GenderSchema, GetByClassInput, GetByClassInputSchema, GetByStudentInput, GetByStudentInputSchema, Grade, GradeLevel, GradeLevelSchema, GradeSchema, KenyanBankSchema, LinkGuardianInput, LinkGuardianInputSchema, ListBankAccountsInputSchema, ListDeliveriesInputSchema, ListDiaryAcknowledgementsInputSchema, ListDiaryEntriesInputSchema, ListNotificationTemplatesInputSchema, ListStaffInput, ListStaffInputSchema, ListStudentsInput, ListStudentsInputSchema, ListTermsInputSchema, LoginInput, LoginInputSchema, LoginOutput, LoginOutputSchema, LogoutInputSchema, MarkAttendanceInput, MarkAttendanceInputSchema, MarkAttendanceOutput, MarkAttendanceOutputSchema, MyAcknowledgementSchema, NotificationAudienceItemSchema, NotificationAudienceTypeSchema, NotificationChannelSchema, NotificationDeliverySchema, NotificationResponseItemSchema, NotificationTemplateSchema, NotificationTemplateStatusSchema, NotificationUrgencySchema, PaginationInput, PaginationInputSchema, PortalBlockSchema, PortalBlockTypeSchema, RefreshTokenInput, RefreshTokenInputSchema, RefreshTokenOutput, RefreshTokenOutputSchema, RejectNotificationInputSchema, RequestPasswordResetInputSchema, ResetPasswordInputSchema, RespondToBlockInputSchema, RespondToBlockOutputSchema, RespondToDeliveryInputSchema, RespondToDiaryEntryInputSchema, ResponseSummarySchema, SessionUserOutput, SessionUserOutputSchema, SessionUserRoleSchema, SessionUserSubRoleSchema, SetCurrentTermInputSchema, SetCurrentYearInputSchema, SoftDelete, SoftDeleteSchema, StaffListItem, StaffListItemSchema, StaffProfile, StaffProfileSchema, StudentAttendanceRow, StudentAttendanceRowSchema, StudentListItem, StudentListItemSchema, StudentProfile, StudentProfileSchema, StudentStatusSchema, SwitchBranchInput, SwitchBranchInputSchema, Term, TermSchema, Timestamps, TimestampsSchema, UpdateBankAccountInput, UpdateBankAccountInputSchema, UpdateDiaryCategoryInputSchema, UuidSchema, paginatedOutputSchema } from './schemas/index.cjs';
|
|
2
|
+
export { acknowledgeContract, acknowledgeDiaryEntryContract, approveContract, approveLiftContract, attendanceContract, authContract, bankingContract, blocksContract, bulkUploadStudentsContract, calendarContract, calendarListTermsContract, cancelContract, changePasswordContract, createBankAccountContract, createCategoryContract, createDepartmentContract, createEntryContract, createGradeContract, createNotificationContract, createStaffContract, createStudentContract, createTermContract, createYearContract, deactivateContract, diaryContract, getByClassContract, getByIdContract, getByStudentContract, getEntryContract, getMeContract, getResponseSummaryContract, getStaffByIdContract, getStudentByIdContract, getTemplateContract, gradesContract, hrContract, linkGuardianContract, listAccountsContract, listAcknowledgementsContract, listActiveBlocksContract, listBanksContract, listCategoriesContract, listClassesContract, listDeliveriesContract, listDepartmentsContract, listEntriesContract, listForGuardianContract, listGradesContract, listResponsesContract, listStaffContract, listStudentsContract, listTemplatesContract, listTermsContract, listYearsContract, loginContract, logoutContract, markAttendanceContract, markReadContract, markUnreadContract, notificationsContract, refreshTokenContract, rejectContract, requestLiftContract, requestPasswordResetContract, resetPasswordContract, resolveBlockAltContract, resolveBlockContract, respondContract, respondToBlockContract, respondToDiaryEntryContract, setCurrentTermContract, setCurrentYearContract, setDefaultContract, studentsContract, submitContract, switchBranchContract, updateBankAccountContract, updateCategoryContract, updateStaffStatusContract } from './contracts/index.cjs';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import '@orpc/contract';
|
|
5
5
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { AcademicTerm, AcademicTermSchema, AcademicYear, AcademicYearSchema, AttendanceRecordInputSchema, AttendanceStatusEnum, AttendanceStatusSchema, BranchRefSchema, BulkUploadStudentRow, BulkUploadStudentRowSchema, BulkUploadStudentsInput, BulkUploadStudentsInputSchema, BulkUploadStudentsOutput, BulkUploadStudentsOutputSchema, ChangePasswordInput, ChangePasswordInputSchema, ClassAttendanceRow, ClassAttendanceRowSchema, ClassSummary, ClassSummarySchema, CreateDepartmentInput, CreateDepartmentInputSchema, CreateGradeInput, CreateGradeInputSchema, CreateStaffInput, CreateStaffInputSchema, CreateStaffOutput, CreateStaffOutputSchema, CreateStudentInput, CreateStudentInputSchema, CreateStudentOutput, CreateStudentOutputSchema, CreateTermInput, CreateTermInputSchema, CreateYearInput, CreateYearInputSchema, CuidSchema, Department, DepartmentSchema, EmploymentTypeSchema, GRADE_LEVELS, GenderSchema, GetByClassInput, GetByClassInputSchema, GetByStudentInput, GetByStudentInputSchema, Grade, GradeLevel, GradeLevelSchema, GradeSchema, LinkGuardianInput, LinkGuardianInputSchema, ListStaffInput, ListStaffInputSchema, ListStudentsInput, ListStudentsInputSchema, ListTermsInputSchema, LoginInput, LoginInputSchema, LoginOutput, LoginOutputSchema, LogoutInputSchema, MarkAttendanceInput, MarkAttendanceInputSchema, MarkAttendanceOutput, MarkAttendanceOutputSchema, PaginationInput, PaginationInputSchema, RefreshTokenInput, RefreshTokenInputSchema, RefreshTokenOutput, RefreshTokenOutputSchema, RequestPasswordResetInputSchema, ResetPasswordInputSchema, SessionUserOutput, SessionUserOutputSchema, SessionUserRoleSchema, SessionUserSubRoleSchema, SetCurrentTermInputSchema, SetCurrentYearInputSchema, SoftDelete, SoftDeleteSchema, StaffListItem, StaffListItemSchema, StaffProfile, StaffProfileSchema, StudentAttendanceRow, StudentAttendanceRowSchema, StudentListItem, StudentListItemSchema, StudentProfile, StudentProfileSchema, StudentStatusSchema, SwitchBranchInput, SwitchBranchInputSchema, Term, TermSchema, Timestamps, TimestampsSchema, UuidSchema, paginatedOutputSchema } from './schemas/index.js';
|
|
2
|
-
export { attendanceContract, authContract, bulkUploadStudentsContract, calendarContract, calendarListTermsContract, changePasswordContract, createDepartmentContract, createGradeContract, createStaffContract, createStudentContract, createTermContract, createYearContract, getByClassContract, getByStudentContract, getMeContract, getStaffByIdContract, getStudentByIdContract, gradesContract, hrContract, linkGuardianContract, listClassesContract, listDepartmentsContract, listGradesContract, listStaffContract, listStudentsContract, listTermsContract, listYearsContract, loginContract, logoutContract, markAttendanceContract, refreshTokenContract, requestPasswordResetContract, resetPasswordContract, setCurrentTermContract, setCurrentYearContract, studentsContract, switchBranchContract, updateStaffStatusContract } from './contracts/index.js';
|
|
1
|
+
export { AcademicTerm, AcademicTermSchema, AcademicYear, AcademicYearSchema, AcknowledgeDeliveryInputSchema, AcknowledgeDiaryEntryInputSchema, AttendanceRecordInputSchema, AttendanceStatusEnum, AttendanceStatusSchema, BankAccountTypeSchema, BlockResolutionMethodSchema, BranchBankAccountSchema, BranchRefSchema, BulkUploadStudentRow, BulkUploadStudentRowSchema, BulkUploadStudentsInput, BulkUploadStudentsInputSchema, BulkUploadStudentsOutput, BulkUploadStudentsOutputSchema, ChangePasswordInput, ChangePasswordInputSchema, ClassAttendanceRow, ClassAttendanceRowSchema, ClassSummary, ClassSummarySchema, CreateBankAccountInput, CreateBankAccountInputSchema, CreateDepartmentInput, CreateDepartmentInputSchema, CreateDiaryCategoryInputSchema, CreateDiaryEntryInputSchema, CreateGradeInput, CreateGradeInputSchema, CreateNotificationInput, CreateNotificationInputSchema, CreateStaffInput, CreateStaffInputSchema, CreateStaffOutput, CreateStaffOutputSchema, CreateStudentInput, CreateStudentInputSchema, CreateStudentOutput, CreateStudentOutputSchema, CreateTermInput, CreateTermInputSchema, CreateYearInput, CreateYearInputSchema, CuidSchema, Department, DepartmentSchema, DiaryAcknowledgementSchema, DiaryBlockIdInputSchema, DiaryBlockSchema, DiaryCategorySchema, DiaryEntryDetailSchema, DiaryEntryForGuardianSchema, DiaryEntrySchema, DiaryEntryStatusSchema, DiarySeveritySchema, EmploymentTypeSchema, GRADE_LEVELS, GenderSchema, GetByClassInput, GetByClassInputSchema, GetByStudentInput, GetByStudentInputSchema, Grade, GradeLevel, GradeLevelSchema, GradeSchema, KenyanBankSchema, LinkGuardianInput, LinkGuardianInputSchema, ListBankAccountsInputSchema, ListDeliveriesInputSchema, ListDiaryAcknowledgementsInputSchema, ListDiaryEntriesInputSchema, ListNotificationTemplatesInputSchema, ListStaffInput, ListStaffInputSchema, ListStudentsInput, ListStudentsInputSchema, ListTermsInputSchema, LoginInput, LoginInputSchema, LoginOutput, LoginOutputSchema, LogoutInputSchema, MarkAttendanceInput, MarkAttendanceInputSchema, MarkAttendanceOutput, MarkAttendanceOutputSchema, MyAcknowledgementSchema, NotificationAudienceItemSchema, NotificationAudienceTypeSchema, NotificationChannelSchema, NotificationDeliverySchema, NotificationResponseItemSchema, NotificationTemplateSchema, NotificationTemplateStatusSchema, NotificationUrgencySchema, PaginationInput, PaginationInputSchema, PortalBlockSchema, PortalBlockTypeSchema, RefreshTokenInput, RefreshTokenInputSchema, RefreshTokenOutput, RefreshTokenOutputSchema, RejectNotificationInputSchema, RequestPasswordResetInputSchema, ResetPasswordInputSchema, RespondToBlockInputSchema, RespondToBlockOutputSchema, RespondToDeliveryInputSchema, RespondToDiaryEntryInputSchema, ResponseSummarySchema, SessionUserOutput, SessionUserOutputSchema, SessionUserRoleSchema, SessionUserSubRoleSchema, SetCurrentTermInputSchema, SetCurrentYearInputSchema, SoftDelete, SoftDeleteSchema, StaffListItem, StaffListItemSchema, StaffProfile, StaffProfileSchema, StudentAttendanceRow, StudentAttendanceRowSchema, StudentListItem, StudentListItemSchema, StudentProfile, StudentProfileSchema, StudentStatusSchema, SwitchBranchInput, SwitchBranchInputSchema, Term, TermSchema, Timestamps, TimestampsSchema, UpdateBankAccountInput, UpdateBankAccountInputSchema, UpdateDiaryCategoryInputSchema, UuidSchema, paginatedOutputSchema } from './schemas/index.js';
|
|
2
|
+
export { acknowledgeContract, acknowledgeDiaryEntryContract, approveContract, approveLiftContract, attendanceContract, authContract, bankingContract, blocksContract, bulkUploadStudentsContract, calendarContract, calendarListTermsContract, cancelContract, changePasswordContract, createBankAccountContract, createCategoryContract, createDepartmentContract, createEntryContract, createGradeContract, createNotificationContract, createStaffContract, createStudentContract, createTermContract, createYearContract, deactivateContract, diaryContract, getByClassContract, getByIdContract, getByStudentContract, getEntryContract, getMeContract, getResponseSummaryContract, getStaffByIdContract, getStudentByIdContract, getTemplateContract, gradesContract, hrContract, linkGuardianContract, listAccountsContract, listAcknowledgementsContract, listActiveBlocksContract, listBanksContract, listCategoriesContract, listClassesContract, listDeliveriesContract, listDepartmentsContract, listEntriesContract, listForGuardianContract, listGradesContract, listResponsesContract, listStaffContract, listStudentsContract, listTemplatesContract, listTermsContract, listYearsContract, loginContract, logoutContract, markAttendanceContract, markReadContract, markUnreadContract, notificationsContract, refreshTokenContract, rejectContract, requestLiftContract, requestPasswordResetContract, resetPasswordContract, resolveBlockAltContract, resolveBlockContract, respondContract, respondToBlockContract, respondToDiaryEntryContract, setCurrentTermContract, setCurrentYearContract, setDefaultContract, studentsContract, submitContract, switchBranchContract, updateBankAccountContract, updateCategoryContract, updateStaffStatusContract } from './contracts/index.js';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import '@orpc/contract';
|
|
5
5
|
|
package/dist/index.js
CHANGED
|
@@ -1,49 +1,95 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-W3NAS6DL.js";
|
|
2
2
|
import {
|
|
3
|
+
acknowledgeContract,
|
|
4
|
+
acknowledgeDiaryEntryContract,
|
|
5
|
+
approveContract,
|
|
6
|
+
approveLiftContract,
|
|
3
7
|
attendanceContract,
|
|
4
8
|
authContract,
|
|
9
|
+
bankingContract,
|
|
10
|
+
blocksContract,
|
|
5
11
|
bulkUploadStudentsContract,
|
|
6
12
|
calendarContract,
|
|
7
13
|
calendarListTermsContract,
|
|
14
|
+
cancelContract,
|
|
8
15
|
changePasswordContract,
|
|
16
|
+
createBankAccountContract,
|
|
17
|
+
createCategoryContract,
|
|
9
18
|
createDepartmentContract,
|
|
19
|
+
createEntryContract,
|
|
10
20
|
createGradeContract,
|
|
21
|
+
createNotificationContract,
|
|
11
22
|
createStaffContract,
|
|
12
23
|
createStudentContract,
|
|
13
24
|
createTermContract,
|
|
14
25
|
createYearContract,
|
|
26
|
+
deactivateContract,
|
|
27
|
+
diaryContract,
|
|
15
28
|
getByClassContract,
|
|
29
|
+
getByIdContract,
|
|
16
30
|
getByStudentContract,
|
|
31
|
+
getEntryContract,
|
|
17
32
|
getMeContract,
|
|
33
|
+
getResponseSummaryContract,
|
|
18
34
|
getStaffByIdContract,
|
|
19
35
|
getStudentByIdContract,
|
|
36
|
+
getTemplateContract,
|
|
20
37
|
gradesContract,
|
|
21
38
|
hrContract,
|
|
22
39
|
linkGuardianContract,
|
|
40
|
+
listAccountsContract,
|
|
41
|
+
listAcknowledgementsContract,
|
|
42
|
+
listActiveBlocksContract,
|
|
43
|
+
listBanksContract,
|
|
44
|
+
listCategoriesContract,
|
|
23
45
|
listClassesContract,
|
|
46
|
+
listDeliveriesContract,
|
|
24
47
|
listDepartmentsContract,
|
|
48
|
+
listEntriesContract,
|
|
49
|
+
listForGuardianContract,
|
|
25
50
|
listGradesContract,
|
|
51
|
+
listResponsesContract,
|
|
26
52
|
listStaffContract,
|
|
27
53
|
listStudentsContract,
|
|
54
|
+
listTemplatesContract,
|
|
28
55
|
listTermsContract,
|
|
29
56
|
listYearsContract,
|
|
30
57
|
loginContract,
|
|
31
58
|
logoutContract,
|
|
32
59
|
markAttendanceContract,
|
|
60
|
+
markReadContract,
|
|
61
|
+
markUnreadContract,
|
|
62
|
+
notificationsContract,
|
|
33
63
|
refreshTokenContract,
|
|
64
|
+
rejectContract,
|
|
65
|
+
requestLiftContract,
|
|
34
66
|
requestPasswordResetContract,
|
|
35
67
|
resetPasswordContract,
|
|
68
|
+
resolveBlockAltContract,
|
|
69
|
+
resolveBlockContract,
|
|
70
|
+
respondContract,
|
|
71
|
+
respondToBlockContract,
|
|
72
|
+
respondToDiaryEntryContract,
|
|
36
73
|
setCurrentTermContract,
|
|
37
74
|
setCurrentYearContract,
|
|
75
|
+
setDefaultContract,
|
|
38
76
|
studentsContract,
|
|
77
|
+
submitContract,
|
|
39
78
|
switchBranchContract,
|
|
79
|
+
updateBankAccountContract,
|
|
80
|
+
updateCategoryContract,
|
|
40
81
|
updateStaffStatusContract
|
|
41
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-LIPNVYGK.js";
|
|
42
83
|
import {
|
|
43
84
|
AcademicTermSchema,
|
|
44
85
|
AcademicYearSchema,
|
|
86
|
+
AcknowledgeDeliveryInputSchema,
|
|
87
|
+
AcknowledgeDiaryEntryInputSchema,
|
|
45
88
|
AttendanceRecordInputSchema,
|
|
46
89
|
AttendanceStatusSchema,
|
|
90
|
+
BankAccountTypeSchema,
|
|
91
|
+
BlockResolutionMethodSchema,
|
|
92
|
+
BranchBankAccountSchema,
|
|
47
93
|
BranchRefSchema,
|
|
48
94
|
BulkUploadStudentRowSchema,
|
|
49
95
|
BulkUploadStudentsInputSchema,
|
|
@@ -51,8 +97,12 @@ import {
|
|
|
51
97
|
ChangePasswordInputSchema,
|
|
52
98
|
ClassAttendanceRowSchema,
|
|
53
99
|
ClassSummarySchema,
|
|
100
|
+
CreateBankAccountInputSchema,
|
|
54
101
|
CreateDepartmentInputSchema,
|
|
102
|
+
CreateDiaryCategoryInputSchema,
|
|
103
|
+
CreateDiaryEntryInputSchema,
|
|
55
104
|
CreateGradeInputSchema,
|
|
105
|
+
CreateNotificationInputSchema,
|
|
56
106
|
CreateStaffInputSchema,
|
|
57
107
|
CreateStaffOutputSchema,
|
|
58
108
|
CreateStudentInputSchema,
|
|
@@ -61,6 +111,15 @@ import {
|
|
|
61
111
|
CreateYearInputSchema,
|
|
62
112
|
CuidSchema,
|
|
63
113
|
DepartmentSchema,
|
|
114
|
+
DiaryAcknowledgementSchema,
|
|
115
|
+
DiaryBlockIdInputSchema,
|
|
116
|
+
DiaryBlockSchema,
|
|
117
|
+
DiaryCategorySchema,
|
|
118
|
+
DiaryEntryDetailSchema,
|
|
119
|
+
DiaryEntryForGuardianSchema,
|
|
120
|
+
DiaryEntrySchema,
|
|
121
|
+
DiaryEntryStatusSchema,
|
|
122
|
+
DiarySeveritySchema,
|
|
64
123
|
EmploymentTypeSchema,
|
|
65
124
|
GRADE_LEVELS,
|
|
66
125
|
GenderSchema,
|
|
@@ -68,7 +127,13 @@ import {
|
|
|
68
127
|
GetByStudentInputSchema,
|
|
69
128
|
GradeLevelSchema,
|
|
70
129
|
GradeSchema,
|
|
130
|
+
KenyanBankSchema,
|
|
71
131
|
LinkGuardianInputSchema,
|
|
132
|
+
ListBankAccountsInputSchema,
|
|
133
|
+
ListDeliveriesInputSchema,
|
|
134
|
+
ListDiaryAcknowledgementsInputSchema,
|
|
135
|
+
ListDiaryEntriesInputSchema,
|
|
136
|
+
ListNotificationTemplatesInputSchema,
|
|
72
137
|
ListStaffInputSchema,
|
|
73
138
|
ListStudentsInputSchema,
|
|
74
139
|
ListTermsInputSchema,
|
|
@@ -77,11 +142,28 @@ import {
|
|
|
77
142
|
LogoutInputSchema,
|
|
78
143
|
MarkAttendanceInputSchema,
|
|
79
144
|
MarkAttendanceOutputSchema,
|
|
145
|
+
MyAcknowledgementSchema,
|
|
146
|
+
NotificationAudienceItemSchema,
|
|
147
|
+
NotificationAudienceTypeSchema,
|
|
148
|
+
NotificationChannelSchema,
|
|
149
|
+
NotificationDeliverySchema,
|
|
150
|
+
NotificationResponseItemSchema,
|
|
151
|
+
NotificationTemplateSchema,
|
|
152
|
+
NotificationTemplateStatusSchema,
|
|
153
|
+
NotificationUrgencySchema,
|
|
80
154
|
PaginationInputSchema,
|
|
155
|
+
PortalBlockSchema,
|
|
156
|
+
PortalBlockTypeSchema,
|
|
81
157
|
RefreshTokenInputSchema,
|
|
82
158
|
RefreshTokenOutputSchema,
|
|
159
|
+
RejectNotificationInputSchema,
|
|
83
160
|
RequestPasswordResetInputSchema,
|
|
84
161
|
ResetPasswordInputSchema,
|
|
162
|
+
RespondToBlockInputSchema,
|
|
163
|
+
RespondToBlockOutputSchema,
|
|
164
|
+
RespondToDeliveryInputSchema,
|
|
165
|
+
RespondToDiaryEntryInputSchema,
|
|
166
|
+
ResponseSummarySchema,
|
|
85
167
|
SessionUserOutputSchema,
|
|
86
168
|
SessionUserRoleSchema,
|
|
87
169
|
SessionUserSubRoleSchema,
|
|
@@ -97,9 +179,11 @@ import {
|
|
|
97
179
|
SwitchBranchInputSchema,
|
|
98
180
|
TermSchema,
|
|
99
181
|
TimestampsSchema,
|
|
182
|
+
UpdateBankAccountInputSchema,
|
|
183
|
+
UpdateDiaryCategoryInputSchema,
|
|
100
184
|
UuidSchema,
|
|
101
185
|
paginatedOutputSchema
|
|
102
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-WGPI4GGP.js";
|
|
103
187
|
|
|
104
188
|
// src/roles/helpers.ts
|
|
105
189
|
function hasRole(user, role) {
|
|
@@ -353,8 +437,13 @@ function isScopedToOwnVehicle(user) {
|
|
|
353
437
|
export {
|
|
354
438
|
AcademicTermSchema,
|
|
355
439
|
AcademicYearSchema,
|
|
440
|
+
AcknowledgeDeliveryInputSchema,
|
|
441
|
+
AcknowledgeDiaryEntryInputSchema,
|
|
356
442
|
AttendanceRecordInputSchema,
|
|
357
443
|
AttendanceStatusSchema,
|
|
444
|
+
BankAccountTypeSchema,
|
|
445
|
+
BlockResolutionMethodSchema,
|
|
446
|
+
BranchBankAccountSchema,
|
|
358
447
|
BranchRefSchema,
|
|
359
448
|
BulkUploadStudentRowSchema,
|
|
360
449
|
BulkUploadStudentsInputSchema,
|
|
@@ -362,8 +451,12 @@ export {
|
|
|
362
451
|
ChangePasswordInputSchema,
|
|
363
452
|
ClassAttendanceRowSchema,
|
|
364
453
|
ClassSummarySchema,
|
|
454
|
+
CreateBankAccountInputSchema,
|
|
365
455
|
CreateDepartmentInputSchema,
|
|
456
|
+
CreateDiaryCategoryInputSchema,
|
|
457
|
+
CreateDiaryEntryInputSchema,
|
|
366
458
|
CreateGradeInputSchema,
|
|
459
|
+
CreateNotificationInputSchema,
|
|
367
460
|
CreateStaffInputSchema,
|
|
368
461
|
CreateStaffOutputSchema,
|
|
369
462
|
CreateStudentInputSchema,
|
|
@@ -372,6 +465,15 @@ export {
|
|
|
372
465
|
CreateYearInputSchema,
|
|
373
466
|
CuidSchema,
|
|
374
467
|
DepartmentSchema,
|
|
468
|
+
DiaryAcknowledgementSchema,
|
|
469
|
+
DiaryBlockIdInputSchema,
|
|
470
|
+
DiaryBlockSchema,
|
|
471
|
+
DiaryCategorySchema,
|
|
472
|
+
DiaryEntryDetailSchema,
|
|
473
|
+
DiaryEntryForGuardianSchema,
|
|
474
|
+
DiaryEntrySchema,
|
|
475
|
+
DiaryEntryStatusSchema,
|
|
476
|
+
DiarySeveritySchema,
|
|
375
477
|
EmploymentTypeSchema,
|
|
376
478
|
GRADE_LEVELS,
|
|
377
479
|
GenderSchema,
|
|
@@ -379,7 +481,13 @@ export {
|
|
|
379
481
|
GetByStudentInputSchema,
|
|
380
482
|
GradeLevelSchema,
|
|
381
483
|
GradeSchema,
|
|
484
|
+
KenyanBankSchema,
|
|
382
485
|
LinkGuardianInputSchema,
|
|
486
|
+
ListBankAccountsInputSchema,
|
|
487
|
+
ListDeliveriesInputSchema,
|
|
488
|
+
ListDiaryAcknowledgementsInputSchema,
|
|
489
|
+
ListDiaryEntriesInputSchema,
|
|
490
|
+
ListNotificationTemplatesInputSchema,
|
|
383
491
|
ListStaffInputSchema,
|
|
384
492
|
ListStudentsInputSchema,
|
|
385
493
|
ListTermsInputSchema,
|
|
@@ -388,11 +496,28 @@ export {
|
|
|
388
496
|
LogoutInputSchema,
|
|
389
497
|
MarkAttendanceInputSchema,
|
|
390
498
|
MarkAttendanceOutputSchema,
|
|
499
|
+
MyAcknowledgementSchema,
|
|
500
|
+
NotificationAudienceItemSchema,
|
|
501
|
+
NotificationAudienceTypeSchema,
|
|
502
|
+
NotificationChannelSchema,
|
|
503
|
+
NotificationDeliverySchema,
|
|
504
|
+
NotificationResponseItemSchema,
|
|
505
|
+
NotificationTemplateSchema,
|
|
506
|
+
NotificationTemplateStatusSchema,
|
|
507
|
+
NotificationUrgencySchema,
|
|
391
508
|
PaginationInputSchema,
|
|
509
|
+
PortalBlockSchema,
|
|
510
|
+
PortalBlockTypeSchema,
|
|
392
511
|
RefreshTokenInputSchema,
|
|
393
512
|
RefreshTokenOutputSchema,
|
|
513
|
+
RejectNotificationInputSchema,
|
|
394
514
|
RequestPasswordResetInputSchema,
|
|
395
515
|
ResetPasswordInputSchema,
|
|
516
|
+
RespondToBlockInputSchema,
|
|
517
|
+
RespondToBlockOutputSchema,
|
|
518
|
+
RespondToDeliveryInputSchema,
|
|
519
|
+
RespondToDiaryEntryInputSchema,
|
|
520
|
+
ResponseSummarySchema,
|
|
396
521
|
SessionUserOutputSchema,
|
|
397
522
|
SessionUserRoleSchema,
|
|
398
523
|
SessionUserSubRoleSchema,
|
|
@@ -408,9 +533,17 @@ export {
|
|
|
408
533
|
SwitchBranchInputSchema,
|
|
409
534
|
TermSchema,
|
|
410
535
|
TimestampsSchema,
|
|
536
|
+
UpdateBankAccountInputSchema,
|
|
537
|
+
UpdateDiaryCategoryInputSchema,
|
|
411
538
|
UuidSchema,
|
|
539
|
+
acknowledgeContract,
|
|
540
|
+
acknowledgeDiaryEntryContract,
|
|
541
|
+
approveContract,
|
|
542
|
+
approveLiftContract,
|
|
412
543
|
attendanceContract,
|
|
413
544
|
authContract,
|
|
545
|
+
bankingContract,
|
|
546
|
+
blocksContract,
|
|
414
547
|
bulkUploadStudentsContract,
|
|
415
548
|
calendarContract,
|
|
416
549
|
calendarListTermsContract,
|
|
@@ -451,18 +584,29 @@ export {
|
|
|
451
584
|
canViewStaffList,
|
|
452
585
|
canViewStudentList,
|
|
453
586
|
canViewTransport,
|
|
587
|
+
cancelContract,
|
|
454
588
|
changePasswordContract,
|
|
589
|
+
createBankAccountContract,
|
|
590
|
+
createCategoryContract,
|
|
455
591
|
createDepartmentContract,
|
|
592
|
+
createEntryContract,
|
|
456
593
|
createGradeContract,
|
|
594
|
+
createNotificationContract,
|
|
457
595
|
createStaffContract,
|
|
458
596
|
createStudentContract,
|
|
459
597
|
createTermContract,
|
|
460
598
|
createYearContract,
|
|
599
|
+
deactivateContract,
|
|
600
|
+
diaryContract,
|
|
461
601
|
getByClassContract,
|
|
602
|
+
getByIdContract,
|
|
462
603
|
getByStudentContract,
|
|
604
|
+
getEntryContract,
|
|
463
605
|
getMeContract,
|
|
606
|
+
getResponseSummaryContract,
|
|
464
607
|
getStaffByIdContract,
|
|
465
608
|
getStudentByIdContract,
|
|
609
|
+
getTemplateContract,
|
|
466
610
|
gradesContract,
|
|
467
611
|
hrContract,
|
|
468
612
|
isBoardingMaster,
|
|
@@ -496,24 +640,48 @@ export {
|
|
|
496
640
|
isSubjectTeacher,
|
|
497
641
|
isSystemAdmin,
|
|
498
642
|
linkGuardianContract,
|
|
643
|
+
listAccountsContract,
|
|
644
|
+
listAcknowledgementsContract,
|
|
645
|
+
listActiveBlocksContract,
|
|
646
|
+
listBanksContract,
|
|
647
|
+
listCategoriesContract,
|
|
499
648
|
listClassesContract,
|
|
649
|
+
listDeliveriesContract,
|
|
500
650
|
listDepartmentsContract,
|
|
651
|
+
listEntriesContract,
|
|
652
|
+
listForGuardianContract,
|
|
501
653
|
listGradesContract,
|
|
654
|
+
listResponsesContract,
|
|
502
655
|
listStaffContract,
|
|
503
656
|
listStudentsContract,
|
|
657
|
+
listTemplatesContract,
|
|
504
658
|
listTermsContract,
|
|
505
659
|
listYearsContract,
|
|
506
660
|
loginContract,
|
|
507
661
|
logoutContract,
|
|
508
662
|
markAttendanceContract,
|
|
663
|
+
markReadContract,
|
|
664
|
+
markUnreadContract,
|
|
665
|
+
notificationsContract,
|
|
509
666
|
paginatedOutputSchema,
|
|
510
667
|
refreshTokenContract,
|
|
668
|
+
rejectContract,
|
|
669
|
+
requestLiftContract,
|
|
511
670
|
requestPasswordResetContract,
|
|
512
671
|
resetPasswordContract,
|
|
672
|
+
resolveBlockAltContract,
|
|
673
|
+
resolveBlockContract,
|
|
674
|
+
respondContract,
|
|
675
|
+
respondToBlockContract,
|
|
676
|
+
respondToDiaryEntryContract,
|
|
513
677
|
setCurrentTermContract,
|
|
514
678
|
setCurrentYearContract,
|
|
679
|
+
setDefaultContract,
|
|
515
680
|
studentsContract,
|
|
681
|
+
submitContract,
|
|
516
682
|
switchBranchContract,
|
|
683
|
+
updateBankAccountContract,
|
|
684
|
+
updateCategoryContract,
|
|
517
685
|
updateStaffStatusContract
|
|
518
686
|
};
|
|
519
687
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/roles/helpers.ts","../src/permissions/index.ts"],"sourcesContent":["/**\n * Brite Future Schools — bfs-contracts\n * Role helper functions.\n *\n * Every helper takes a SessionUser and returns a boolean.\n * Use these instead of hardcoded role string comparisons everywhere.\n *\n * Usage:\n * import { isProprietor, isHeadTeacher } from '@brite-future-schools-contracts/contracts'\n * if (isProprietor(user)) { ... }\n *\n * Phase History:\n * Phase 0.1 (2026-06-05): Initial creation\n * Phase 0.2 (2026-06-06): Roles reconciled against schema — added\n * SCHOOL_NURSE, LAB_TECHNICIAN, SPORTS_COACH,\n * CARETAKER, SECURITY, KITCHEN_STAFF, IT_ADMIN,\n * ORG_SPONSOR, INDIVIDUAL_SPONSOR, KITCHEN_MANAGER,\n * BOARDING_MASTER, PREFECT\n * Phase 6 (2026-07-10): hasRole and hasSubRole unified — helpers that can\n * appear as either a primary role or a subRole now\n * check both. Fixes CLASS_TEACHER, HOD, and others\n * assigned via the subRole system. isStaff fixed\n * to use null-safe branch check.\n *\n * @module src/roles/helpers\n * @since Phase 0.1\n */\n\nimport type { RoleName, SessionUser } from './types.js'\n\n// ── Private helpers ────────────────────────────────────────────────────────────\n\n/** Check primary roles — branch-scoped, null-safe. */\nfunction hasRole(user: SessionUser, role: RoleName): boolean {\n return user.roles.some(\n (r) =>\n r.name === role &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n}\n\n/** Check subRoles — branch-scoped, null-safe. */\nfunction hasSubRole(user: SessionUser, code: string): boolean {\n return (user.subRoles ?? []).some(\n (r) =>\n r.code === code &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n}\n\n/** Check either primary role OR subRole — use for roles that can be assigned either way. */\nfunction hasRoleOrSubRole(user: SessionUser, code: string): boolean {\n return hasRole(user, code as RoleName) || hasSubRole(user, code)\n}\n\n// ── Senior leadership ──────────────────────────────────────────────────────────\n\nexport function isProprietor(user: SessionUser): boolean {\n return hasRole(user, 'PROPRIETOR')\n}\n\nexport function isDirector(user: SessionUser): boolean {\n return hasRole(user, 'DIRECTOR')\n}\n\nexport function isSystemAdmin(user: SessionUser): boolean {\n return hasRole(user, 'SYSTEM_ADMIN')\n}\n\nexport function isHeadTeacher(user: SessionUser): boolean {\n return hasRole(user, 'HEAD_TEACHER')\n}\n\nexport function isDeputyHeadTeacher(user: SessionUser): boolean {\n return hasRole(user, 'DEPUTY_HEAD_TEACHER')\n}\n\nexport function isSeniorLeadership(user: SessionUser): boolean {\n return (\n isProprietor(user) ||\n isDirector(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user)\n )\n}\n\n// ── Academic staff ─────────────────────────────────────────────────────────────\n\nexport function isHOD(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'HOD')\n}\n\nexport function isClassTeacher(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'CLASS_TEACHER')\n}\n\nexport function isSubjectTeacher(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SUBJECT_TEACHER')\n}\n\n// ── Support staff ──────────────────────────────────────────────────────────────\n\nexport function isSchoolNurse(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SCHOOL_NURSE')\n}\n\nexport function isLibrarian(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'LIBRARIAN')\n}\n\nexport function isLabTechnician(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'LAB_TECHNICIAN')\n}\n\nexport function isSportsCoach(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SPORTS_COACH')\n}\n\nexport function isCounsellor(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'COUNSELLOR')\n}\n\nexport function isCaretaker(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'CARETAKER')\n}\n\nexport function isSecurity(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SECURITY')\n}\n\nexport function isBoardingMaster(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'BOARDING_MASTER')\n}\n\n// ── Operations ─────────────────────────────────────────────────────────────────\n\nexport function isBursar(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'BURSAR')\n}\n\nexport function isHrAdmin(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'HR_ADMIN')\n}\n\nexport function isDriver(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'DRIVER')\n}\n\nexport function isKitchenStaff(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'KITCHEN_STAFF')\n}\n\nexport function isKitchenManager(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'KITCHEN_MANAGER')\n}\n\nexport function isItAdmin(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'IT_ADMIN')\n}\n\n// ── Students and parents ───────────────────────────────────────────────────────\n\nexport function isPrefect(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'PREFECT')\n}\n\nexport function isStudent(user: SessionUser): boolean {\n return hasRole(user, 'STUDENT')\n}\n\nexport function isParent(user: SessionUser): boolean {\n return hasRole(user, 'PARENT')\n}\n\n// ── Sponsors ───────────────────────────────────────────────────────────────────\n\nexport function isOrgSponsor(user: SessionUser): boolean {\n return hasRole(user, 'ORG_SPONSOR')\n}\n\nexport function isIndividualSponsor(user: SessionUser): boolean {\n return hasRole(user, 'INDIVIDUAL_SPONSOR')\n}\n\n// ── Broad groupings ────────────────────────────────────────────────────────────\n\nexport function isStaff(user: SessionUser): boolean {\n const staffRoles: RoleName[] = [\n 'PROPRIETOR', 'DIRECTOR', 'SYSTEM_ADMIN', 'HEAD_TEACHER', 'DEPUTY_HEAD_TEACHER',\n 'HOD', 'CLASS_TEACHER', 'SUBJECT_TEACHER', 'BURSAR', 'HR_ADMIN',\n 'SCHOOL_NURSE', 'LIBRARIAN', 'LAB_TECHNICIAN', 'SPORTS_COACH',\n 'COUNSELLOR', 'CARETAKER', 'SECURITY', 'KITCHEN_STAFF', 'KITCHEN_MANAGER',\n 'DRIVER', 'IT_ADMIN', 'BOARDING_MASTER', 'PREFECT',\n ]\n return (\n user.roles.some(\n (r) =>\n staffRoles.includes(r.name) &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n ) ||\n (user.subRoles ?? []).some(\n (r) =>\n staffRoles.includes(r.code as RoleName) &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n )\n}","/**\n * Brite Future Schools — bfs-contracts\n * Permission helper functions.\n *\n * Answer \"can this user do X?\" — not \"is this user role Y?\".\n * Every UI gate and API guard must use these instead of raw role checks.\n *\n * Phase History:\n * Phase 2 (2026-06-08): Initial creation — attendance, staff, students,\n * dashboard permissions\n * Phase 3 (2026-06-10): Added canAssignClassTeacher, canViewClasses\n * Phase 5 (2026-06-21): Added HR, payroll, leave, qualification,\n * tax config, and salary permissions\n * Phase 6 (2026-06-22): Added transport permissions\n *\n * @module src/permissions/index\n * @since Phase 2\n */\n\nimport type { SessionUser } from '../roles/types.js'\nimport {\n isProprietor,\n isDirector,\n isSystemAdmin,\n isHeadTeacher,\n isDeputyHeadTeacher,\n isHOD,\n isClassTeacher,\n isHrAdmin,\n isStudent,\n isParent,\n isOrgSponsor,\n isIndividualSponsor,\n isPrefect,\n isBursar,\n isDriver,\n} from '../roles/helpers.js'\n\n// ── Attendance ─────────────────────────────────────────────────────────────────\n\n/** Class teacher marks roll for their own class; senior staff can mark any. */\nexport function canMarkClassAttendance(user: SessionUser): boolean {\n const hasClassTeacherSubRole = user.subRoles?.some(\n (s) => s.code === 'CLASS_TEACHER',\n ) ?? false\n return (\n hasClassTeacherSubRole ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canViewClassAttendance(user: SessionUser): boolean {\n return canMarkClassAttendance(user)\n}\n\nexport function canMarkStaffAttendance(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user)\n )\n}\n\nexport function canViewStaffAttendance(user: SessionUser): boolean {\n return (\n canMarkStaffAttendance(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Staff ──────────────────────────────────────────────────────────────────────\n\nexport function canViewStaffList(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canManageStaff(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Students ───────────────────────────────────────────────────────────────────\n\nexport function canViewStudentList(user: SessionUser): boolean {\n return (\n isClassTeacher(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canManageStudents(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Classes ────────────────────────────────────────────────────────────────────\n\nexport function canViewClasses(user: SessionUser): boolean {\n return (\n isClassTeacher(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canAssignClassTeacher(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Dashboard ──────────────────────────────────────────────────────────────────\n\nexport function canAccessAdminDashboard(user: SessionUser): boolean {\n return (\n !isStudent(user) &&\n !isParent(user) &&\n !isPrefect(user) &&\n !isOrgSponsor(user) &&\n !isIndividualSponsor(user)\n )\n}\n\n// ── Leave ──────────────────────────────────────────────────────────────────────\n\n/** Who can create and manage leave types. */\nexport function canManageLeaveTypes(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** HOD can approve leave for their department (first step). */\nexport function canHodApproveLeave(user: SessionUser): boolean {\n return (\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Final leave approval — Head Teacher and above only. */\nexport function canFinalApproveLeave(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view all leave requests (not just their own). */\nexport function canViewAllLeaveRequests(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Qualifications ─────────────────────────────────────────────────────────────\n\n/** Who can add or edit staff qualification records. */\nexport function canManageQualifications(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can mark a qualification as verified (triggers payroll effect). */\nexport function canVerifyQualification(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Remuneration ───────────────────────────────────────────────────────────────\n\n/** Who can manage salary grades and remuneration items. */\nexport function canManageSalaryStructure(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can assign a salary grade to a staff member. */\nexport function canAssignSalaryGrade(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a staff salary record (moves DRAFT → ACTIVE). */\nexport function canApproveSalary(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Payroll ────────────────────────────────────────────────────────────────────\n\n/** Who can initiate a payroll run. */\nexport function canInitiatePayroll(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a payroll run (moves draft → approved). */\nexport function canApprovePayroll(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can export the payroll run (Equity CSV). */\nexport function canExportPayroll(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view all staff payslips (not just their own). */\nexport function canViewAllPayslips(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view payroll summary across all branches. */\nexport function canViewCrossBranchPayroll(user: SessionUser): boolean {\n return isDirector(user) || isProprietor(user)\n}\n\n// ── Tax configuration ──────────────────────────────────────────────────────────\n\n/** Only SYSTEM_ADMIN can edit statutory tax rates. */\nexport function canEditTaxConfig(user: SessionUser): boolean {\n return isSystemAdmin(user)\n}\n\n// ── Transport ──────────────────────────────────────────────────────────────────\n\n/** Who can create, edit, and delete vehicles. */\nexport function canManageFleet(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can view the full fleet list. */\nexport function canViewFleet(user: SessionUser): boolean {\n return (\n canManageFleet(user) ||\n isHrAdmin(user)\n )\n}\n\n/** Who can manage routes and stops. */\nexport function canManageRoutes(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can view the transport module at all. */\nexport function canViewTransport(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isBursar(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can create and manage trip logs. */\nexport function canManageTrips(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Driver marks boardings on their own trip. */\nexport function canMarkBoardings(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can submit a fuel log entry. */\nexport function canSubmitFuelLog(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a fuel log entry. */\nexport function canApproveFuelLog(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can submit a vehicle maintenance request. */\nexport function canSubmitMaintenanceRequest(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can review and resolve maintenance requests. */\nexport function canReviewMaintenance(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can review transport applications (route enrolment). */\nexport function canReviewTransportApplication(user: SessionUser): boolean {\n return (\n isBursar(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/**\n * Drivers see only their own vehicle and trips.\n * Returns true if the user is purely a driver with no senior role.\n */\nexport function isScopedToOwnVehicle(user: SessionUser): boolean {\n return (\n isDriver(user) &&\n !isHeadTeacher(user) &&\n !isDeputyHeadTeacher(user) &&\n !isDirector(user) &&\n !isProprietor(user) &&\n !isSystemAdmin(user)\n )\n}"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/roles/helpers.ts","../src/permissions/index.ts"],"sourcesContent":["/**\n * Brite Future Schools — bfs-contracts\n * Role helper functions.\n *\n * Every helper takes a SessionUser and returns a boolean.\n * Use these instead of hardcoded role string comparisons everywhere.\n *\n * Usage:\n * import { isProprietor, isHeadTeacher } from '@brite-future-schools-contracts/contracts'\n * if (isProprietor(user)) { ... }\n *\n * Phase History:\n * Phase 0.1 (2026-06-05): Initial creation\n * Phase 0.2 (2026-06-06): Roles reconciled against schema — added\n * SCHOOL_NURSE, LAB_TECHNICIAN, SPORTS_COACH,\n * CARETAKER, SECURITY, KITCHEN_STAFF, IT_ADMIN,\n * ORG_SPONSOR, INDIVIDUAL_SPONSOR, KITCHEN_MANAGER,\n * BOARDING_MASTER, PREFECT\n * Phase 6 (2026-07-10): hasRole and hasSubRole unified — helpers that can\n * appear as either a primary role or a subRole now\n * check both. Fixes CLASS_TEACHER, HOD, and others\n * assigned via the subRole system. isStaff fixed\n * to use null-safe branch check.\n *\n * @module src/roles/helpers\n * @since Phase 0.1\n */\n\nimport type { RoleName, SessionUser } from './types.js'\n\n// ── Private helpers ────────────────────────────────────────────────────────────\n\n/** Check primary roles — branch-scoped, null-safe. */\nfunction hasRole(user: SessionUser, role: RoleName): boolean {\n return user.roles.some(\n (r) =>\n r.name === role &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n}\n\n/** Check subRoles — branch-scoped, null-safe. */\nfunction hasSubRole(user: SessionUser, code: string): boolean {\n return (user.subRoles ?? []).some(\n (r) =>\n r.code === code &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n}\n\n/** Check either primary role OR subRole — use for roles that can be assigned either way. */\nfunction hasRoleOrSubRole(user: SessionUser, code: string): boolean {\n return hasRole(user, code as RoleName) || hasSubRole(user, code)\n}\n\n// ── Senior leadership ──────────────────────────────────────────────────────────\n\nexport function isProprietor(user: SessionUser): boolean {\n return hasRole(user, 'PROPRIETOR')\n}\n\nexport function isDirector(user: SessionUser): boolean {\n return hasRole(user, 'DIRECTOR')\n}\n\nexport function isSystemAdmin(user: SessionUser): boolean {\n return hasRole(user, 'SYSTEM_ADMIN')\n}\n\nexport function isHeadTeacher(user: SessionUser): boolean {\n return hasRole(user, 'HEAD_TEACHER')\n}\n\nexport function isDeputyHeadTeacher(user: SessionUser): boolean {\n return hasRole(user, 'DEPUTY_HEAD_TEACHER')\n}\n\nexport function isSeniorLeadership(user: SessionUser): boolean {\n return (\n isProprietor(user) ||\n isDirector(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user)\n )\n}\n\n// ── Academic staff ─────────────────────────────────────────────────────────────\n\nexport function isHOD(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'HOD')\n}\n\nexport function isClassTeacher(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'CLASS_TEACHER')\n}\n\nexport function isSubjectTeacher(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SUBJECT_TEACHER')\n}\n\n// ── Support staff ──────────────────────────────────────────────────────────────\n\nexport function isSchoolNurse(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SCHOOL_NURSE')\n}\n\nexport function isLibrarian(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'LIBRARIAN')\n}\n\nexport function isLabTechnician(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'LAB_TECHNICIAN')\n}\n\nexport function isSportsCoach(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SPORTS_COACH')\n}\n\nexport function isCounsellor(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'COUNSELLOR')\n}\n\nexport function isCaretaker(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'CARETAKER')\n}\n\nexport function isSecurity(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'SECURITY')\n}\n\nexport function isBoardingMaster(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'BOARDING_MASTER')\n}\n\n// ── Operations ─────────────────────────────────────────────────────────────────\n\nexport function isBursar(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'BURSAR')\n}\n\nexport function isHrAdmin(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'HR_ADMIN')\n}\n\nexport function isDriver(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'DRIVER')\n}\n\nexport function isKitchenStaff(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'KITCHEN_STAFF')\n}\n\nexport function isKitchenManager(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'KITCHEN_MANAGER')\n}\n\nexport function isItAdmin(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'IT_ADMIN')\n}\n\n// ── Students and parents ───────────────────────────────────────────────────────\n\nexport function isPrefect(user: SessionUser): boolean {\n return hasRoleOrSubRole(user, 'PREFECT')\n}\n\nexport function isStudent(user: SessionUser): boolean {\n return hasRole(user, 'STUDENT')\n}\n\nexport function isParent(user: SessionUser): boolean {\n return hasRole(user, 'PARENT')\n}\n\n// ── Sponsors ───────────────────────────────────────────────────────────────────\n\nexport function isOrgSponsor(user: SessionUser): boolean {\n return hasRole(user, 'ORG_SPONSOR')\n}\n\nexport function isIndividualSponsor(user: SessionUser): boolean {\n return hasRole(user, 'INDIVIDUAL_SPONSOR')\n}\n\n// ── Broad groupings ────────────────────────────────────────────────────────────\n\nexport function isStaff(user: SessionUser): boolean {\n const staffRoles: RoleName[] = [\n 'PROPRIETOR', 'DIRECTOR', 'SYSTEM_ADMIN', 'HEAD_TEACHER', 'DEPUTY_HEAD_TEACHER',\n 'HOD', 'CLASS_TEACHER', 'SUBJECT_TEACHER', 'BURSAR', 'HR_ADMIN',\n 'SCHOOL_NURSE', 'LIBRARIAN', 'LAB_TECHNICIAN', 'SPORTS_COACH',\n 'COUNSELLOR', 'CARETAKER', 'SECURITY', 'KITCHEN_STAFF', 'KITCHEN_MANAGER',\n 'DRIVER', 'IT_ADMIN', 'BOARDING_MASTER', 'PREFECT',\n ]\n return (\n user.roles.some(\n (r) =>\n staffRoles.includes(r.name) &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n ) ||\n (user.subRoles ?? []).some(\n (r) =>\n staffRoles.includes(r.code as RoleName) &&\n (!user.activeBranchId || r.branchId === user.activeBranchId),\n )\n )\n}","/**\n * Brite Future Schools — bfs-contracts\n * Permission helper functions.\n *\n * Answer \"can this user do X?\" — not \"is this user role Y?\".\n * Every UI gate and API guard must use these instead of raw role checks.\n *\n * Phase History:\n * Phase 2 (2026-06-08): Initial creation — attendance, staff, students,\n * dashboard permissions\n * Phase 3 (2026-06-10): Added canAssignClassTeacher, canViewClasses\n * Phase 5 (2026-06-21): Added HR, payroll, leave, qualification,\n * tax config, and salary permissions\n * Phase 6 (2026-06-22): Added transport permissions\n *\n * @module src/permissions/index\n * @since Phase 2\n */\n\nimport type { SessionUser } from '../roles/types.js'\nimport {\n isProprietor,\n isDirector,\n isSystemAdmin,\n isHeadTeacher,\n isDeputyHeadTeacher,\n isHOD,\n isClassTeacher,\n isHrAdmin,\n isStudent,\n isParent,\n isOrgSponsor,\n isIndividualSponsor,\n isPrefect,\n isBursar,\n isDriver,\n} from '../roles/helpers.js'\n\n// ── Attendance ─────────────────────────────────────────────────────────────────\n\n/** Class teacher marks roll for their own class; senior staff can mark any. */\nexport function canMarkClassAttendance(user: SessionUser): boolean {\n const hasClassTeacherSubRole = user.subRoles?.some(\n (s) => s.code === 'CLASS_TEACHER',\n ) ?? false\n return (\n hasClassTeacherSubRole ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canViewClassAttendance(user: SessionUser): boolean {\n return canMarkClassAttendance(user)\n}\n\nexport function canMarkStaffAttendance(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user)\n )\n}\n\nexport function canViewStaffAttendance(user: SessionUser): boolean {\n return (\n canMarkStaffAttendance(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Staff ──────────────────────────────────────────────────────────────────────\n\nexport function canViewStaffList(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canManageStaff(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Students ───────────────────────────────────────────────────────────────────\n\nexport function canViewStudentList(user: SessionUser): boolean {\n return (\n isClassTeacher(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canManageStudents(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Classes ────────────────────────────────────────────────────────────────────\n\nexport function canViewClasses(user: SessionUser): boolean {\n return (\n isClassTeacher(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\nexport function canAssignClassTeacher(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isSystemAdmin(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Dashboard ──────────────────────────────────────────────────────────────────\n\nexport function canAccessAdminDashboard(user: SessionUser): boolean {\n return (\n !isStudent(user) &&\n !isParent(user) &&\n !isPrefect(user) &&\n !isOrgSponsor(user) &&\n !isIndividualSponsor(user)\n )\n}\n\n// ── Leave ──────────────────────────────────────────────────────────────────────\n\n/** Who can create and manage leave types. */\nexport function canManageLeaveTypes(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** HOD can approve leave for their department (first step). */\nexport function canHodApproveLeave(user: SessionUser): boolean {\n return (\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Final leave approval — Head Teacher and above only. */\nexport function canFinalApproveLeave(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view all leave requests (not just their own). */\nexport function canViewAllLeaveRequests(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHOD(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Qualifications ─────────────────────────────────────────────────────────────\n\n/** Who can add or edit staff qualification records. */\nexport function canManageQualifications(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can mark a qualification as verified (triggers payroll effect). */\nexport function canVerifyQualification(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Remuneration ───────────────────────────────────────────────────────────────\n\n/** Who can manage salary grades and remuneration items. */\nexport function canManageSalaryStructure(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can assign a salary grade to a staff member. */\nexport function canAssignSalaryGrade(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a staff salary record (moves DRAFT → ACTIVE). */\nexport function canApproveSalary(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n// ── Payroll ────────────────────────────────────────────────────────────────────\n\n/** Who can initiate a payroll run. */\nexport function canInitiatePayroll(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a payroll run (moves draft → approved). */\nexport function canApprovePayroll(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can export the payroll run (Equity CSV). */\nexport function canExportPayroll(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view all staff payslips (not just their own). */\nexport function canViewAllPayslips(user: SessionUser): boolean {\n return (\n isHrAdmin(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can view payroll summary across all branches. */\nexport function canViewCrossBranchPayroll(user: SessionUser): boolean {\n return isDirector(user) || isProprietor(user)\n}\n\n// ── Tax configuration ──────────────────────────────────────────────────────────\n\n/** Only SYSTEM_ADMIN can edit statutory tax rates. */\nexport function canEditTaxConfig(user: SessionUser): boolean {\n return isSystemAdmin(user)\n}\n\n// ── Transport ──────────────────────────────────────────────────────────────────\n\n/** Who can create, edit, and delete vehicles. */\nexport function canManageFleet(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can view the full fleet list. */\nexport function canViewFleet(user: SessionUser): boolean {\n return (\n canManageFleet(user) ||\n isHrAdmin(user)\n )\n}\n\n/** Who can manage routes and stops. */\nexport function canManageRoutes(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can view the transport module at all. */\nexport function canViewTransport(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isBursar(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isHrAdmin(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can create and manage trip logs. */\nexport function canManageTrips(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Driver marks boardings on their own trip. */\nexport function canMarkBoardings(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can submit a fuel log entry. */\nexport function canSubmitFuelLog(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can approve a fuel log entry. */\nexport function canApproveFuelLog(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can submit a vehicle maintenance request. */\nexport function canSubmitMaintenanceRequest(user: SessionUser): boolean {\n return (\n isDriver(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user) ||\n isSystemAdmin(user)\n )\n}\n\n/** Who can review and resolve maintenance requests. */\nexport function canReviewMaintenance(user: SessionUser): boolean {\n return (\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/** Who can review transport applications (route enrolment). */\nexport function canReviewTransportApplication(user: SessionUser): boolean {\n return (\n isBursar(user) ||\n isHeadTeacher(user) ||\n isDeputyHeadTeacher(user) ||\n isDirector(user) ||\n isProprietor(user)\n )\n}\n\n/**\n * Drivers see only their own vehicle and trips.\n * Returns true if the user is purely a driver with no senior role.\n */\nexport function isScopedToOwnVehicle(user: SessionUser): boolean {\n return (\n isDriver(user) &&\n !isHeadTeacher(user) &&\n !isDeputyHeadTeacher(user) &&\n !isDirector(user) &&\n !isProprietor(user) &&\n !isSystemAdmin(user)\n )\n}"],"mappings":"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","names":[]}
|