Formation PUB030 : Laravel, 2019 Les droits (authorization)

41.2 Vérifier les droits dans une vue


Le système d'autorisations peut également être utilisé dans les vues. En effet, on voudra généralement afficher les boutons de gestion seulement aux usagers qui ont le droit de s'en servir.

Pour y arriver, on utilisera les directives @can et @cannot.

Ex :

Vue Laravel (Blade)

@can('create', App\Produit::class)

   <a class="btn btn-default" href="{{ route('produits.create') }}">Ajouter</a>
@endcan

Dans cet exemple sans instance du modèle, remarquez l'ajout de l'espace de nom devant le nom de la classe. Ceci est nécessaire ici puisqu'il n'y a pas d'instruction use dans une vue.

Les paramètres passés à @can ou @cannot seront les mêmes que si on avait utilisé authorize() dans une méthode d'action.

Il est possible de faire l'équivalent d'un elseif à l'aide de @elsecan.

Ex :

Vue Laravel (Blade)

@can('edit', $produit)
    <a href="{{ route('produits.edit', [$produit->id]) }}">

        <img src="{{ asset('medias/commun/Editer.svg') }}" alt="Éditer" title="Éditer ce produit"/>

    </a>
@elsecan('...', $produit)
    ...

@endcan

Si vous devez faire l'équivalent d'un else, il vous faudra utiliser @cannot.

Ex :

Vue Laravel (Blade)

@can('edit', $produit)
    <a href="{{ route('produits.edit', [$produit->id]) }}">

        <img src="{{ asset('medias/commun/Editer.svg') }}" alt="Éditer" title="Éditer ce produit"/>

    </a>
@endcan

@cannot('edit', $produit)
    <img src="{{ asset('medias/commun/Editer-Desactive.svg') }}" alt="Ne peut pas être édité" title="Ce produit ne peut pas être édité car ..."/>

@endcan

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre