feat(attendance): add notification delivery and NFC security foundation
This commit is contained in:
@@ -21,6 +21,8 @@ import {
|
||||
disputeInvoice,
|
||||
quickSetStaffAvailability,
|
||||
rateWorkerFromCoverage,
|
||||
registerClientPushToken,
|
||||
registerStaffPushToken,
|
||||
requestShiftSwap,
|
||||
saveTaxFormDraft,
|
||||
setupStaffProfile,
|
||||
@@ -28,6 +30,8 @@ import {
|
||||
staffClockOut,
|
||||
submitLocationStreamBatch,
|
||||
submitTaxForm,
|
||||
unregisterClientPushToken,
|
||||
unregisterStaffPushToken,
|
||||
updateEmergencyContact,
|
||||
updateHub,
|
||||
updatePersonalInfo,
|
||||
@@ -62,6 +66,8 @@ import {
|
||||
preferredLocationsUpdateSchema,
|
||||
privacyUpdateSchema,
|
||||
profileExperienceSchema,
|
||||
pushTokenDeleteSchema,
|
||||
pushTokenRegisterSchema,
|
||||
shiftApplySchema,
|
||||
shiftDecisionSchema,
|
||||
staffClockInSchema,
|
||||
@@ -91,6 +97,8 @@ const defaultHandlers = {
|
||||
disputeInvoice,
|
||||
quickSetStaffAvailability,
|
||||
rateWorkerFromCoverage,
|
||||
registerClientPushToken,
|
||||
registerStaffPushToken,
|
||||
requestShiftSwap,
|
||||
saveTaxFormDraft,
|
||||
setupStaffProfile,
|
||||
@@ -98,6 +106,8 @@ const defaultHandlers = {
|
||||
staffClockOut,
|
||||
submitLocationStreamBatch,
|
||||
submitTaxForm,
|
||||
unregisterClientPushToken,
|
||||
unregisterStaffPushToken,
|
||||
updateEmergencyContact,
|
||||
updateHub,
|
||||
updatePersonalInfo,
|
||||
@@ -285,6 +295,26 @@ export function createMobileCommandsRouter(handlers = defaultHandlers) {
|
||||
handler: handlers.setupStaffProfile,
|
||||
}));
|
||||
|
||||
router.post(...mobileCommand('/client/devices/push-tokens', {
|
||||
schema: pushTokenRegisterSchema,
|
||||
policyAction: 'notifications.device.write',
|
||||
resource: 'device_push_token',
|
||||
handler: handlers.registerClientPushToken,
|
||||
}));
|
||||
|
||||
router.delete(...mobileCommand('/client/devices/push-tokens', {
|
||||
schema: pushTokenDeleteSchema,
|
||||
policyAction: 'notifications.device.write',
|
||||
resource: 'device_push_token',
|
||||
handler: handlers.unregisterClientPushToken,
|
||||
paramShape: (req) => ({
|
||||
...req.body,
|
||||
tokenId: req.body?.tokenId || req.query.tokenId,
|
||||
pushToken: req.body?.pushToken || req.query.pushToken,
|
||||
reason: req.body?.reason || req.query.reason,
|
||||
}),
|
||||
}));
|
||||
|
||||
router.post(...mobileCommand('/staff/clock-in', {
|
||||
schema: staffClockInSchema,
|
||||
policyAction: 'attendance.clock-in',
|
||||
@@ -306,6 +336,26 @@ export function createMobileCommandsRouter(handlers = defaultHandlers) {
|
||||
handler: handlers.submitLocationStreamBatch,
|
||||
}));
|
||||
|
||||
router.post(...mobileCommand('/staff/devices/push-tokens', {
|
||||
schema: pushTokenRegisterSchema,
|
||||
policyAction: 'notifications.device.write',
|
||||
resource: 'device_push_token',
|
||||
handler: handlers.registerStaffPushToken,
|
||||
}));
|
||||
|
||||
router.delete(...mobileCommand('/staff/devices/push-tokens', {
|
||||
schema: pushTokenDeleteSchema,
|
||||
policyAction: 'notifications.device.write',
|
||||
resource: 'device_push_token',
|
||||
handler: handlers.unregisterStaffPushToken,
|
||||
paramShape: (req) => ({
|
||||
...req.body,
|
||||
tokenId: req.body?.tokenId || req.query.tokenId,
|
||||
pushToken: req.body?.pushToken || req.query.pushToken,
|
||||
reason: req.body?.reason || req.query.reason,
|
||||
}),
|
||||
}));
|
||||
|
||||
router.put(...mobileCommand('/staff/availability', {
|
||||
schema: availabilityDayUpdateSchema,
|
||||
policyAction: 'staff.availability.write',
|
||||
|
||||
Reference in New Issue
Block a user