繁体   English   中英

权限用户和角色

[英]Permissions User and Roles

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

因此,基本上,在自定义仪表板中注册/订阅了作者后,便会出现一个他创建的作者框,单击该框后,将转到具有不同菜单的特定仪表板,等等。

我唯一的问题是,当我开始创建权限时,例如,我创建了一个名为“作者”的中间件,因此当有人尝试访问这些页面时,它必须是作者。

中间件代码:

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

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

甚至,即使你们觉得做这一切的方式完全不同,我也愿意接受。

您可以制作另一个中间件并在此处进行检查,类似于您创建的作者中间件。 像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM