权限用户和角色

时间:2018-05-18 11:33:32

标签: php laravel laravel-5

我需要一些建议,基本上我有一个用户可以注册为普通客户的应用程序,并且在仪表板内部有一个选项可以注册为类别列表的作者。客户可以是很多作者。

所以基本上在自定义仪表板中注册/订阅作者之后,他会创建一个他创作的作者的盒子,点击它后会转到带有不同菜单的特定仪表板等。

我唯一的问题是当我开始创建权限时,例如我创建了一个名为“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');
});

所以我需要做的第二个验证是在控制器内部,如果这个作者ID属于客户/用户,我需要根据ID进行检查。

示例:

 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');
    }

我觉得粘贴这个代码并检查这个作者是否属于用户并不觉得很干净,有没有比在每个页面控制器中粘贴这个代码更好的方法,我试图访问作者的私有区域? / p>

或者即使你们觉得有一种完全不同的做法,我仍然愿意接受它。

1 个答案:

答案 0 :(得分:2)

您可以创建另一个中间件并在那里进行检查,类似于您创建的 author 中间件。像这样:

async