Подтвердить что ты не робот

Laravel 5 new auth: Получить текущего пользователя и как реализовать роли?

В настоящее время я экспериментирую с новым Laravel 5 и получил аутентификацию для работы (регистрация/вход в систему).

Чтобы получить аутентифицированного пользователя в моем контроллере, я в настоящее время вставляю Guard в действие контроллера:

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;

class ClientController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index(Guard $auth)
    {
        return view('client.index', ['user' => $auth->user()]);
    }
...

Первый вопрос: Это рекомендуемый способ?

Второй вопрос:. Как я могу реализовать какие-то роли/разрешения? Что-то вроде client.edit, client.add,... Предлагает ли Larval 5 какое-то удобство здесь? Как установить необходимую роль/разрешение для действия маршрута/контроллера?

Я думаю, что мне, возможно, понадобится написать свое собственное промежуточное ПО для этого. Любые предложения о том, как подойти к проблеме?

4b9b3361

Ответ 1

Проведя еще немного времени на Laravel 5, я могу ответить на свой вопрос:

Является ли инъекция Guard рекомендуемым способом? Нет: если вам нужно получить доступ к Auth в своем представлении, вы можете сделать это уже следующим образом:

@if( Auth::check() )
    Current user: {{ Auth::user()->name }}
@endif

Это использует фасад Auth. Список всех доступных фасадов находится в config/app.php под aliases:

Что делать, если мне нужно Auth в моем контроллере? Вводится пример экземпляра Guard, как показано в вопросе, но вам не нужно. Вы можете использовать фасад Auth, как это было в шаблоне:

    public function index()
    {
        if(\Auth::check() && \Auth::user()->name === 'Don') {
            // Do something
        }
        return view('client.index');
    }

Имейте в виду, что \ необходим перед именем фасада, поскольку L5 использует пространства имен.

Я хочу иметь разрешения/роли с использованием нового механизма auth в L5: Я реализовал модуль облегченного доступа с использованием нового промежуточного программного обеспечения, он называется Laraguard. Посмотрите на Github и дайте мне знать, что вы думаете: https://github.com/cgrossde/Laraguard

ОБНОВЛЕНИЕ:. Для полноты я хочу упомянуть еще два проекта. Они предоставляют все необходимое для сохранения ролей и разрешений в БД и прекрасно работают вместе с Laraguard или сами по себе:

Ответ 2

Если вы хотите сделать свою собственную аутентификацию, вам нужно сохранить модель User от Laravel 5 со всей зависимостью. После того, как вы сможете войти в свой аккаунт в своем контроллере. Не забудьте поставить (использовать Auth;) после пространства имен вашего контроллера.