You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
package com.example.demo.domain.entity;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
import lombok.Data;
|
|
import lombok.NoArgsConstructor;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.*;
|
|
|
|
@Data
|
|
@NoArgsConstructor
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
public class Admin implements UserDetails, Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private Integer id; // 主键ID
|
|
private String adminName; // 用户姓名
|
|
private String account; // 账号
|
|
private String password; // 密码
|
|
private String machineId; // 机器码,限两个
|
|
private Byte adminStatus; // 状态(启用/不启用)
|
|
private String market; // 地区
|
|
private String postiton; // 职位
|
|
private String remark; // 备注
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
|
|
private Date createTime; // 创建时间
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
|
|
private Date updateTime; // 更新时间
|
|
private Integer roleId;
|
|
|
|
|
|
@Override
|
|
@JsonIgnore
|
|
public Collection<? extends GrantedAuthority> getAuthorities() {
|
|
Set<GrantedAuthority> authorities = new HashSet<>();
|
|
Optional.ofNullable(postiton)
|
|
.map(Integer::valueOf)
|
|
.ifPresent(permValue -> {
|
|
switch (permValue) {
|
|
case 1:
|
|
authorities.add(new SimpleGrantedAuthority("ROLE_SUPER_ADMIN"));
|
|
break;
|
|
case 2:
|
|
authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
|
|
break;
|
|
case 3:
|
|
authorities.add(new SimpleGrantedAuthority("ROLE_AUDITORS"));
|
|
break;
|
|
case 5:
|
|
authorities.add(new SimpleGrantedAuthority("Branch_Manager"));
|
|
break;
|
|
default:
|
|
// 可以添加默认角色或处理未知权限
|
|
break;
|
|
}
|
|
});
|
|
return authorities;
|
|
}
|
|
@Override
|
|
public String getUsername() {
|
|
return account;
|
|
}
|
|
|
|
@Override
|
|
@JsonIgnore
|
|
public boolean isAccountNonExpired() {
|
|
return true; // 默认账户未过期
|
|
}
|
|
|
|
@Override
|
|
@JsonIgnore
|
|
public boolean isAccountNonLocked() {
|
|
return true; // 默认账户未锁定
|
|
}
|
|
|
|
@Override
|
|
@JsonIgnore
|
|
public boolean isCredentialsNonExpired() {
|
|
return true; // 默认凭证未过期
|
|
}
|
|
|
|
@Override
|
|
@JsonIgnore
|
|
public boolean isEnabled() {
|
|
return adminStatus != null && adminStatus == 1;
|
|
}
|
|
}
|