A very quick update to help someone else who comes across this issue.

When using Laravel Resource Controller with a Policy targeting the User::class model, it's incredibly important to update $this->authorizeResource(...) to use the name of the policy attribute name rather than the name of the controller attribute.

An example is given down below:

Do not do the following if you're implimenting a UserPolicy.php. This is dangerous as it's the default in the Laravel docs:

class UserController extends Controller
{
    /**
     * Create the controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->authorizeResource(User::class, 'user');
    }
UserController
class UserPolicy
{
    use HandlesAuthorization;
    
    public function view(User $user, User $model)
    {
        return $user->uuid === $model->uuid ||
            $user->isAdmin();
    }
UserPolicy.php

Instead use the following:

This is due to the fact that your Policy's target Model is labelled User $model instead of User $user.  

class UserController extends Controller
{
    /**
     * Create the controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->authorizeResource(User::class, 'model');
    }
UserController

Hopefully it saves someone an hour or more ❤️

Using authorizeResource and UserPolicies in Laravel Resource Controllers