我有一个admins表,其中包含一些列,如id
、admin_type
、name
等。这里我有两种类型的admin_type
:一种是"admin“,另一种是"hod”。
现在的问题是,我希望使用(admin_type == "admin")
登录的管理员能够访问所有的管理员URL,但当admin_type == "hod"
我想限制用户可以访问的URL。
我使用的是Laravel 5.2。有人能帮我解决这个问题吗?
例如,如果使用admin_type=="hod"
的用户访问这些链接
www.example.com/admin/add-user
www.example.com/admin/edit-user
www.example.com/admin/add-customer
www.example.com/admin/edit-customer
和更多的URL,我想显示一些像**You have no rights to access this link **
这样的消息
下面是我的数据库结构:
发布于 2017-03-20 14:34:35
对于这样的用例,我会实现一个Middleware。只需在您的Laravel工作目录中执行php artisan make:middleware yourNameHere
,artisan就会为您生成相应的中间件类。
然后你需要像这样的代码。这是一个简单的if条件,在用户不是admin的情况下使用403中止。
class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user()->admin_type != 'admin') {
return abort(403, "No access here, sorry!");
}
return $next($request);
}
}
您的路由文件( routes /web.php):
...
Route::group(["middleware" => 'admin'], function () {
//Your admin routes should be declared here
});
...
https://stackoverflow.com/questions/42896577
复制相似问题