【问题标题】:Spatie Laravel Permission assign a role did not workSpatie Laravel 权限分配角色不起作用
【发布时间】:2022-10-20 16:16:02
【问题描述】:

我将 Laravel 8 与 Jetstream 一起使用。我的网站有用户。这些用户与许多机构相关,因此他们在站点内具有不同的角色,因此我制作了一个播种器,在其中创建角色和用户以及机构;一切都很好。我在刀片视图中使用指令@can 向不同角色显示和隐藏信息。尽管如此,这里它没有显示任何内容。尽管我与管理员在一起,但它并没有显示它应该显示的内容。

模型

class UserInstitutions extends Model
{
    use HasFactory;
    use HasRoles;

    protected $primaryKey  = 'user_id';
    public $incrementing = false;
    protected $guard_name = 'web';

    public function user() {
        return $this->belongsTo(User::class);
    }

    public function institution() {
        return $this->belongsTo(Institution::class,'institution_id_f');
    }
}

播种机

class RoleSeeder extends Seeder
{
    public function run()
    {
        $admin = Role::create(['name' => 'Administrador']);
        $titular = Role::create(['name' => 'Titular']);
        $coor = Role::create(['name' => 'Coordinador']);
        $subcoor = Role::create(['name' => 'SubCoordinador']);
        $int = Role::create(['name' => 'Integrante']);

        Permission::create(['name' => 'home.dashboard']);
        Permission::create(['name' => 'dashboard']);
        Permission::create(['name' => 'institution.index']);
        Permission::create(['name' => 'institution.create']);
        Permission::create(['name' => 'institution.update']);
        Permission::create(['name' => 'institution.delete']);

        $admin->syncPermissions(Permission::all());
        $coor->givePermissionTo('institution.index');
        $coor->givePermissionTo('institution.create');
    }
}

我分配角色的播种机

class UserInstitutionSeeder extends Seeder
{
    public function run()
    {
        $institution = Institution::all()->random();
        $user = User::all()->random();

        UserInstitutions::create([
            'user_id' => $user->id,
            'institution_id_f' => $institution->id,
            'institution_id' => $institution->institution_id,
            'email' => 'pcoordinador@gob.sv',
            'landline_phone_number' => '74859632',
            'start_date' => now(),
            'active' => 'S',
        ])->assignRole('Administrador');

        UserInstitutions::factory(5)->create();
    }
}

如果我检查表中的数据,则正在分配角色 enter image description here

【问题讨论】:

    标签: laravel-8 jetstream


    【解决方案1】:

    您可能有缓存问题,您可以在 run() 方法中的播种器类中添加此行

    app()[SpatiePermissionPermissionRegistrar::class]->forgetCachedPermissions();
    

    如果您已经有该用户的会话,则可以从命令行清除缓存:

    php artisan permission:cache-reset
    

    或者

    php artisan cache:clear
    

    https://spatie.be/docs/laravel-permission/v5/basic-usage/artisan#content-resetting-the-cache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2020-07-17
      • 2020-03-31
      • 2021-08-26
      相关资源
      最近更新 更多