flbxcup/app/Providers/AppServiceProvider.php
2025-06-23 23:12:40 +02:00

69 lines
1.8 KiB
PHP

<?php
namespace App\Providers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Event::listen(function (\SocialiteProviders\Manager\SocialiteWasCalled $event) {
$event->extendSocialite('keycloak', \SocialiteProviders\Keycloak\Provider::class);
});
Blade::if('permission', function ($permission) {
return Auth::check() && Auth::user()->hasPermission($permission);
});
Blade::if('role', function ($role) {
return Auth::check() && Auth::user()->hasRole($role);
});
Blade::if('anyrole', function (...$roles) {
return Auth::check() && Auth::user()->hasAnyRole($roles);
});
Blade::if('allpermissions', function (...$permissions) {
if (!Auth::check()) {
return false;
}
foreach ($permissions as $permission) {
if (!Auth::user()->hasPermission($permission)) {
return false;
}
}
return true;
});
Blade::if('anypermission', function (...$permissions) {
if (!Auth::check()) {
return false;
}
foreach ($permissions as $permission) {
if (Auth::user()->hasPermission($permission)) {
return true;
}
}
return false;
});
}
}