Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 17.03.2015 16:31:34

Роли и права пользователей

Начал изучать ларавел и возник вопрос по настройке ролей и прав пользователей, может кто подскажет какой-нибудь толковый пакет для этих целей?

Изменено Johnson (17.03.2015 16:31:53)

Не в сети

#2 18.03.2015 08:15:58

Не в сети

#3 18.03.2015 09:30:57

Re: Роли и права пользователей

Спасибо, а вы сами какой используете?
И кто-нибудь что-нибудь знает о пакете https://github.com/rydurham/Sentinel
Вроде как он основан на cartalyst/sentry ?

Не в сети

#4 18.03.2015 11:54:05

Re: Роли и права пользователей

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

Не в сети

#5 18.03.2015 12:22:51

Re: Роли и права пользователей

Ну насколько я понял rydurham/Sentinel - это отличный пакет от cartalyst/Sentinel, просто он расширяет функционал cartalyst/sentry.
А как у сентри с локализацией?
Есть ли где пример реализации сентри, где рассмотрены не аутентификация и регистрация пользователей, а именно права пользователей и группы?

Не в сети

#6 25.03.2015 16:42:53

Re: Роли и права пользователей

Пока остановился на https://github.com/Zizaco/entrust/tree/laravel-5
Вроде все нормально, вместо фильтров использовал middleware, т.к. теперь фильтры в роутах вроде не используются?

Не в сети

#7 26.03.2015 07:45:54

Re: Роли и права пользователей

фильтры работают, но в целом - да, надо использовать middleware.

Не в сети

#8 26.03.2015 10:57:53

Re: Роли и права пользователей

Как запретить пользователям кроме админа управление пользователями(просмотр, редактирование, обновление, удаление), но при это разрешить пользователю редактировать свой собственный профиль?
Есть пока две группы пользователей: 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)

Не в сети

#9 26.03.2015 13:16:01

Re: Роли и права пользователей

как раз для этого предназначен метод authorize в формреквестах. миддлварь авторизует пользователей на уровне маршрутов, а формреквест — на уровне доступа к конкретным элементам. тогда у пользователя должна быть своя ссылка на /users/{id} по которой он может перейти к редактированию себя, а при обращении к чужому id получить 401.

Не в сети

#10 26.03.2015 13:51:55

Re: Роли и права пользователей

В документации по валидации наткнулся как раз на контроль доступа, переписал в 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)

Не в сети

#11 03.09.2015 14:35:55

Re: Роли и права пользователей

В версии 5.1.11 появились authorization and policies, стоит ли теперь отказываться от сторонних пакетов, типаcartalyst/sentry, Zizaco/entrust?

Не в сети

#12 03.09.2015 17:43:07

stuchin
Откуда: Волгоград
Сообщений: 68

Re: Роли и права пользователей

а если для редактирования профилей сделать отдельный контроллер типа ProfileController
доступ к нему сделать на основе
id пользователя, должно получится

Не в сети

#13 04.09.2015 11:48:41

Re: Роли и права пользователей

Наверно Gate можно использовать, чтобы заменить права пользователей(Permissions), и отдельно добавить таблицы ролей пользователей, тогда можно будет отказаться от вышеупомянутых пакетов.

Не в сети

#14 07.09.2016 11:42:49

Re: Роли и права пользователей

Тема годовалой давности, но тоже этот вопрос интересовал, поэтому решил поделиться хорошим видеоуроком где без использования пакетов показывают как создать доступы и роли из коробки - https://laracasts.com/series/whats-new- … pisodes/16

Не в сети

#15 22.08.2017 16:58:02

Re: Роли и права пользователей

я новичок!
Дурацкий вопрос, но я реально не понимаю пока что.

как их посмотреть в действии?
нужно это склонировать к себе в проект? (не сломается ли чего, как потом вернуть назад?)
или в отдельную папку (добавить имя нового прлиожения, хост) и оно от туда запускается?  или как?

есть ли где на форуме посмотреть кастомную реализацию админки, без сторонних пакетов ?
пусть это будет велосипед, но зато тренажер для начинающих)

Изменено sam (22.08.2017 17:47:07)

Не в сети

Подвал раздела