feat: implement barangay system phases 2-14
Complete adaptation from BukidBountyApp to Philippine barangay governance: - Barangay models: Resident, Household, HouseholdMember, Blotter, BlotterHearing, DocumentRequest, RequestPayment, RequestType, BarangayProject, BarangayBudget - Controllers: ResidentController, HouseholdController, BlotterController, BlotterHearingController, DocumentRequestController, RequestTypeController, ProjectController, BudgetController, QRPHController, AdminConsoleController, UserController, FileController, ChapterController, LoginController - Vue pages: Home, ManageResidents, ResidentProfile, ManageHouseholds, ManageBlotters, BlotterDetail, RequestDocument, ManageDocumentRequests, DocumentRequestDetail, ManageRequestTypes, ManageProjects, BudgetLedger, AdminConsole - Barangay roles: PunongBarangay, Kagawad, Secretary, Treasurer, SK, Tanod, BHW, Staff, Resident - UserPermissions matrix rewritten with barangay-specific permission mappings - VueRouteMap replaced with barangay SPA routes - UserActions enum references corrected across all controllers - Removed all market/cooperative/POS/subscription code and models
This commit is contained in:
@@ -26,363 +26,61 @@ class VueRouteMap
|
||||
* - 'allowedUserTypes' (array): List of allowed user types who can view this page
|
||||
*/
|
||||
protected static array $routes = [
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Example Usage
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| '/my-path' => [
|
||||
| 'component' => 'MyVueComponent',
|
||||
| 'middlewares' => ['auth'],
|
||||
| 'name' => 'my.route.name',
|
||||
| 'loginRequired' => true,
|
||||
| 'allowedUserTypes' => ['ult', 'operator'],
|
||||
| ],
|
||||
*/
|
||||
// ── Public / Auth
|
||||
'/' => ['component' => 'Home', 'loginRequired' => false],
|
||||
'/app' => ['component' => 'Home', 'loginRequired' => false],
|
||||
'/barangaysystem' => ['component' => 'Home', 'loginRequired' => false],
|
||||
|
||||
// Public pages - no login required
|
||||
'/' => [
|
||||
'component' => 'Home',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/app' => [
|
||||
'component' => 'Home',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/bukidbountyapp' => [
|
||||
'component' => 'Home',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
// ── Dashboard / Home
|
||||
'/home' => ['component' => 'Home', 'loginRequired' => true],
|
||||
'/dashboard' => ['component' => 'Home', 'loginRequired' => true],
|
||||
|
||||
// Market pages - public access
|
||||
'/list-products-market' => [
|
||||
'component' => 'ListProductsMarket',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/list-stores' => [
|
||||
'component' => 'ListStores',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/my-stores' => [
|
||||
'component' => 'MyStores',
|
||||
'loginRequired' => true,
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/buy-view-product-market' => [
|
||||
'component' => 'BuyViewProductMarket',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/view-store-market' => [
|
||||
'component' => 'ViewStoreMarket',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/view-all-photos' => [
|
||||
'component' => 'ViewAllPhotos',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/photo-viewer' => [
|
||||
'component' => 'PhotoViewer',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/create-store' => [
|
||||
'component' => 'CreateStore',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner'],
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/pos' => [
|
||||
'component' => 'PosMain',
|
||||
'loginRequired' => false,
|
||||
'module' => 'pos',
|
||||
],
|
||||
// ── Auth
|
||||
'/accountsettings' => ['component' => 'AccountSettings', 'loginRequired' => true],
|
||||
|
||||
// Account settings - requires login
|
||||
'/account-settings' => [
|
||||
'component' => 'AccountSettings',
|
||||
'loginRequired' => true,
|
||||
],
|
||||
// ── Announcements
|
||||
'/manageannouncements' => ['component' => 'ManageAnnouncements', 'loginRequired' => true, 'module' => 'announcements'],
|
||||
|
||||
'/create-user' => [
|
||||
'component' => 'CreateUser',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'store owner', 'store manager', 'supplier overseer', 'supplier'],
|
||||
],
|
||||
// ── System Settings / Admin
|
||||
'/systemsettings' => ['component' => 'SystemSettings', 'loginRequired' => true],
|
||||
'/landingpageeditor' => ['component' => 'LandingPageEditor', 'loginRequired' => true],
|
||||
'/adminconsole' => ['component' => 'AdminConsole', 'loginRequired' => true],
|
||||
|
||||
// Administrative & Management pages
|
||||
'/create-product' => [
|
||||
'component' => 'CreateProductUltimate',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner'],
|
||||
'module' => 'products',
|
||||
],
|
||||
'/add-products-to-store' => [
|
||||
'component' => 'AddProductsToStore',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/create-product-store-owner' => [
|
||||
'component' => 'CreateProductStoreOwner',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'products',
|
||||
],
|
||||
'/edit-product' => [
|
||||
'component' => 'EditProductUltimate',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner'],
|
||||
'module' => 'products',
|
||||
],
|
||||
'/edit-store' => [
|
||||
'component' => 'EditStoreUltimate',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/transfer-credit' => [
|
||||
'component' => 'TransferMyCredit',
|
||||
'loginRequired' => true,
|
||||
'module' => 'credits',
|
||||
],
|
||||
'/user-list' => [
|
||||
'component' => 'UserList',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'audit'],
|
||||
],
|
||||
'/manage-transactions' => [
|
||||
'component' => 'ManageGlobalTransactions',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'transactions',
|
||||
],
|
||||
'/remove-product' => [
|
||||
'component' => 'RemoveProductFromStoreAdmin',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/assign-product-to-store' => [
|
||||
'component' => 'AssignProductToStore',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
],
|
||||
'/manage-products' => [
|
||||
'component' => 'ManageProductsAdmin',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'products',
|
||||
],
|
||||
'/manage-stores' => [
|
||||
'component' => 'ManageStoresAdmin',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'stores',
|
||||
],
|
||||
'/pos-access-keys' => [
|
||||
'component' => 'PosAccessKeys',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'pos',
|
||||
],
|
||||
'/add-transaction' => [
|
||||
'component' => 'AddTransaction',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'transactions',
|
||||
],
|
||||
'/manage-product-admin' => [
|
||||
'component' => 'ManageProductAdmin',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'products',
|
||||
],
|
||||
'/batch-add-products' => [
|
||||
'component' => 'BatchAddProducts',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner'],
|
||||
'module' => 'batch',
|
||||
],
|
||||
'/batch-add-stores' => [
|
||||
'component' => 'BatchAddStores',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'batch',
|
||||
],
|
||||
'/batch-add-users' => [
|
||||
'component' => 'BatchAddUsers',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'batch',
|
||||
],
|
||||
'/batch-add-cooperatives' => [
|
||||
'component' => 'BatchAddCooperatives',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator'],
|
||||
'module' => 'batch',
|
||||
],
|
||||
'/pos-history' => [
|
||||
'component' => 'PosHistory',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'pos',
|
||||
],
|
||||
// ── User Management
|
||||
'/userlist' => ['component' => 'UserList', 'loginRequired' => true],
|
||||
'/createuser' => ['component' => 'CreateUser', 'loginRequired' => true],
|
||||
'/edituser' => ['component' => 'EditUser', 'loginRequired' => true],
|
||||
'/manageuser' => ['component' => 'ManageUser', 'loginRequired' => true],
|
||||
'/userregistration' => ['component' => 'UserRegistration', 'loginRequired' => true],
|
||||
|
||||
// Logistics & Shipments
|
||||
// ── Chapter Hierarchy
|
||||
'/createchapter' => ['component' => 'CreateChapter', 'loginRequired' => true, 'module' => 'chapters'],
|
||||
'/registerchapter' => ['component' => 'RegisterChapter', 'loginRequired' => true, 'module' => 'chapters'],
|
||||
'/chapterorgchart' => ['component' => 'ChapterOrgChart', 'loginRequired' => true, 'module' => 'chapters'],
|
||||
'/assignchapterofficer' => ['component' => 'AssignChapterOfficer', 'loginRequired' => true, 'module' => 'chapters'],
|
||||
|
||||
// ── Barangay Residents
|
||||
'/barangay/manageresidents' => ['component' => 'Barangay.ManageResidents', 'loginRequired' => true, 'module' => 'residents'],
|
||||
'/barangay/residentprofile' => ['component' => 'Barangay.ResidentProfile', 'loginRequired' => true, 'module' => 'residents'],
|
||||
|
||||
// ── Barangay Households
|
||||
'/barangay/managehouseholds' => ['component' => 'Barangay.ManageHouseholds', 'loginRequired' => true, 'module' => 'households'],
|
||||
|
||||
// Property Management
|
||||
'/list-properties' => [
|
||||
'component' => 'ListProperties',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'properties',
|
||||
],
|
||||
'/list-referrals' => [
|
||||
'component' => 'ListReferrals',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'properties',
|
||||
],
|
||||
// ── Blotters
|
||||
'/barangay/manageblotters' => ['component' => 'Barangay.ManageBlotters', 'loginRequired' => true, 'module' => 'blotters'],
|
||||
'/barangay/blotterdetail' => ['component' => 'Barangay.BlotterDetail', 'loginRequired' => true, 'module' => 'blotters'],
|
||||
|
||||
// Reports
|
||||
'/list-reports' => [
|
||||
'component' => 'ListReports',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'accounting',
|
||||
],
|
||||
'/shipment-list' => [
|
||||
'component' => 'ShipmentList',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager', 'rider', 'audit'],
|
||||
'module' => 'shipments',
|
||||
],
|
||||
'/shipment-detail' => [
|
||||
'component' => 'ShipmentDetail',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager', 'rider', 'audit'],
|
||||
'module' => 'shipments',
|
||||
],
|
||||
'/farmer-profile-edit' => [
|
||||
'component' => 'FarmerProfileEdit',
|
||||
'loginRequired' => true,
|
||||
'module' => 'farmers',
|
||||
],
|
||||
'/verification-dashboard' => [
|
||||
'component' => 'VerificationDashboard',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'farmers',
|
||||
],
|
||||
'/cooperative-list' => [
|
||||
'component' => 'CooperativeList',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer', 'coop member'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/chapter-org-chart' => [
|
||||
'component' => 'ChapterOrgChart',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer', 'coop member'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/coop-member-search' => [
|
||||
'component' => 'CoopMemberSearch',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/create-coop-user' => [
|
||||
'component' => 'CreateCoopUser',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/assign-chapter-officer' => [
|
||||
'component' => 'AssignChapterOfficer',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/create-chapter' => [
|
||||
'component' => 'CreateChapter',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/register-chapter' => [
|
||||
'component' => 'RegisterChapter',
|
||||
'loginRequired' => false,
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/create-cooperative' => [
|
||||
'component' => 'CreateCooperative',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'coordinator'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
// ── Document Requests
|
||||
'/barangay/requestdocument' => ['component' => 'Barangay.RequestDocument', 'loginRequired' => true, 'module' => 'certificates'],
|
||||
'/barangay/managedocumentrequests' => ['component' => 'Barangay.ManageDocumentRequests','loginRequired' => true, 'module' => 'documents'],
|
||||
'/barangay/documentrequestdetail' => ['component' => 'Barangay.DocumentRequestDetail','loginRequired' => true, 'module' => 'documents'],
|
||||
'/barangay/managerequesttypes' => ['component' => 'Barangay.ManageRequestTypes', 'loginRequired' => true, 'module' => 'documents'],
|
||||
|
||||
'/cooperative-detail' => [
|
||||
'component' => 'CooperativeDetail',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator', 'coop officer', 'coop member'],
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/enroll-farmer' => [
|
||||
'component' => 'EnrollFarmer',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator'],
|
||||
'module' => 'farmers',
|
||||
],
|
||||
'/cooperative-member-register' => [
|
||||
'component' => 'CooperativeMemberRegister',
|
||||
'loginRequired' => true,
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/register-coop' => [
|
||||
'component' => 'RegisterCoop',
|
||||
'loginRequired' => false,
|
||||
'module' => 'cooperatives',
|
||||
],
|
||||
'/user-registration' => [
|
||||
'component' => 'UserRegistration',
|
||||
'loginRequired' => false,
|
||||
],
|
||||
'/user-info-edit' => [
|
||||
'component' => 'UserInfoEdit',
|
||||
'loginRequired' => true,
|
||||
],
|
||||
'/ultimate-console' => [
|
||||
'component' => 'UltimateConsole',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult'],
|
||||
],
|
||||
'/system-settings' => [
|
||||
'component' => 'SystemSettings',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult'],
|
||||
],
|
||||
'/landing-page-editor' => [
|
||||
'component' => 'LandingPageEditor',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'coordinator'],
|
||||
'module' => 'landing_pages',
|
||||
],
|
||||
'/accounting-dashboard' => [
|
||||
'component' => 'AccountingDashboard',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'accounting',
|
||||
'store_module' => 'accounting_store',
|
||||
],
|
||||
'/manage-accounts' => [
|
||||
'component' => 'ManageAccounts',
|
||||
'loginRequired' => true,
|
||||
'allowedUserTypes' => ['ult', 'super operator', 'operator', 'store owner', 'store manager'],
|
||||
'module' => 'accounting',
|
||||
'store_module' => 'accounting_store',
|
||||
],
|
||||
// ── Projects
|
||||
'/barangay/manageprojects' => ['component' => 'Barangay.ManageProjects', 'loginRequired' => true, 'module' => 'projects'],
|
||||
|
||||
// ── Budget
|
||||
'/barangay/budgetledger' => ['component' => 'Barangay.BudgetLedger', 'loginRequired' => true, 'module' => 'budget'],
|
||||
];
|
||||
|
||||
|
||||
@@ -461,7 +159,7 @@ class VueRouteMap
|
||||
$disabledPages = \App\Models\SystemSetting::getValue('disabled_pages', []);
|
||||
if (is_array($disabledPages) && in_array(strtolower((string)$component), array_map('strtolower', $disabledPages))) {
|
||||
// Ultimate accounts can still access to allow fixing settings
|
||||
if (!$user || $user->acct_type !== UserTypes::ULTIMATE) {
|
||||
if (!$user || $user->acct_type !== UserTypes::SUPER_ADMIN) {
|
||||
return redirect('/');
|
||||
}
|
||||
}
|
||||
@@ -601,7 +299,7 @@ class VueRouteMap
|
||||
$disabledPages = \App\Models\SystemSetting::getValue('disabled_pages', []);
|
||||
if (is_array($disabledPages) && in_array(strtolower((string)$vueComponent), array_map('strtolower', $disabledPages))) {
|
||||
// Ultimate accounts can still access to allow fixing settings
|
||||
if (!$user || $user->acct_type !== UserTypes::ULTIMATE) {
|
||||
if (!$user || $user->acct_type !== UserTypes::SUPER_ADMIN) {
|
||||
return redirect('/');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user