Skip to content

Comptes & autorisations

Slab distingue les clients (User / Guest) et l'équipe (accès back-office). Les autorisations s'appuient sur spatie/laravel-permission et des enums.

Par où l'étendre

Je veux…Point d'extensionMécanique
réagir à la création d'un compteUserRegisteredévénements
réagir à un changement d'e-mailUserEmailChangedévénements
ajouter une autorisation customGate::define(...)conteneur / Laravel
ajouter un rôle ou une permissionAccessControlRegistryregistres
changer la résolution du panier selon le compteCurrentCartResolverrésolveurs

Rôles & permissions

Les rôles (UserRole : superadmin, team, customer) et les permissions (Permission) sont des enums. superadmin a tous les droits ; team accède au back-office. Vous ajoutez des gates applicatifs via Gate::define.

Ajouter rôles & permissions depuis un package

Le cœur expose un AccessControlRegistry : il part de ses enums (repli) et agrège vos contributions. Le seed les matérialise (spatie), et vos permissions se vérifient ensuite par $user->can('…') comme celles du cœur — sans jamais éditer les enums.

php
use Slab\Framework\Core\Account\Contracts\AccessControlRegistry;

public function boot(): void
{
    $registry = $this->app->make(AccessControlRegistry::class);
    $registry->defineRole('buyer', ['place_quote']);   // un rôle B2B + sa permission
    $registry->grantToRole('team', 'manage_loyalty');  // une permission greffée sur un rôle du cœur
}

TIP

Le superadmin reste « tous droits » (via un Gate::before) : le registre n'y attache aucune permission. Déclarez vos rôles/permissions au boot ; le seed (db:seed) ou votre migration les posent en base.