feat: Add manager permissions management component and related functionality

- Implemented ManagerPermissions.vue for managing manager accounts, including adding, editing, and deleting managers.
- Integrated a modal for adding new managers with form validation.
- Added functionality to fetch, display, and paginate manager data.
- Created a toast notification system for user feedback on actions.
- Developed a reusable Toast component for displaying notifications.
- Introduced a useToast composable for managing toast notifications.
- Added permissions management for managers, including fetching and saving permissions.
- Implemented password change functionality for managers.
- Enhanced error handling and user feedback throughout the manager management process.
- Added root CA and private key files for secure communication.
This commit is contained in:
sudomarcma
2025-07-18 15:56:55 +08:00
parent 601b32a7c8
commit 7769a89708
25 changed files with 1708 additions and 467 deletions
+55 -18
View File
@@ -1,5 +1,5 @@
{
"appTitle": "Clock-In/Out System",
"appTitle": "Attendance System",
"logout": "Logout",
"login": "Login",
"username": "Username",
@@ -34,7 +34,7 @@
"noClockHistory": "You have no clocking history.",
"clockHistoryFetchFail": "Failed to fetch clock history:",
"viewClockHistory": "View My Clock History",
"changePassword": "Change My Password",
"changePassword": "Change Password",
"successClockIn": "Successfully clocked in.",
"successClockOut": "Successfully clocked out.",
@@ -48,15 +48,15 @@
"tabPersonnel": "Personnel",
"tabAttendance": "Attendance",
"tabWarning": "Warnings",
"tabWarning": "Alerts",
"warningSettings": "Warning Settings",
"failedClockSummary": "Failed Clock Summary",
"failedClockSummary": "Failed Clock Events ",
"failedCount": "Failed Count",
"viewDetails": "View Details",
"fetchRecords": "Fetch Records",
"fetchRecords": "Show List",
"failedRecordsFor": "Failed Records for ",
"eventType": "Event Type",
"tabQrCodes": "QR Codes",
"tabQrCodes": "QR",
"uploadQrImage": "Upload QR Image",
"couldNotLoadWorkerInfo": "Could not load worker information",
@@ -136,11 +136,12 @@
"department": "Department",
"position": "Position",
"egJohnSmith": "e.g. John Smith",
"egJsmith": "e.g. jsmith",
"eg123456": "e.g. 123456",
"egJsmith": "e.g. 123456",
"eg123456": "eg. 123456",
"asManager": "As Manager",
"adding": "Adding...",
"addUser": "Add User",
"addManager": "Add Manager",
"manageTags": "Manage Tags",
"createNewTag": "Create New Tag",
"egTeam": "e.g. Team",
@@ -148,9 +149,9 @@
"egManager": "e.g. Manager",
"createTag": "Create Tag",
"tags": "Tags",
"workerRoster": "Worker Roster",
"searchByNameOrUsername": "Search by name or username",
"searchByNameOrDepartment": "Search by name or department",
"workerRoster": "Employee List",
"searchByNameOrUsername": "Search by name/username",
"searchByNameOrDepartment": "Search by name/department",
"filterByTag": "Filter by tag",
"clearFilter": "Clear filter",
"dateJoined": "Date Joined",
@@ -188,7 +189,7 @@
"newCodeCreated": "New Code Created!",
"saveQrInstruction": "Save this image or use the ID below. This will disappear on refresh.",
"id": "ID",
"existingQrCodes": "Existing QR Codes",
"existingQrCodes": "QR Code List",
"name": "Name",
"status": "Status",
"active": "Active",
@@ -202,12 +203,12 @@
"loading": "Loading...",
"tabGeofencing": "Geofencing",
"createGeofence": "Create Geofence",
"drawInstruction": "Click the polygon tool on the map to start drawing a new geofence. Click the first point to finish.",
"createGeofence": "Add Geofence Area",
"drawInstruction": "Use the polygon tool to draw your area on the map. Click your starting point again to finish.",
"geofenceName": "Geofence Name",
"geofenceNamePlaceholder": "e.g., Main Warehouse Zone",
"saveGeofence": "Save Geofence",
"existingGeofences": "Existing Geofences",
"saveGeofence": "Save Area",
"existingGeofences": "Saved Area",
"view": "View",
"noGeofencesFound": "No Geofences Found",
"startOver" : "Start Over",
@@ -233,5 +234,41 @@
"error.invalidQrCode": "Clocking failed: The scanned QR Code is invalid or no longer active.",
"error.alreadyClockedIn": "Action failed: You are already clocked in.",
"error.alreadyClockedOut": "Action failed: You are already clocked out.",
"error.criticalServer": "A critical server error occurred. Please contact support."
}
"error.criticalServer": "A critical server error occurred. Please contact support.",
"dangerZone": "Danger Zone",
"clearDeviceDescription": "Unlink Account with Device.",
"settings": "Settings",
"employeeSettings": "Employee Settings",
"accountSettings": "Account Settings",
"workerStatus": "Account Status",
"activeAccount": "Allow Login",
"deleteDescription": "User will be deleted.",
"saveChanges": "Save Changes",
"managerPermissions": "Manager",
"can_view_workers": "View Workers",
"can_edit_workers": "Manage Workers",
"can_view_alerts": "View Alerts",
"can_view_geofences": "View Geofences",
"can_manage_geofences": "Manage Geofences",
"can_view_qrcodes": "View QR Codes",
"can_manage_qrcodes": "Manage QR Codes",
"can_view_reports": "View Reports",
"can_manage_killswitch": "Manage Schedule",
"can_manage_permissions": "Manage Permissions",
"can_edit_managers": "Edit Managers",
"can_delete_managers": "Delete Managers",
"noManagersFound": "No managers found",
"managerRoster": "Manager Roster",
"loadingManagers": "Loading managers...",
"managerSettings": "Manager Settings",
"managerStatus": "Manager Status",
"confirmDeleteWorker": "Are you sure you want to delete this worker? This will soft-delete their account.",
"view_all": "View All",
"edit_workers": "Edit Workers",
"manage_resources": "Manage Resources",
"manager_permissions": "Manager Permissions",
"confirmDelete": "Are you sure you want to delete this?",
"confirm": "Confirm"
}