Почему getAllPermissions() возвращает только одно разрешение?

Использование Laravel с Authи https://github.com/spatie/laravel-permission. У меня есть пользователь с ролью администратора. К этой роли также прикреплены несколько других разрешений.

я отметил 'can:permission_name' а также 'permission:permission_name'промежуточное ПО не работало должным образом, поэтому я начал отладку. Я понял, что$user->getAllPermissions() возвращает только разрешение с наивысшим id. Кроме того, при запуске$user->hasPermissionTo() при других разрешениях, кроме упомянутого ранее, возвращается false.

Я был бы очень признателен за помощь. Кроме того, я попытался очистить кеш.

Функция сеялки:

public function run() {
    $permissions[0] = Permission::create(['guard_name' => 'web', 'name' => 'Access Admin Panel']);
    $permissions[1] = Permission::create(['guard_name' => 'web', 'name' => 'Access Music']);
    $permissions[2] = Permission::create(['guard_name' => 'web', 'name' => 'Edit Database']);
    $permissions[3] = Permission::create(['guard_name' => 'web', 'name' => 'Login']);


    $role[0] = Role::create(['guard_name' => 'web', 'name' => 'Administrator']);
    $role[0]->permissions()->attach($permissions[0]);
    $role[0]->permissions()->attach($permissions[1]);
    $role[0]->permissions()->attach($permissions[2]);
    $role[0]->permissions()->attach($permissions[3]);

    $role[1] = Role::create(['guard_name' => 'web', 'name' => 'VIP']);
    $role[1]->permissions()->attach($permissions[1]);
    $role[1]->permissions()->attach($permissions[2]);
    $role[1]->permissions()->attach($permissions[3]);

    $role[2] = Role::create(['guard_name' => 'web', 'name' => 'Trusted']);
    $role[2]->permissions()->attach($permissions[2]);
    $role[2]->permissions()->attach($permissions[3]);

    $role[3] = Role::create(['guard_name' => 'web', 'name' => 'User']);
    $role[3]->permissions()->attach($permissions[3]);

    $role[4] = Role::create(['guard_name' => 'web', 'name' => 'Disabled']);


    $admin = User::create(['name' => 'Gandalfsdottir', 'email' => 'my@email.com', 'password' => Hash::make('demo')]);
    $admin->markEmailAsVerified();
    $admin->assignRole('Administrator');

    $demo = User::create(['name' => 'Demo', 'email' => 'my@secondemail.fr', 'password' => Hash::make('demo')]);
    $demo->markEmailAsVerified();
    $demo->assignRole('User');
}

0 ответов

Другие вопросы по тегам