Как разрешить пользователю-администратору Laravel симулировать или аутентифицировать как любой другой пользователь на моем сайте? - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь выяснить, как быстрее и проще разрешить администратору на сайте, который я создаю, доступ и обновить настройки любого пользователя и т. Д. Например, я написал код для обычного пользователя, чтобы он обновлял свои настройки(и различные другие действия).В идеале я хочу, чтобы администратор мог «быть» этим пользователем в том, что касается моего кода, то есть позволять администратору делать все, что может пользователь, для учетной записи этого пользователя.Есть ли способ сделать это?

Если я использую Auth :: login () от имени администратора, то с точки зрения Laravel я - администратор, а не пользователь, которого они могут захотеть редактировать.Если я войду в систему как пользователь, то у меня не будет прав администратора (что в моем случае означает дополнительное меню администратора на панели навигации с параметрами для приостановки или удаления пользователя или поиска других пользователей).

Любоймысли о том, как это сделать, пожалуйста, или я слишком усложняю вещи?Я ищу определенные функции / код, чтобы позволить это, а не общую стратегию.Я использую Laravel 5.4, развернутый на Heroku.Я знаю, что есть промежуточное программное обеспечение, но, похоже, оно не выполняет то, что я хочу, как указано выше.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

spatie permissions - замечательный пакет, который я использую, чтобы сделать разрешения на ресурсы доступными для супер-администраторов.https://github.com/spatie/laravel-permission

0 голосов
/ 17 сентября 2018

Вы можете сделать это, как предложено в приведенном выше комментарии Тима Льюиса, или вы можете принять свойство «переопределить» на странице редактирования пользователя, где вы можете передать определенный идентификатор пользователя и затем просмотреть страницу как этот пользователь. Например, метод может выглядеть следующим образом:

public function editUser(User $user=null) {
    //User that you want to edit can be provided. If not provided, $user will be null and we will load the user that is currently logged in.
    if($user!=null && Auth::user()->role=='admin')
        $user_to_edit = $user;
    else
        $user_to_edit = Auth::user();

    //other code goes here
}

Затем, если вы передадите объект $ user методу, вам будет предоставлена ​​страница редактирования для этого пользователя, а не для администратора. В противном случае пользователь сможет использовать один и тот же маршрут, чтобы всегда просматривать собственную страницу редактирования.

Будьте очень осторожны с таким кодом! Вы должны убедиться, что не администраторы не имеют возможности загружать пользовательский объект и видеть чужую информацию. Вот почему я добавил проверку $ user-> role в оператор if / else, но вы можете добавить дополнительную безопасность в виде промежуточного программного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...