2015-04-30 2 views
4

Я использую Laravel 5 для разработки приложения, и я хотел бы назначать роли и разрешения пользователям, использующим Zizaco/Entrust. Для лучшего понимания позвольте мне привести пример:Назначить разрешение пользователю, а не роли с использованием Entrust в Laravel 5

У меня есть 4 роли в моем db: guest, user, admin, owner. Владелец имеет полный доступ на панели администрирования и на главном сайте, администратор имеет ограниченный доступ к панели администрирования и полный на основном сайте, пользователи должны иметь пользовательский доступ на главном сайте, а гости не должны иметь доступа вообще (застряли на главной странице, пока не будет предоставлена ​​роль пользователя).

Проблема, с которой я столкнулся, - это пользовательский доступ к пользователям. Имея 4 основные страницы, пользователи должны запрашивать разрешения для одного или нескольких из них. На главной странице они могут загружать файлы и делать некоторые другие вещи.

Что я хочу сделать, это дать им всю роль пользователя, но, например, пользователь А имеет разрешение на ТОЛЬКО просмотр страницы 1, будучи не в состоянии загрузить файлы или какие-либо другие вещи, пользователь B имеет разрешение на просмотр Страница 3 и Страница 4, загружайте файлы только на страницу 3 и делайте другие вещи, кроме загрузки файлов. Думаю, у вас есть картина.

Это можно сделать только с помощью Entrust, или я должен создать новую сводную таблицу между пользователями и разрешениями и работать с ней, чтобы выполнить то, что мне нужно?

Большое спасибо заранее,

Драгошу

Edit: Что я ранее думал только о том, что дает им множество ролей, таких как «зритель-к-странице-один», "uploader- to-page-one "," viewer-to-page-2 "и т. д., но тогда таблица разрешений будет совершенно бесполезна в моем db.

В заключение, что я хочу сделать, когда пользователь с правами только для чтения Page 1 и Page 2 бревен, я хочу следующие данные в сессии:

['id'->1,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','view-page-2']] 

Таким образом, он может только view Page 1 и Page 2, но не загружать файлы или что-либо еще.

И когда пользователь с точки зрения и загружать файлы разрешения на страницу 1 журналы, я хочу:

['id'->2,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','upload-to-page-1']] 

Таким образом, он может только просматривать страницу 1 и загружать файлы на странице 1.

ответ

1

Это может немного опоздать, отвечая на этот вопрос, но это только для тех, кто приходит на эту страницу.

Ну, если честно, вы совершенно правы в том, что таблица разрешений бесполезна. Если кто-то строит сайт с нуля, он будет адаптировать систему в соответствии с его потребностями. Мне действительно нравится доверять, и причина, по которой поручение не имеет этой функции, заключается в том, что назначение разрешений непосредственно пользователям - это плохая архитектура дизайна. Единственная причина, по которой существует таблица разрешений, - это только приложение малого размера. Случаи, когда у вас есть один ресурс, и все роли фактически используют один и тот же ресурс. В этих случаях вместо проверки для каждого пользователя вы можете просто проверить разрешение. Но в практическом средстве/большом приложении у вас будут отдельные контроллеры для каждой роли.

Смежные вопросы