gpt4 book ai didi

symfony - 获得 Symfony2 中的最高用户角色

转载 作者:行者123 更新时间:2023-12-02 13:51:19 31 4
gpt4 key购买 nike

我正在将 Symfony2 与 FOSUserBundle 一起使用。我需要为用户获得最高角色。

role_hierarchy:
ROLE_CONTRIBUTOR: ROLE_USER
ROLE_MODERATOR: ROLE_CONTRIBUTOR
ROLE_ADMIN: ROLE_MODERATOR
ROLE_SUPER_ADMIN: ROLE_ADMIN

如果用户拥有角色 ROLE_SUPER_ADMINROLE_CONTRIBUTOR,我需要一个类似 $user->getHighestRole() 的方法,它会返回 ROLE_SUPER_ADMIN。我需要在 User 实体内部完成它,因为我正在构建 Rest API,并且我想将 getHighestRole() 方法公开为字段。我不想在 security.ymlAppBundle\Entity\User.php 中获得有关角色的冗余信息。我可以访问实体中的 security.role_hierarchy 吗?

我什至不确定是否存在最高角色,因为一个角色可以包含任何其他角色。你有什么线索我可以追踪吗?

最佳答案

您是决定哪个是“最高”角色的人,因此您可以简单地在您的 User 实体中执行类似的操作:

public function getHighestRole()
{
$rolesSortedByImportance = ['ROLE_SUPER_ADMIN', 'ROLE_ADMIN', 'ROLE_MODERATOR', 'ROLE_CONTRIBUTOR', 'ROLE_USER'];
foreach ($rolesSortedByImportance as $role)
{
if (in_array($role, $this->roles))
{
return $role;
}
}

return false; // Unknown role?
}

关于symfony - 获得 Symfony2 中的最高用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678358/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com