¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.framework.web.service; |
| | | |
| | | import java.util.Set; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import com.ruoyi.common.core.domain.entity.SysRole; |
| | | import com.ruoyi.common.core.domain.model.LoginUser; |
| | | import com.ruoyi.common.utils.ServletUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | |
| | | /** |
| | | * RuoYié¦å èªå®ä¹æéå®ç°ï¼ssåèªSpringSecurityé¦åæ¯ |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @Service("ss") |
| | | public class PermissionService |
| | | { |
| | | /** æææéæ è¯ */ |
| | | private static final String ALL_PERMISSION = "*:*:*"; |
| | | |
| | | /** 管çåè§è²æéæ è¯ */ |
| | | private static final String SUPER_ADMIN = "admin"; |
| | | |
| | | private static final String ROLE_DELIMETER = ","; |
| | | |
| | | private static final String PERMISSION_DELIMETER = ","; |
| | | |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | |
| | | /** |
| | | * éªè¯ç¨æ·æ¯å¦å
·å¤ææé |
| | | * |
| | | * @param permission æéå符串 |
| | | * @return ç¨æ·æ¯å¦å
·å¤ææé |
| | | */ |
| | | public boolean hasPermi(String permission) |
| | | { |
| | | if (StringUtils.isEmpty(permission)) |
| | | { |
| | | return false; |
| | | } |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions())) |
| | | { |
| | | return false; |
| | | } |
| | | return hasPermissions(loginUser.getPermissions(), permission); |
| | | } |
| | | |
| | | /** |
| | | * éªè¯ç¨æ·æ¯å¦ä¸å
·å¤ææéï¼ä¸ hasPermié»è¾ç¸å |
| | | * |
| | | * @param permission æéå符串 |
| | | * @return ç¨æ·æ¯å¦ä¸å
·å¤ææé |
| | | */ |
| | | public boolean lacksPermi(String permission) |
| | | { |
| | | return hasPermi(permission) != true; |
| | | } |
| | | |
| | | /** |
| | | * éªè¯ç¨æ·æ¯å¦å
·æä»¥ä¸ä»»æä¸ä¸ªæé |
| | | * |
| | | * @param permissions 以 PERMISSION_NAMES_DELIMETER 为åé符çæéå表 |
| | | * @return ç¨æ·æ¯å¦å
·æä»¥ä¸ä»»æä¸ä¸ªæé |
| | | */ |
| | | public boolean hasAnyPermi(String permissions) |
| | | { |
| | | if (StringUtils.isEmpty(permissions)) |
| | | { |
| | | return false; |
| | | } |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions())) |
| | | { |
| | | return false; |
| | | } |
| | | Set<String> authorities = loginUser.getPermissions(); |
| | | for (String permission : permissions.split(PERMISSION_DELIMETER)) |
| | | { |
| | | if (permission != null && hasPermissions(authorities, permission)) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * å¤æç¨æ·æ¯å¦æ¥ææä¸ªè§è² |
| | | * |
| | | * @param role è§è²å符串 |
| | | * @return ç¨æ·æ¯å¦å
·å¤æè§è² |
| | | */ |
| | | public boolean hasRole(String role) |
| | | { |
| | | if (StringUtils.isEmpty(role)) |
| | | { |
| | | return false; |
| | | } |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) |
| | | { |
| | | return false; |
| | | } |
| | | for (SysRole sysRole : loginUser.getUser().getRoles()) |
| | | { |
| | | String roleKey = sysRole.getRoleKey(); |
| | | if (SUPER_ADMIN.contains(roleKey) || roleKey.contains(StringUtils.trim(role))) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * éªè¯ç¨æ·æ¯å¦ä¸å
·å¤æè§è²ï¼ä¸ isRoleé»è¾ç¸åã |
| | | * |
| | | * @param role è§è²åç§° |
| | | * @return ç¨æ·æ¯å¦ä¸å
·å¤æè§è² |
| | | */ |
| | | public boolean lacksRole(String role) |
| | | { |
| | | return hasRole(role) != true; |
| | | } |
| | | |
| | | /** |
| | | * éªè¯ç¨æ·æ¯å¦å
·æä»¥ä¸ä»»æä¸ä¸ªè§è² |
| | | * |
| | | * @param roles 以 ROLE_NAMES_DELIMETER 为åé符çè§è²å表 |
| | | * @return ç¨æ·æ¯å¦å
·æä»¥ä¸ä»»æä¸ä¸ªè§è² |
| | | */ |
| | | public boolean hasAnyRoles(String roles) |
| | | { |
| | | if (StringUtils.isEmpty(roles)) |
| | | { |
| | | return false; |
| | | } |
| | | LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); |
| | | if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) |
| | | { |
| | | return false; |
| | | } |
| | | for (String role : roles.split(ROLE_DELIMETER)) |
| | | { |
| | | if (hasRole(role)) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 夿æ¯å¦å
嫿é |
| | | * |
| | | * @param permissions æéå表 |
| | | * @param permission æéå符串 |
| | | * @return ç¨æ·æ¯å¦å
·å¤ææé |
| | | */ |
| | | private boolean hasPermissions(Set<String> permissions, String permission) |
| | | { |
| | | return permissions.contains(ALL_PERMISSION) || permissions.contains(StringUtils.trim(permission)); |
| | | } |
| | | } |