If you've defined your Gates but want to override all permissions for SUPER ADMIN user, to give that superadmin ALL permissions, you can intercept gates with Gate::before() statement, in AuthServiceProvider.php file.
// Intercept any Gate and check if it's super adminGate::before(function($user, $ability) { if ($user->is_super_admin == 1) { return true; }}); // Or if you use some permissions package...Gate::before(function($user, $ability) { if ($user->hasPermission('root')) { return true; }});
If you want to do something in your Gate when there is no user at all, you need to add a type hint for $user allowing it to be null. For example, if you have a role called Anonymous for your non-logged-in users:
Gate::before(function (?User $user, $ability) { if ($user === null) { $role = Role::findByName('Anonymous'); return $role->hasPermissionTo($ability) ? true : null; } return $user->hasRole('Super Admin') ? true : null;});
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses on Laravel Daily
Laravel 13 Starter Kit Teams and Customizations
10 lessons
33 min
Roles and Permissions in Laravel 13
14 lessons
57 min
Testing in Laravel 13 For Beginners
26 lessons
1 h 41 min read