package security; import java.util.Date; import java.util.HashSet; import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; import javax.persistence.Column; import javax.persistence.Table; import org.springframework.security.GrantedAuthority; import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.userdetails.UserDetails; import kernel.bo.EntityObject; /** * 系统用户 */ @Table(name="SCT_USER") public class SecUser extends EntityObject implements UserDetails { private static final long serialVersionUID = 8585484879324416599L; @Column(name="USERNAME") private String username;// 登陆用户名 @Column(name="PASSWORD") private String password;// 密码 @Column(name="SAFEWORD") private String safeword;// 资金密码 @Column(name="PARTY_UUID") private String partyId;// 关联 party entity @Column(name="CREATETIME") private Date createTime; private String name; @Column(name="EMAIL") private String email; private boolean accountNonExpired = true;// 账户是否过期。暂默认值为true,后期根据业务修改 private boolean accountNonLocked = true;;// 账户是否锁定。暂默认值为true,后期根据业务修改 private boolean credentialsNonExpired = true;;// 账户密码是否过期。暂默认值为true,后期根据业务修改 @Column(name="ENABLED") private boolean enabled = true;// 账户是否有效。暂默认值为true,后期根据业务修改 private String defaultLocale;// 默认Locale private boolean isdel = false; private Set roles = new HashSet();// 角色 @Column(name="REMARKS") private String remarks; private String roleName;// 角色名 /** * 最后登录时间 */ @Column(name="LAST_LOGIN_TIME") private Date last_loginTime; /** * 登陆Ip * * @return */ @Column(name="LOGIN_IP") private String login_ip; /** * 谷歌验证器 */ @Column(name="GOOGLE_AUTH_SECRET") private String google_auth_secret; /** * 谷歌验证器是否绑定 */ @Column(name="GOOGLE_AUTH_BIND") private boolean google_auth_bind = false; public GrantedAuthority[] getAuthorities() { return roles.stream().map(role->new GrantedAuthorityImpl("ROLE_" + role.getRoleName())) .collect(Collectors.collectingAndThen(Collectors.toList(),list->list.toArray(new GrantedAuthority[list.size()]))); } public String getRoleAuthorities() { return roles.stream().map(role->role.getRoleName()).collect(Collectors.joining(",")); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Set getRoles() { return roles; } public void setRoles(Set roles) { this.roles = roles; } public boolean isEnabled() { return enabled; } public boolean getEnabled() { return isEnabled(); } public void setEnabled(boolean enabled) { this.enabled = enabled; } public boolean isAccountNonExpired() { return accountNonExpired; } public void setAccountNonExpired(boolean accountNonExpired) { this.accountNonExpired = accountNonExpired; } public boolean isAccountNonLocked() { return accountNonLocked; } public void setAccountNonLocked(boolean accountNonLocked) { this.accountNonLocked = accountNonLocked; } public boolean isCredentialsNonExpired() { return credentialsNonExpired; } public void setCredentialsNonExpired(boolean credentialsNonExpired) { this.credentialsNonExpired = credentialsNonExpired; } public String getDefaultLocale() { return defaultLocale; } public void setDefaultLocale(String defaultLocale) { this.defaultLocale = defaultLocale; } public Locale getLocale() { String locale=getDefaultLocale(); return null==locale?null:new Locale(locale); } public String getPartyId() { return partyId; } public void setPartyId(String partyId) { this.partyId = partyId; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public boolean getIsdel() { return isdel; } public void setIsdel(boolean isdel) { this.isdel = isdel; } public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } public String getRoleName() { if(null!=roleName && !roleName.isEmpty()) return roleName; if(null==roles || roles.isEmpty()) return null; return roleName=roles.iterator().next().getRoleName(); } public void setRoleName(String roleName) { this.roleName = roleName; } public String getSafeword() { return safeword; } public void setSafeword(String safeword) { this.safeword = safeword; } public Date getLast_loginTime() { return last_loginTime; } public String getLogin_ip() { return login_ip; } public void setLast_loginTime(Date last_loginTime) { this.last_loginTime = last_loginTime; } public void setLogin_ip(String login_ip) { this.login_ip = login_ip; } public String getGoogle_auth_secret() { return google_auth_secret; } public boolean isGoogle_auth_bind() { return google_auth_bind; } public void setGoogle_auth_secret(String google_auth_secret) { this.google_auth_secret = google_auth_secret; } public void setGoogle_auth_bind(boolean google_auth_bind) { this.google_auth_bind = google_auth_bind; } }