【发布时间】:2016-06-20 11:43:19
【问题描述】:
在我的网站上
我有一个看起来像 thi 的 InitiatorController
class InitiatorController extends Controller
{
use ExchangerateTrait;
public function __construct(){
$this->middleware('auth');
$this->middleware('role:sales'); // replace 'collector' with whatever role you need.
}
public function getIndex(){
return redirect('initiator/home');
}
}
现在验证后,我正在检查用户角色是否为 sales 或不在 Role middleware 。
我的角色中间件是这样的。
class Role
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $role){
if ($request->user()->role != $role){
if($role=="collector" || $role=="admin" )
return Redirect::to('/');
if($role=="director" || $role=="admin" )
return Redirect::to('/');
if($role=="admin1" || $role=="admin" )
return Redirect::to('/');
if($role=="admin2" || $role=="admin" )
return Redirect::to('/');
if($role=="sales" || $role=="admin" )
return Redirect::to('/');
if($role=="developer" || $role=="admin" )
return Redirect::to('/');
}
return $next($request);
}
}
现在我的角色是director,但他也是一名销售人员,我该如何解决这个问题。
第一个想法 在控制器中
如果我知道如何将一组角色发送到类似这样的中间件
$roles = array('director,sales,teamlead');
$this->middleware('role:$roles');
然后在中间件中我可以像这样检查
if(in_array ($request->user()->role,$roles)){
//do some thing
}
else
{
//redirect to login
}
【问题讨论】:
-
你的意思是如何在中间件中获取多个角色?
-
@Chay22 是的类似的东西,假设在 Initiator 控制器中有一些功能只能由也是销售人员的团队负责人访问,我该如何检查?
标签: php laravel-5.1