package com.sandu.common.security; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.annotation.JsonIgnore; import com.sandu.common.enums.AdminStatusStatus; import lombok.Data; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; /** * @author chenjiantian * @date 2022/1/8 16:22 * 登录用户的信息 */ @Data public class LoginUserInfo implements UserDetails { private Long userId; private String account; private String name; private String token; private String role; /** * 用户权限 用,分隔 */ private String permission; /** * 0 "禁用", 1 "正常" ,2:token 过期 3:未找到用户信息 4:在其它地方登录 5:IP限制 6:token 解析失败 */ private Integer status; private Long createTimestamp; private String ip; // 管理员类型,管理员 0官方管理员,1客户管理员 。查看AdministratorEnums private Integer administratorType; @JsonIgnore @Override public Collection getAuthorities() { if (StrUtil.isBlank(permission)) { return null; } return Arrays.stream(permission.split(",")) .map(SimpleGrantedAuthority::new) .collect(Collectors.toList()); } @JsonIgnore @Override public String getPassword() { return null; } @JsonIgnore @Override public String getUsername() { return account; } @JsonIgnore @Override public boolean isAccountNonExpired() { return true; } @JsonIgnore @Override public boolean isAccountNonLocked() { return true; } @JsonIgnore @Override public boolean isCredentialsNonExpired() { return true; } @JsonIgnore @Override public boolean isEnabled() { return AdminStatusStatus.NORMAL.getCode().equals(status); } }