Use Gates for global permission checks, and Policies for model-specific authorization. ```php // app/Providers/AuthServiceProvider.php use App\Models\User; use Illuminate\Support\Facades\Gate; public function boot(): void { Gate::before(fn (User $user) => $user->isAdmin() ? true : null ); Gate::define('admin', fn (User $user): bool => $user->isAdmin() ); Gate::define('publish-posts', fn (User $user): bool => $user->can_publish ); } ``` Check a Gate in a controller: ```php use Illuminate\Suppo...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill laravel-security --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Laravel Security?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-laravel-security-ecd70a34)More formats (shields.io, HTML) on the badges page.
Use Gates for global permission checks, and Policies for model-specific authorization.
```php
// app/Providers/AuthServiceProvider.php
use App\Models\User;
use Illuminate\Support\Facades\Gate;
public function boot(): void
{
Gate::before(fn (User $user) =>
$user->isAdmin() ? true : null
);
Gate::define('admin', fn (User $user): bool =>
$user->isAdmin()
);
Gate::define('publish-posts', fn (User $user): bool =>
$user->can_publish
);
}
```
Check a Gate in a controller:
```php
use Illuminate\Support\Facades\Gate;
if (Gate::allows('publish-posts')) {
// Permission granted
}
Gate::authorize('publish-posts');
```
Use it in Blade:
```blade
@can('admin')
<a href="{{ route('admin.dashboard') }}">Admin dashboard</a>
@endcan
```
For model-bound checks, generate and use a Policy instead:
```bash
php artisan make:policy PostPolicy --model=Post
```
```php
$this->authorize('update', $post);
```
Avoid inline role checks such as `$user->role === 'admin'`; centralize authorization in Gates and Policies.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!