Apparence
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'extension | Mécanique |
|---|---|---|
| réagir à la création d'un compte | UserRegistered | événements |
| réagir à un changement d'e-mail | UserEmailChanged | événements |
| ajouter une autorisation custom | Gate::define(...) | conteneur / Laravel |
| ajouter un rôle ou une permission | AccessControlRegistry | registres |
| changer la résolution du panier selon le compte | CurrentCartResolver | ré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.