I would like to map a model to a policy of a different name. It used to be done in AuthServiceProvider.php:
protected $policies = [
'App\Models\Model' => 'App\Policies\ModelPolicy',
];
But now there is no AuthServiceProvider.php in Laravel 11.
I have read that it can be done in bootstrap\app.php but I have not been able to find out how to do this. If anyone knows how that would be great.
In laravel 11, the policies are auto discovered based on the naming conventions. So if you have a UserPolicy
, then it will be automatically mapped to the User
model. Make sure you keep your policies in either app/Models/Policies
or app/Policies
directory.
If are not following the above name/directory conventions, then you can manually register the policies in the boot
method of your AppServiceProvider
.
See the below example on how to manually register the policies using Gate
facade. This example is from Laravel Docs.
use App\Models\Order;
use App\Policies\OrderPolicy;
use Illuminate\Support\Facades\Gate;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Gate::policy(Order::class, OrderPolicy::class);
}