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 :
@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 :
@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 :
@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é