configureDefaults(); Gate::define( 'administer', fn (User $user): bool => $user->active && $user->hasRole(RoleName::Administrator), ); Gate::define( 'approve-reservations', fn (User $user): bool => $user->active && ($user->hasRole(RoleName::Approver) || $user->hasRole(RoleName::Administrator)), ); Gate::define( 'operate-inventory', fn (User $user): bool => $user->active && ($user->hasRole(RoleName::InventoryOperator) || $user->hasRole(RoleName::Administrator)), ); Gate::define( 'view-global-calendar', fn (User $user): bool => $user->active && ( $user->hasRole(RoleName::Approver) || $user->hasRole(RoleName::InventoryOperator) || $user->hasRole(RoleName::Administrator) || $user->hasRole(RoleName::Auditor) ), ); Gate::define( 'view-reports', fn (User $user): bool => $user->active && ($user->hasRole(RoleName::Administrator) || $user->hasRole(RoleName::Auditor)), ); Gate::define( 'view-audit', fn (User $user): bool => $user->active && ($user->hasRole(RoleName::Administrator) || $user->hasRole(RoleName::Auditor)), ); } /** * Configure default behaviors for production-ready applications. */ protected function configureDefaults(): void { Date::use(CarbonImmutable::class); DB::prohibitDestructiveCommands( app()->isProduction(), ); Password::defaults(fn (): ?Password => app()->isProduction() ? Password::min(12) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised() : null, ); } }