Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Начал изучать ларавел и возник вопрос по настройке ролей и прав пользователей, может кто подскажет какой-нибудь толковый пакет для этих целей?
Изменено Johnson (17.03.2015 16:31:53)
Не в сети
Не в сети
Спасибо, а вы сами какой используете?
И кто-нибудь что-нибудь знает о пакете https://github.com/rydurham/Sentinel
Вроде как он основан на cartalyst/sentry ?
Не в сети
я работал с сентри. сентинел - это дальнейшее развитие сентри, но что-то я с ним не понял в плане лицензирования. сам карталист в блоге пишет, что он у них за деньги.
Не в сети
Ну насколько я понял rydurham/Sentinel - это отличный пакет от cartalyst/Sentinel, просто он расширяет функционал cartalyst/sentry.
А как у сентри с локализацией?
Есть ли где пример реализации сентри, где рассмотрены не аутентификация и регистрация пользователей, а именно права пользователей и группы?
Не в сети
Пока остановился на https://github.com/Zizaco/entrust/tree/laravel-5
Вроде все нормально, вместо фильтров использовал middleware, т.к. теперь фильтры в роутах вроде не используются?
Не в сети
фильтры работают, но в целом - да, надо использовать middleware.
Не в сети
Как запретить пользователям кроме админа управление пользователями(просмотр, редактирование, обновление, удаление), но при это разрешить пользователю редактировать свой собственный профиль?
Есть пока две группы пользователей: admin и editor, в routes прописано:
Route::resource('users', 'UserController');
В UserController:
public function __construct()
{
$this->middleware('role');
}
В Middleware/Role.php прописано:
if( ! Auth::user()->hasRole('admin'))
{
return redirect('/');
}
В результате управлять пользователями могут только админы, но как дать доступ для редактирования своего профиля пользователю?
Прописать другой маршрут? Или есть еще варианты?
Изменено Johnson (26.03.2015 10:58:16)
Не в сети
как раз для этого предназначен метод authorize в формреквестах. миддлварь авторизует пользователей на уровне маршрутов, а формреквест — на уровне доступа к конкретным элементам. тогда у пользователя должна быть своя ссылка на /users/{id} по которой он может перейти к редактированию себя, а при обращении к чужому id получить 401.
Не в сети
В документации по валидации наткнулся как раз на контроль доступа, переписал в UserController
$this->middleware('role', ['except' => ['edit', 'update']]);
В UserUpdateRequest прописал секцию authorize так:
public function authorize()
{
if(\Auth::user()->hasRole('admin')) return true;
elseif ($this->route('users') == \Auth::id()) return true;
}
Теперь у пользователя появился доступ к редактированию и обновлению своих данных, при этом можно спокойно открыть для редактирования данные другого пользователя, зная его id, данные при этом не сохраняются т.к. id не совпадают, но это все равно не правильно показывать данные других пользователей.
Как ограничить доступ к экшену edit контроллера UserController чтобы пользователи могли редактировать только свои данные?
Пока решил записью в контроллере UserController в функции edit добавлением строки:
if (!\Auth::user()->hasRole('admin') && \Auth::id() != $id) return redirect('/');
А на уровне middleware нельзя как нибудь это решить или и этот способ сойдет?
Изменено Johnson (26.03.2015 14:01:01)
Не в сети
В версии 5.1.11 появились authorization and policies, стоит ли теперь отказываться от сторонних пакетов, типаcartalyst/sentry, Zizaco/entrust?
Не в сети
а если для редактирования профилей сделать отдельный контроллер типа ProfileController
доступ к нему сделать на основе
id пользователя, должно получится
Не в сети
Наверно Gate можно использовать, чтобы заменить права пользователей(Permissions), и отдельно добавить таблицы ролей пользователей, тогда можно будет отказаться от вышеупомянутых пакетов.
Не в сети
Тема годовалой давности, но тоже этот вопрос интересовал, поэтому решил поделиться хорошим видеоуроком где без использования пакетов показывают как создать доступы и роли из коробки - https://laracasts.com/series/whats-new- … pisodes/16
Не в сети
я новичок!
Дурацкий вопрос, но я реально не понимаю пока что.
как их посмотреть в действии?
нужно это склонировать к себе в проект? (не сломается ли чего, как потом вернуть назад?)
или в отдельную папку (добавить имя нового прлиожения, хост) и оно от туда запускается? или как?
есть ли где на форуме посмотреть кастомную реализацию админки, без сторонних пакетов ?
пусть это будет велосипед, но зато тренажер для начинающих)
Изменено sam (22.08.2017 17:47:07)
Не в сети
Страницы 1