diff --git a/app/Models/User.php b/app/Models/User.php index 1674ff7..f7acc1e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Str; use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Jetstream\HasProfilePhoto; use Laravel\Sanctum\HasApiTokens; @@ -71,6 +72,11 @@ class User extends Authenticatable implements MustVerifyEmail return $this->belongsTo(UserRole::class, 'user_role_id'); } + public function isAdmin(): bool + { + return Str::lower($this->role->name) === 'administrator'; + } + protected function casts(): array { return [ diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..9d28d7a 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Models\User; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -19,6 +21,9 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - // + // This gate determines who can access the Pulse dashboard. + Gate::define('viewPulse', function (User $user) { + return $user->isAdmin(); + }); } } diff --git a/app/Providers/HorizonServiceProvider.php b/app/Providers/HorizonServiceProvider.php index 9811982..376ad84 100644 --- a/app/Providers/HorizonServiceProvider.php +++ b/app/Providers/HorizonServiceProvider.php @@ -3,7 +3,6 @@ namespace App\Providers; use Illuminate\Support\Facades\Gate; -use Laravel\Horizon\Horizon; use Laravel\Horizon\HorizonApplicationServiceProvider; class HorizonServiceProvider extends HorizonApplicationServiceProvider @@ -28,9 +27,7 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider protected function gate(): void { Gate::define('viewHorizon', function ($user) { - return in_array($user->email, [ - // - ]); + return $user->isAdmin(); }); } } diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index 0cbf12d..7b2471b 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -20,6 +20,16 @@ class NovaServiceProvider extends NovaApplicationServiceProvider Nova::withBreadcrumbs(); } + /** + * Get the tools that should be listed in the Nova sidebar. + * + * @return array + */ + public function tools() + { + return []; + } + /** * Register the Nova routes. * @@ -33,6 +43,16 @@ class NovaServiceProvider extends NovaApplicationServiceProvider ->register(); } + /** + * Register any application services. + * + * @return void + */ + public function register() + { + // + } + /** * Register the Nova gate. * @@ -43,9 +63,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider protected function gate() { Gate::define('viewNova', function ($user) { - return in_array($user->email, [ - // - ]); + return $user->isAdmin(); }); } @@ -60,24 +78,4 @@ class NovaServiceProvider extends NovaApplicationServiceProvider new \App\Nova\Dashboards\Main, ]; } - - /** - * Get the tools that should be listed in the Nova sidebar. - * - * @return array - */ - public function tools() - { - return []; - } - - /** - * Register any application services. - * - * @return void - */ - public function register() - { - // - } }