我已经实现了一个基本的角色系统,它使用一个表“role\u user”。
在我的用户模型上,我有几种方法可以检查角色,其中之一是:
public function isStaff()
{
foreach ($this->roles()->get() as $role)
{
if ($role->id == 3)
{
return true;
}
}
return false;
}
当我查询用户时,如何使用此方法?
这里的查询:
return User::where('name', 'like', "%".$request->name."%")
->orWhere('email', 'like', "%".$request->name."%")
->whereDoesntHave('Teams', function ($query) use($teamId) {
$query->whereId($teamId);
})
->with('teams')
->get();
目前返回所有用户,但我只希望返回角色为3的用户
您可以在用户
模型中设置一个名为staff
的范围,然后使用该范围缩小结果范围:
public function scopeStaff($query, $roll_id = 3)
{
return $query->where('role_id', '=', $roll_id)
}
因此,在检查(使用模型)员工角色时,您可以改进实现该功能的功能:
public function isStaff($role_id = 3)
{
return $this->role_id = $role_id ? $this : false;
}
因此,当使用查询生成器时,您可以使用第一种方法将结果缩小到具有指定id的结果,因为您可以看到默认值为3,但将更改为您给定的任何值:
$staff_users = User::staff()->get();
然后,另一个用于验证匹配的用户模型是否为人员:
$user = User::find(1);
$is_staff = $user->isStaff(); //false or returns the same model
希望这能有所帮助
最好是做条件测试
return User::where('name', 'like', "%".$request->name."%")
->orWhere('email', 'like', "%".$request->name."%")
->whereDoesntHave('Teams', function ($query) use($teamId) {
$query->whereId($teamId);
})
->whereHas('roles', function($q) use ($role_id){
$q->where('id',$role_id);
})
->with('teams')
->get();
或者,您也可以基于param reurn结果为上述查询创建一个方法
您可以使用范围与Laravel代替多种方法来检查不同的方法。
public function scopeRole($query, $flag)
{
return $query->where('role', $flag);
}
然后
$users= User::role(3)->get();
查看有关创建动态范围的参考教程
问题内容: 我想使用Spring Security JSP标签库根据角色有条件地显示一些内容。但是在Spring Security 3.1.x中,仅检查一个角色。 我可以使用,但 ifAllGranted 已弃用。 有什么帮助吗? 问题答案: 春季安全性中有一个特殊的安全性表达: hasAnyRole(角色列表) -如果已授予用户指定的任何角色(以逗号分隔的字符串 列表形式) ,则为true。 我
我目前正在建立一个不和谐验证机器人,这个机器人的一个功能,如果检查你是否有一个角色从每一个需要的类别,然后在最后产生你的角色的总结。目前,我有一个工作解决方案,它的功能完全符合我的要求,但它使用了一个很大的if堆栈,我对js很陌生,但被告知尽可能不要使用大的if/if else if堆栈。我已经研究了switch的案例,但不知道如何应用这些案例,所以我想知道是否有一种更优化的方法来实现我所需要的。
我是LDAP的新手,我尝试过在OpenLDAP上实现RBAC。我创建了一些用户(inetOrganizationPerson)并将它们放在组中(groupOfNames)。接下来,我创建了一些角色(organizationalRole)并将它们与用户组关联(RoleIncuspant),而不是直接将它们与用户关联。 1)/usr/local/bin/ldapsearch-x-b'ou=groups
我一直在努力在Spring MVC应用程序中集成Spring Security和FreeMarker模板。我使用一个非常简单的登录表单将用户名和密码提交给 /j_spring_security_check.我能够在Java层登录和检索用户的角色。但是当我尝试在FreeMarker中检查角色时,我没有运气。我在FTL文件顶部添加了以下内容: 并使用以下内容检查角色: <代码><代码> 我收到以下错误
查询集表示从数据库中获取的对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 1. 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会
我正在做一个giverole命令,就像!giverole{member}{role},但是我怎么知道bot最高角色是否高于提到的角色。我还没试过什么,因为我卡住了,请帮帮我。 我正在使用discord.js v12