Как использовать пакет Authority для Laravel
После некоторых поисков я успешно установил пакет Authority-l4 для использования в моем проекте Laravel. Документы понятные, но небольшие (не так много информации / примеров). Вот как мой конфигурационный файл выглядит как atm:
return array[
'initialize' => function($authority) {
$user = $authority->getCurrentUser();
$authority->addAlias('manage', ['create', 'read', 'update', 'delete']);
if($user->hasRole('admin')) {
//Admin can manage all resources
$authority->allow('manage', 'all');
}
// User can manage his own post
Authority::allow('manage', 'User', function($self, $user){
return $self->getCurrentUser()->id === $user->id;
});
// User can manage his own post
Authority::allow('manage', 'Post', function($self, $post){
return $self->getCurrentUser()->id === $post->id;
});
}
];
У меня есть несколько вопросов по этому поводу:
- Как добавить роль пользователю?
hasRole()
существует, почему бы и нетsetRole()
? - Я заметил, что ничего не сохраняется в базе данных, не лучше ли?
- Как я могу использовать свою базу данных с полномочиями? Может ли кто-нибудь дать мне преимущество, я бьюсь уже четыре часа.
- В некоторых статьях говорится, что класс
Role
должно быть изменено, чтобы иметь много разрешений вместо пользователя, имеющего много разрешений, разве это не лучше?
Вероятно, я думаю, что сложно об этом пакете, поиск в Интернете тоже не поможет. Любая помощь приветствуется!
1 ответ
Я - автор Authority, и я поддерживаю Authority-14, хотя он был написан в основном Конаром Уэлшем.
- Поскольку роли, как определено в пакете, являются просто отношением Eloquent, вы можете просто добавить их, как и любое другое отношение в Eloquent.
- Понятия не имею, о чем ты здесь спрашиваешь, можешь перефразировать?
- Можете ли вы уточнить вопрос, выходящий за рамки того, что находится в readme (часть чуть выше общего использования)?
- Вероятно - либо работает. Вам не нужно использовать эту структуру, чтобы использовать Authority-l4. Это просто дополнительная структура, которую вы можете настроить на 100% по своему усмотрению. Лично я не использую это вообще, а просто использую созданный им фасад Authority. Большинство моих разрешений не хранятся в БД, хотя это играет важную роль.
Идея, стоящая за властью, заключается в том, что она не зависит от реализации. Это действительно не волнует, где вы храните ваши данные, вам просто нужно сообщить властям, что делать с вашими правилами. Чтение раздела readme, на который есть ссылки выше, и readme, посвященного репозиторию ядра Authority, должны дать вам общее представление о том, как он ожидает, что информация будет загружена - все, что остается на ваше усмотрение.