diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 6e08ba79c..487160d35 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -44,7 +44,7 @@ class RoleController extends BaseController } - private function getFilteredPermissions() + private function getFilteredPermissions($targetRole = null) { $user = Auth::user(); $userType = $user->type ?? 'company'; @@ -54,8 +54,15 @@ class RoleController extends BaseController return Permission::all()->groupBy('module'); } - // Get allowed modules for current user role - $allowedModules = config('role-permissions.' . $userType, config('role-permissions.company')); + // Determine the module list to use. + // If we are editing an 'employee' role specifically, use that list. + $targetType = $userType; + if ($targetRole && $targetRole->name === 'employee') { + $targetType = 'employee'; + } + + // Get allowed modules for target role type + $allowedModules = config('role-permissions.' . $targetType, config('role-permissions.company')); // Filter permissions by allowed modules $query = Permission::whereIn('module', $allowedModules); @@ -92,8 +99,15 @@ class RoleController extends BaseController return $permissions; } - // Get allowed modules for current user role - $allowedModules = config('role-permissions.' . $userType, config('role-permissions.company')); + // Determine the module list to use. + $targetType = $userType; + $roleName = $role ? $role->name : Str::slug(request()->label); + if ($roleName === 'employee') { + $targetType = 'employee'; + } + + // Get allowed modules for target type + $allowedModules = config('role-permissions.' . $targetType, config('role-permissions.company')); if (!is_array($allowedModules)) { $allowedModules = []; } diff --git a/config/role-permissions.php b/config/role-permissions.php index 21f64b5b8..c702ce80d 100644 --- a/config/role-permissions.php +++ b/config/role-permissions.php @@ -114,5 +114,8 @@ return [ 'calendar', 'custom_questions', 'career' - ] + ], + 'employee' => [ + 'dashboard', 'announcements', 'holidays', 'calendar', 'attendance_records', 'leave_applications', 'payslips', 'awards', 'trips', 'complaints', 'meetings', 'hr_documents', 'employee_contracts', 'assets', 'employee-trainings', 'employee_goals', 'employee_reviews', 'document_acknowledgments' + ], ]; diff --git a/database/seeders/RestrictEmployeeRoleSeeder.php b/database/seeders/RestrictEmployeeRoleSeeder.php new file mode 100644 index 000000000..7160d6468 --- /dev/null +++ b/database/seeders/RestrictEmployeeRoleSeeder.php @@ -0,0 +1,92 @@ +get(); + + foreach ($roles as $role) { + $this->command->info("Restricting permissions for role: {$role->name} (ID: {$role->id}, Company: {$role->company_id})"); + + // Filter only permissions that actually exist in the database + $validPermissions = Permission::whereIn('name', $employeePermissions)->pluck('name')->toArray(); + + // Sync permissions (this removes old ones and adds new ones) + $role->syncPermissions($validPermissions); + } + + $this->command->info('Done! All employee roles have been restricted.'); + } +} diff --git a/public/uploads/media/avatars/avatar_1776062912.jpg b/public/uploads/media/avatars/avatar_1776062912.jpg new file mode 100644 index 000000000..928f20fbf Binary files /dev/null and b/public/uploads/media/avatars/avatar_1776062912.jpg differ diff --git a/resources/js/components/app-sidebar.tsx b/resources/js/components/app-sidebar.tsx index 9dcd946a7..ae3d46c4b 100755 --- a/resources/js/components/app-sidebar.tsx +++ b/resources/js/components/app-sidebar.tsx @@ -74,11 +74,7 @@ export function AppSidebar() { icon: Settings, }, - { - title: t('Currency'), - href: route('currencies.index'), - icon: DollarSign, - }, + { title: t('Referral Program'), href: route('referral.index'), diff --git a/routes/web.php b/routes/web.php index 4bae04af6..809ee2e68 100644 --- a/routes/web.php +++ b/routes/web.php @@ -136,7 +136,9 @@ use App\Http\Controllers\ChatGptController; use Illuminate\Support\Facades\Route; use Inertia\Inertia; -Route::get('/', [LandingPageController::class, 'show'])->name('home'); +Route::get('/', function () { + return redirect()->route('login'); +})->name('home'); // Public form submission routes