Разрешения пользователя и роли - PullRequest
0 голосов
/ 18 мая 2018

Мне нужен совет, в основном у меня есть приложение, в котором пользователи могут регистрироваться как обычные клиенты, а внутри панели инструментов есть возможность зарегистрироваться в качестве автора для получения списка категорий.Заказчиком может быть много авторов.

Таким образом, в основном после регистрации / подписки в качестве автора на пользовательской панели инструментов появляется окно созданных им авторов, а после щелчка он переходит на определенную панель инструментов с другим меню.и т. д.

Моя единственная проблема - когда я начинаю создавать разрешения, например, я создал промежуточное программное обеспечение с именем «author», поэтому, когда кто-то пытается получить доступ к этим страницам, он должен быть автором..

Код промежуточного программного обеспечения:

public function handle($request, Closure $next)
    {

        if(isset($request->id) && auth()->check() && count(auth()->user()->authorsProfile) > 0){
            return $next($request);
        }
        return redirect('/dashboard')->with("error","Only Authors Allowed");
    }

пример:

Route::group(['middleware' => ['auth','author']], function() {
//Dashboard
Route::get('authorsarea/{id}','AuthorController@dashboard')->name('author-dashboard');
});

Итак, вторая проверка, которую мне нужно сделать, находится внутри контроллеров, мне нужно проверить на основеИдентификатор, если этот идентификатор автора принадлежит клиенту / пользователю.

пример:

 public function dashboard($id)
    {

        $user = Auth::user();

        $user_author = Author::find($id);

        if($user_author->user_id != Auth::user()->id){
            return back()->with("error","This Author is not you");
        }

        //Go to dashboard
        return view('frontend.author.dashboard');
    }

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

Или даже если вы, ребята, чувствуете, что естьсовершенно другой способ сделать все это я открыт для этого.

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете создать другое промежуточное программное обеспечение и проверить его там, аналогично созданному вами промежуточному программному обеспечению author .Как то так:

public function handle($request, Closure $next)
{
    $authorID = $request->route()->parameter('id');
    $user_author = Author::find($authorID);

    if($user_author->user_id != auth()->user()->id){
        return back()->with('error', 'This Author is not you');
    }

    return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...