Blade directives | laravel-permission | Spatie

 SPATIE

  Laravel Permission
=====================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-permission](https://spatie.be/docs/laravel-permission/v3)  Basic-usage  Blade directives

 Version   v7   v6   v5   v4   v3

 Other versions for crawler [v7](https://spatie.be/docs/laravel-permission/v7) [v6](https://spatie.be/docs/laravel-permission/v6) [v5](https://spatie.be/docs/laravel-permission/v5) [v4](https://spatie.be/docs/laravel-permission/v4) [v3](https://spatie.be/docs/laravel-permission/v3)

  Blade directives
- [ Introduction ](https://spatie.be/docs/laravel-permission/v3/introduction)
- [ Support us ](https://spatie.be/docs/laravel-permission/v3/support-us)
- [ Prerequisites ](https://spatie.be/docs/laravel-permission/v3/prerequisites)
- [ Installation in Laravel ](https://spatie.be/docs/laravel-permission/v3/installation-laravel)
- [ Installation in Lumen ](https://spatie.be/docs/laravel-permission/v3/installation-lumen)
- [ Upgrading ](https://spatie.be/docs/laravel-permission/v3/upgrading)
- [ Questions and issues ](https://spatie.be/docs/laravel-permission/v3/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-permission/v3/changelog)
- [ About us ](https://spatie.be/docs/laravel-permission/v3/about-us)

Basic Usage
-----------

- [ Basic Usage ](https://spatie.be/docs/laravel-permission/v3/basic-usage/basic-usage)
- [ Direct Permissions ](https://spatie.be/docs/laravel-permission/v3/basic-usage/direct-permissions)
- [ Using permissions via roles ](https://spatie.be/docs/laravel-permission/v3/basic-usage/role-permissions)
- [ Wildcard permissions ](https://spatie.be/docs/laravel-permission/v3/basic-usage/wildcard-permissions)
- [ Blade directives ](https://spatie.be/docs/laravel-permission/v3/basic-usage/blade-directives)
- [ Defining a Super-Admin ](https://spatie.be/docs/laravel-permission/v3/basic-usage/super-admin)
- [ Using multiple guards ](https://spatie.be/docs/laravel-permission/v3/basic-usage/multiple-guards)
- [ Using artisan commands ](https://spatie.be/docs/laravel-permission/v3/basic-usage/artisan)
- [ Using a middleware ](https://spatie.be/docs/laravel-permission/v3/basic-usage/middleware)
- [ Example App ](https://spatie.be/docs/laravel-permission/v3/basic-usage/new-app)

Best Practices
--------------

- [ Roles vs Permissions ](https://spatie.be/docs/laravel-permission/v3/best-practices/roles-vs-permissions)
- [ Model Policies ](https://spatie.be/docs/laravel-permission/v3/best-practices/using-policies)
- [ Performance Tips ](https://spatie.be/docs/laravel-permission/v3/best-practices/performance)

Advanced usage
--------------

- [ Testing ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/testing)
- [ Database Seeding ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/seeding)
- [ Exceptions ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/exceptions)
- [ Extending ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/extending)
- [ Cache ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/cache)
- [ UUID ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/uuid)
- [ Extending PhpStorm ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/phpstorm)
- [ Other ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/other)
- [ Timestamps ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/timestamps)
- [ UI Options ](https://spatie.be/docs/laravel-permission/v3/advanced-usage/ui-options)

      You are viewing the documentation for **an older version** of this package. You can check the version you are using with the following command:

 `                                    composer show spatie/laravel-permission                                                                                                                                                                                                                                    `

Blade directives
================

###  On this page

1. [ Permissions ](#content-permissions)
2. [ Roles ](#content-roles)

Permissions
-----------------------------------------------------------------------------------------

This package doesn't add any **permission**-specific Blade directives. Instead, use Laravel's native `@can` directive to check if a user has a certain permission.

```
@can('edit articles')
  //
@endcan
```

or

```
@if(auth()->user()->can('edit articles') && $some_other_condition)
  //
@endif
```

You can use `@can`, `@cannot`, `@canany`, and `@guest` to test for permission-related access.

Roles
-----------------------------------------------------------------------

As discussed in the Best Practices section of the docs, **it is strongly recommended to always use permission directives**, instead of role directives.

Additionally, if your reason for testing against Roles is for a Super-Admin, see the *Defining A Super-Admin* section of the docs.

If you actually need to test for Roles, this package offers some Blade directives to verify whether the currently logged in user has all or any of a given list of roles.

Optionally you can pass in the `guard` that the check will be performed on as a second argument.

#### Blade and Roles

Check for a specific role:

```
@role('writer')
    I am a writer!
@else
    I am not a writer...
@endrole
```

is the same as

```
@hasrole('writer')
    I am a writer!
@else
    I am not a writer...
@endhasrole
```

Check for any role in a list:

```
@hasanyrole($collectionOfRoles)
    I have one or more of these roles!
@else
    I have none of these roles...
@endhasanyrole
// or
@hasanyrole('writer|admin')
    I am either a writer or an admin or both!
@else
    I have none of these roles...
@endhasanyrole
```

Check for all roles:

```
@hasallroles($collectionOfRoles)
    I have all of these roles!
@else
    I do not have all of these roles...
@endhasallroles
// or
@hasallroles('writer|admin')
    I am both a writer and an admin!
@else
    I do not have all of these roles...
@endhasallroles
```

Alternatively, `@unlessrole` gives the reverse for checking a singular role, like this:

```
@unlessrole('does not have this role')
    I do not have the role
@else
    I do have the role
@endunlessrole
```

 A good
match?
-------------

### What we do best

- All things Laravel
- Custom frontend components
- Building APIs
- AI-powered features
- Simplifying things
- Clean solutions
- Integrating services

### Not our cup of tea

- WordPress themes
- Cutting corners
- Free mockups to win a job
- "Just execute the briefing"

 In short: we'd like to be a **substantial part** of your project.

 [ Get in touch via email ](mailto:info@spatie.be?subject=A%20good%20match%21&body=Tell%20us%20as%20much%20as%20you%20can%20about%0A-%20your%20online%20project%0A-%20your%20planning%0A-%20your%20budget%0A-%20%E2%80%A6%0A%0AAnything%20that%20helps%20us%20to%20start%20straightforward%21)
