Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The given role or permission should use guard `` instead of `web`. -Laravel

I am using a package spatie for user roles and permission. When creating and assigning a role to user, i get the error

The given role or permission should use guard `` instead of web

Below is how i save my data in the controller

What could be causing this issue in my application ?

Controller

  $user = new User;
        $user->firstname = Input::get('firstname');
        $user->lastname = Input::get('lastname');
        $user->login = Input::get('login');
        $user->desc = Input::get('desc');
        $user->email = Input::get('email');
        // $user->group = Input::get('group');
        $user->password = Hash::make(Input::get('password'));
        $user->save();
        $user->assignRole(Input::get('roles'));

config/auth.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\models\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

];
like image 319
Switz Avatar asked Jun 22 '18 08:06

Switz


People also ask

Which guard should be used for the given role or permission?

[BUG] The given role or permission should use guard `sanctum` instead of `web`. · Issue #112 · TiagoSilvaPereira/vemto-issues · GitHub

What should the given role or permission use instead of `web`?

[BUG] The given role or permission should use guard `sanctum` instead of `web`. · Issue #112 · TiagoSilvaPereira/vemto-issues · GitHub Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Why can't I see the permissions of a given role/permission?

The given role or permission should use guard sanctum instead of web. If you refresh the role is created, but you can't see the permissions.

Where are roles and permissions stored?

All these relationships (Users, Roles, Permissions) are all stored in a database and can be changed on the fly and as needed. (1) What is so "bad" about checking Roles for access control?


1 Answers

You should check if in your model there is

protected $guard_name = 'web';

You need to specify the guard name in each model you use the role manager.

Since the roles are related to the guard you can't apply a role to a user with different guard

check the Documentation

like image 126
truffolone Avatar answered Oct 05 '22 18:10

truffolone