Добавление и отзыв разрешения для определенного пользователя c с определенной ролью c - PullRequest
0 голосов
/ 29 января 2020

Я использую этот пакет https://github.com/spatie/laravel-permission для ролей и разрешений. В моем приложении у меня несколько ролей:

  1. Пользователи
  2. Работодатели
  3. Владельцы магазинов
  4. Продавцы

В зависимости от уровня доверия, я хочу, чтобы каждый человек с определенной ролью c имел доступ только к указанным c разрешениям. Для пользователя роли user с идентификатором 7 я хочу, чтобы у него или нее были права editor, «покупки» и никаких других разрешений.

Другой пользователь с идентификатором 65 в той же роли user может иметь права editor, «покупки» 1024 *, «просмотр карт».

Когда я смотрю на документы https://docs.spatie.be/laravel-permission/v3/basic-usage/role-permissions/

может ли пользователь с указанной c ролью получить разрешение, отличное от другого пользователя в той же роли?

Ответы [ 2 ]

2 голосов
/ 29 января 2020

вот так .?

конкретный c роль пользователя и права, которыми вы можете управлять

$user = User::find(7);

$user->assignRole("user"); // assign role to that user

$user->givePermissionTo(['editor','shopping']); // for giving permission to user

$user->revokePermissionTo(['editor','shopping']); // for revoke permission to user

$user = User::find(65);

$user->assignRole("user"); // assign role to that user

$user->givePermissionTo(['editor','shopping','edit profile']); // for giving permission to user

$user->revokePermissionTo(['editor','shopping','edit profile']); // for revoke permission to user

1 голос
/ 29 января 2020

Для этого можно использовать Прямые разрешения .

Из документов:

Разрешение может быть предоставлено любому пользователю:

$user->givePermissionTo('edit articles');

// You can also give multiple permission at once
$user->givePermissionTo('edit articles', 'delete articles');

// You may also pass an array
$user->givePermissionTo(['edit articles', 'delete articles']);

Разрешение может быть отозвано у пользователя:

$user->revokePermissionTo('edit articles');

//Or revoke & add new permissions in one go:    
$user->syncPermissions(['edit articles', 'delete articles']);

В вашем случае:

// assign the role to the user
$user->assignRole('user');

// assign the permissions to the user
$user->givePermissionTo(['editor', 'shopping', 'edit profile', 'view maps']);
...