Files
landing-api/app/Providers/AuthServiceProvider.php
Josep Piguillem 3897113313 Initial commit: Pireon Admin — headless admin panel and public API
Laravel 13 + Filament 5 admin panel and REST API for a non-profit developer
collective, backed by the Pireon OAuth identity server. The public site is a
separate, server-rendered application consuming /api/public/v1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 17:55:27 +02:00

75 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Providers;
use App\Models\Application;
use App\Models\Call;
use App\Models\Category;
use App\Models\Client;
use App\Models\Media;
use App\Models\Member;
use App\Models\MissingUrl;
use App\Models\Page;
use App\Models\Project;
use App\Models\Redirect;
use App\Models\Repository;
use App\Models\Service;
use App\Models\Talk;
use App\Models\Technology;
use App\Models\Testimonial;
use App\Models\User;
use App\Policies\ApplicationPolicy;
use App\Policies\CallPolicy;
use App\Policies\CategoryPolicy;
use App\Policies\ClientPolicy;
use App\Policies\MediaPolicy;
use App\Policies\MemberPolicy;
use App\Policies\MissingUrlPolicy;
use App\Policies\PagePolicy;
use App\Policies\ProjectPolicy;
use App\Policies\RedirectPolicy;
use App\Policies\RepositoryPolicy;
use App\Policies\RolePolicy;
use App\Policies\ServicePolicy;
use App\Policies\TalkPolicy;
use App\Policies\TechnologyPolicy;
use App\Policies\TestimonialPolicy;
use App\Policies\UserPolicy;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;
use Spatie\Permission\Models\Role;
class AuthServiceProvider extends ServiceProvider
{
public function boot(): void
{
Gate::policy(Page::class, PagePolicy::class);
Gate::policy(Category::class, CategoryPolicy::class);
Gate::policy(Project::class, ProjectPolicy::class);
Gate::policy(Member::class, MemberPolicy::class);
Gate::policy(Technology::class, TechnologyPolicy::class);
Gate::policy(Call::class, CallPolicy::class);
Gate::policy(Application::class, ApplicationPolicy::class);
Gate::policy(Service::class, ServicePolicy::class);
Gate::policy(Client::class, ClientPolicy::class);
Gate::policy(Testimonial::class, TestimonialPolicy::class);
Gate::policy(Talk::class, TalkPolicy::class);
Gate::policy(Media::class, MediaPolicy::class);
Gate::policy(Redirect::class, RedirectPolicy::class);
Gate::policy(MissingUrl::class, MissingUrlPolicy::class);
Gate::policy(Repository::class, RepositoryPolicy::class);
Gate::policy(User::class, UserPolicy::class);
Gate::policy(Role::class, RolePolicy::class);
// Super admins bypass every permission check. Granting the role this
// way rather than by attaching every permission means the role can
// never fall behind as the catalogue grows.
//
// Returning null (not false) when the role is absent is important: it
// lets the normal policy chain run instead of short-circuiting it.
Gate::before(fn (User $user, string $ability) => $user->hasRole('super_admin') ? true : null);
}
}