package cn.cetc54.platform.core.config.security; import cn.cetc54.platform.core.common.vo.PermissionDTO; import cn.cetc54.platform.core.common.constant.CommonConstant; import cn.cetc54.platform.core.common.vo.RoleDTO; import cn.cetc54.platform.core.entity.User; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * @author */ @Slf4j public class SecurityUserDetails extends User implements UserDetails { private static final long serialVersionUID = 1L; private List permissions; private List roles; public SecurityUserDetails(User user) { if(user!=null) { // Principal用户信息 this.setUsername(user.getUsername()); this.setPassword(user.getPassword()); this.setStatus(user.getStatus()); this.permissions = user.getPermissions(); this.roles = user.getRoles(); } } /** * 添加用户拥有的权限和角色 * @return */ @Override public Collection getAuthorities() { List authorityList = new ArrayList<>(); // 添加请求权限 if(permissions!=null&&permissions.size()>0){ for (PermissionDTO permission : permissions) { if(StrUtil.isNotBlank(permission.getTitle()) &&StrUtil.isNotBlank(permission.getPath())) { authorityList.add(new SimpleGrantedAuthority(permission.getTitle())); } } } // 添加角色 if(roles!=null&&roles.size()>0){ // lambda表达式 roles.forEach(item -> { if(StrUtil.isNotBlank(item.getName())){ authorityList.add(new SimpleGrantedAuthority(item.getName())); } }); } return authorityList; } /** * 账户是否过期 * @return */ @Override public boolean isAccountNonExpired() { return true; } /** * 是否禁用 * @return */ @Override public boolean isAccountNonLocked() { return CommonConstant.USER_STATUS_LOCK.equals(this.getStatus()) ? false : true; } /** * 密码是否过期 * @return */ @Override public boolean isCredentialsNonExpired() { return true; } /** * 是否启用 * @return */ @Override public boolean isEnabled() { return CommonConstant.USER_STATUS_NORMAL.equals(this.getStatus()) ? true : false; } }