/** * 根据角色获取 权限字符串 如sys:admin * * @param user * @return */ public Set<String> findStringPermissions(User user) { Set<String> permissions = Sets.newHashSet(); Set<Role> roles = ((UserAuthService) AopContext.currentProxy()).findRoles(user); for (Role role : roles) { for (RoleResourcePermission rrp : role.getResourcePermissions()) { Resource resource = resourceService.findOne(rrp.getResourceId()); String actualResourceIdentity = resourceService.findActualResourceIdentity(resource); // 不可用 即没查到 或者标识字符串不存在 if (resource == null || StringUtils.isEmpty(actualResourceIdentity) || Boolean.FALSE.equals(resource.getShow())) { continue; } for (Long permissionId : rrp.getPermissionIds()) { Permission permission = permissionService.findOne(permissionId); // 不可用 if (permission == null || Boolean.FALSE.equals(permission.getShow())) { continue; } permissions.add(actualResourceIdentity + ":" + permission.getPermission()); } } } return permissions; }
public Set<String> findStringRoles(User user) { Set<Role> roles = ((UserAuthService) AopContext.currentProxy()).findRoles(user); return Sets.newHashSet( Collections2.transform( roles, new Function<Role, String>() { @Override public String apply(Role input) { return input.getRole(); } })); }