This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package com.starry.common.enums;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 租户后台角色枚举,集中维护角色标识,避免散落的魔法字符串。
|
||||
*/
|
||||
public enum TenantRoleEnum {
|
||||
|
||||
/**
|
||||
* 管理员(运营)角色,拥有全量数据视图。
|
||||
*/
|
||||
OPERATOR("operator"),
|
||||
|
||||
/**
|
||||
* 组长角色,只能查看所在小组的数据。
|
||||
*/
|
||||
LEADER("leader"),
|
||||
|
||||
/**
|
||||
* 客服角色。
|
||||
*/
|
||||
WAITER("waiter");
|
||||
|
||||
private final String roleKey;
|
||||
|
||||
TenantRoleEnum(String roleKey) {
|
||||
this.roleKey = roleKey.toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
public String getRoleKey() {
|
||||
return roleKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断角色集合中是否包含目标角色。
|
||||
*
|
||||
* @param roles 当前角色集合
|
||||
* @param targetRole 目标角色
|
||||
* @return true 表示包含
|
||||
*/
|
||||
public static boolean contains(Set<String> roles, TenantRoleEnum targetRole) {
|
||||
if (roles == null || targetRole == null) {
|
||||
return false;
|
||||
}
|
||||
return roles.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(role -> role.toLowerCase(Locale.ROOT))
|
||||
.anyMatch(role -> role.equals(targetRole.getRoleKey()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user