虚心请教各位大佬们一个很常见的问题。
有一个场景,不同的用户登录到后台,权限不同看到的数据就不同。
比如,班主任登录后台,只能看到本班学生的具体信息。年级主任登录后台,有一个下拉框,可以选择某个班,看具体班的信息。
写接口的时候,我是每个接口都去判断了当前用户的角色。虽然功能实现了,但是感觉就很不好,代码都重复了。
然后想着在一个公共控制器或者调用公共方法去获取用户角色,但是感觉还是避免不了在每个接口中都实现类似于以下的代码。
public function list(Request $request) {
//获取当前用户权限
$roleId = $this->getRoleId();//获取权限的代码写在公共方法或者公共控制器下
if($roleId == 1) {
//班主任,只能查看自己班级的学生数据
$userInfo = Auth::guard('api')->user();
$classId = $userInfo->class_id;
}else{
//年级主任,可以通过下拉框筛选该年级下的所有班级
$class = $request->input('class_id') ?? 1;//默认查看1班的学生数据
}
}
兄弟们,请问有没有办法可以更优雅的实现这种功能?因为一个页面要调用很多接口,每个接口前面都写这么一段,感觉太不好了
限制查询
: 考虑模型的全局作用域让模型自动去做,自己别操心那种事情。