package com.qiaoba.auth.entity; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.annotation.JsonIgnore; import com.qiaoba.auth.entity.dto.RoleDto; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * 登录用户身份权限 * * @author ailanyin * @version 1.0 * @since 2021/10/15 0015 上午 10:05 */ public class LoginUser implements UserDetails { private static final long serialVersionUID = 1L; /** * 用户ID */ private String userId; /** * 部门ID */ private String deptId; /** * 登录账号 */ private String username; /** * 用户名称 */ private String nickname; /** * 角色列表 */ private List roleKeys; /** * 权限列表 */ private Set permissions; private List roles; public LoginUser() { } public LoginUser(String userId, String deptId, String username, String nickname, List roles, List roleKeys, Set permissions) { this.userId = userId; this.deptId = deptId; this.username = username; this.permissions = permissions; this.nickname = nickname; this.roleKeys = roleKeys; this.roles = roles; } public List getRoles() { return roles; } public void setRoles(List roles) { this.roles = roles; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public List getRoleKeys() { return roleKeys; } public void setRoleKeys(List roleKeys) { this.roleKeys = roleKeys; } public Set getPermissions() { return permissions; } public void setPermissions(Set permissions) { this.permissions = permissions; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public void setUsername(String username) { this.username = username; } @Override public String getUsername() { return this.username; } @Override public String getPassword() { return null; } /** * 账户是否未过期,过期无法验证 */ @Override public boolean isAccountNonExpired() { return true; } /** * 指定用户是否解锁,锁定的用户无法进行身份验证 */ @Override public boolean isAccountNonLocked() { return true; } /** * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证 * * @return boolean */ @Override public boolean isCredentialsNonExpired() { return true; } /** * 是否可用 ,禁用的用户不能身份验证 * * @return boolean */ @Override public boolean isEnabled() { return true; } @Override @JsonIgnore public Collection getAuthorities() { //返回当前用户的权限 return permissions.stream() .filter(StrUtil::isNotBlank) .map(SimpleGrantedAuthority::new) .collect(Collectors.toList()); } }