Какой вы используете RBAC для laravel 5.3?

Есть ли рабочие Open source проекты RBAC для Laravel 5.3 ? наткнулся на два репо 1: https://github.com/klaravel/ntrust, 2 https://github.com/DynamicCodeNinja/RBAC
Но в обеих встречаются ошибки при установки.
  • Вопрос задан
  • 1730 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
Из коробки очень даже гибко все получается.
Только от генератора Policy я отказался, и все валидации через контракт Gate в FormRequest в методе authorize.
Как-то так все получается.

// form request
<?php

namespace App\Http\Requests\User;

use App\Models\User;
use Illuminate\Contracts\Auth\Access\Gate;
use Illuminate\Foundation\Http\FormRequest;

class DestroyRequest extends FormRequest
{
    public function authorize(Gate $gate)
    {
        $id = $this->route()->getParameter('user');

        return $gate->authorize('destroy', User::query()->findOrFail($id));
    }

    public function rules()
    {
        return [

        ];
    }
}


// controller
<?php

namespace App\Http\Controllers\Api;

use App\Contracts\IUsersService;
use App\Http\Controllers\Controller;
use App\Http\Requests\User\DestroyRequest;
use App\Http\Requests\User\IndexRequest;

class UsersController extends Controller
{
    public function destroy(DestroyRequest $request, $id)
    {
        // do stuff
    }
}


// policy
<?php

namespace App\Policies;

use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;

class UserPolicy
{
    use HandlesAuthorization;

    public function index()
    {
        return true;
    }

    /**
     * rbac:user.destroy
     */
    public function destroy(User $user, User $entity)
    {
        if ($entity->hasRole(User::ROLE_ROOT)) {
            return false;
        }

        return $user->isEditor();
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@assets
Back-end developer
Entrust устарел. Лучше https://github.com/santigarcor/laratrust тоже самое и отлично работает в последних версиях
Ответ написан
Комментировать
DJZT
@DJZT
Laravel - code for you
Ответ написан
Комментировать
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Используйте https://github.com/Zizaco/entrust
На последних версиях ларавела может быть ошибка, надо в миграции прописать таблицу пользователей вручную.
Ответ написан
Комментировать
@grigoralex
Можно попробовать вот этот вариант https://github.com/itstructure/laravel-rbac
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы