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;});