304 lines
7.4 KiB
Java
304 lines
7.4 KiB
Java
/*
|
|
* To change this license header, choose License Headers in Project Properties.
|
|
* To change this template file, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package com.ifish.config;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
import java.util.Comparator;
|
|
import java.util.Set;
|
|
import java.util.SortedSet;
|
|
import java.util.TreeSet;
|
|
import org.springframework.security.core.CredentialsContainer;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
import org.springframework.util.Assert;
|
|
|
|
/**
|
|
*
|
|
* @author Administrator
|
|
*/
|
|
public class UserInfo implements UserDetails, CredentialsContainer {
|
|
|
|
private static final long serialVersionUID = 5997839307263494359L;
|
|
|
|
// ~ Instance fields
|
|
// ================================================================================================
|
|
private String password;//用户密码
|
|
|
|
private String email;// 用户的邮箱地址
|
|
|
|
private int id;//用户ID
|
|
|
|
private String role;//用户类型
|
|
|
|
private String roleName;
|
|
|
|
private String code;
|
|
|
|
private String username;//email或者Account等综合的
|
|
|
|
private Set<GrantedAuthority> authorities;
|
|
|
|
private boolean accountNonExpired;
|
|
|
|
private boolean accountNonLocked;
|
|
|
|
private boolean credentialsNonExpired;
|
|
|
|
private boolean enabled;
|
|
|
|
/**
|
|
* @return the password
|
|
*/
|
|
public String getPassword() {
|
|
return password;
|
|
}
|
|
|
|
/**
|
|
* @param password the password to set
|
|
*/
|
|
public void setPassword(String password) {
|
|
this.password = password;
|
|
}
|
|
|
|
/**
|
|
* @return the email
|
|
*/
|
|
public String getEmail() {
|
|
return email;
|
|
}
|
|
|
|
/**
|
|
* @param email the email to set
|
|
*/
|
|
public void setEmail(String email) {
|
|
this.email = email;
|
|
}
|
|
|
|
/**
|
|
* @return the id
|
|
*/
|
|
public int getId() {
|
|
return id;
|
|
}
|
|
|
|
/**
|
|
* @param id the id to set
|
|
*/
|
|
public void setId(int id) {
|
|
this.id = id;
|
|
}
|
|
|
|
/**
|
|
* @return the role
|
|
*/
|
|
public String getRole() {
|
|
return role;
|
|
}
|
|
|
|
/**
|
|
* @param role the role to set
|
|
*/
|
|
public void setRole(String role) {
|
|
this.role = role;
|
|
}
|
|
|
|
/**
|
|
* @return the roleName
|
|
*/
|
|
public String getRoleName() {
|
|
return roleName;
|
|
}
|
|
|
|
/**
|
|
* @param roleName the roleName to set
|
|
*/
|
|
public void setRoleName(String roleName) {
|
|
this.roleName = roleName;
|
|
}
|
|
|
|
/**
|
|
* @return the code
|
|
*/
|
|
public String getCode() {
|
|
return code;
|
|
}
|
|
|
|
/**
|
|
* @param code the code to set
|
|
*/
|
|
public void setCode(String code) {
|
|
this.code = code;
|
|
}
|
|
|
|
/**
|
|
* @return the username
|
|
*/
|
|
public String getUsername() {
|
|
return username;
|
|
}
|
|
|
|
/**
|
|
* @param username the username to set
|
|
*/
|
|
public void setUsername(String username) {
|
|
this.username = username;
|
|
}
|
|
|
|
/**
|
|
* @return the authorities
|
|
*/
|
|
public Set<GrantedAuthority> getAuthorities() {
|
|
return authorities;
|
|
}
|
|
|
|
/**
|
|
* @param authorities the authorities to set
|
|
*/
|
|
public void setAuthorities(Set<GrantedAuthority> authorities) {
|
|
this.authorities = authorities;
|
|
}
|
|
|
|
/**
|
|
* @return the accountNonExpired
|
|
*/
|
|
public boolean isAccountNonExpired() {
|
|
return accountNonExpired;
|
|
}
|
|
|
|
/**
|
|
* @param accountNonExpired the accountNonExpired to set
|
|
*/
|
|
public void setAccountNonExpired(boolean accountNonExpired) {
|
|
this.accountNonExpired = accountNonExpired;
|
|
}
|
|
|
|
/**
|
|
* @return the accountNonLocked
|
|
*/
|
|
public boolean isAccountNonLocked() {
|
|
return accountNonLocked;
|
|
}
|
|
|
|
/**
|
|
* @param accountNonLocked the accountNonLocked to set
|
|
*/
|
|
public void setAccountNonLocked(boolean accountNonLocked) {
|
|
this.accountNonLocked = accountNonLocked;
|
|
}
|
|
|
|
/**
|
|
* @return the credentialsNonExpired
|
|
*/
|
|
public boolean isCredentialsNonExpired() {
|
|
return credentialsNonExpired;
|
|
}
|
|
|
|
/**
|
|
* @param credentialsNonExpired the credentialsNonExpired to set
|
|
*/
|
|
public void setCredentialsNonExpired(boolean credentialsNonExpired) {
|
|
this.credentialsNonExpired = credentialsNonExpired;
|
|
}
|
|
|
|
/**
|
|
* @return the enabled
|
|
*/
|
|
public boolean isEnabled() {
|
|
return enabled;
|
|
}
|
|
|
|
/**
|
|
* @param enabled the enabled to set
|
|
*/
|
|
public void setEnabled(boolean enabled) {
|
|
this.enabled = enabled;
|
|
}
|
|
|
|
private static SortedSet<GrantedAuthority> sortAuthorities(
|
|
Collection<? extends GrantedAuthority> authorities) {
|
|
Assert.notNull(authorities, "Cannot pass a null GrantedAuthority collection");
|
|
// Ensure array iteration order is predictable (as per
|
|
// UserDetails.getAuthorities() contract and SEC-717)
|
|
SortedSet<GrantedAuthority> sortedAuthorities = new TreeSet<GrantedAuthority>(new AuthorityComparator());
|
|
|
|
for (GrantedAuthority grantedAuthority : authorities) {
|
|
Assert.notNull(grantedAuthority, "GrantedAuthority list cannot contain any null elements");
|
|
sortedAuthorities.add(grantedAuthority);
|
|
}
|
|
|
|
return sortedAuthorities;
|
|
}
|
|
|
|
@Override
|
|
public void eraseCredentials() {
|
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
}
|
|
|
|
private static class AuthorityComparator implements
|
|
Comparator<GrantedAuthority>, Serializable {
|
|
|
|
public int compare(GrantedAuthority g1, GrantedAuthority g2) {
|
|
// Neither should ever be null as each entry is checked before
|
|
// adding it to the set.
|
|
// If the authority is null, it is a custom authority and should
|
|
// precede others.
|
|
if (g2.getAuthority() == null) {
|
|
return -1;
|
|
}
|
|
|
|
if (g1.getAuthority() == null) {
|
|
return 1;
|
|
}
|
|
|
|
return g1.getAuthority().compareTo(g2.getAuthority());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object rhs) {
|
|
if (rhs instanceof UserInfo) {
|
|
return getUsername().equals(((UserInfo) rhs).getUsername());
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return getUsername().hashCode();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(super.toString()).append(": ");
|
|
sb.append("Username: ").append(this.getUsername()).append("; ");
|
|
sb.append("Password: [PROTECTED]; ");
|
|
sb.append("Enabled: ").append(this.isEnabled()).append("; ");
|
|
sb.append("AccountNonExpired: ").append(this.isAccountNonExpired()).append("; ");
|
|
sb.append("credentialsNonExpired: ").append(this.isCredentialsNonExpired()).append("; ");
|
|
sb.append("AccountNonLocked: ").append(this.isAccountNonLocked()).append("; ");
|
|
|
|
if (!authorities.isEmpty()) {
|
|
sb.append("Granted Authorities: ");
|
|
|
|
boolean first = true;
|
|
for (GrantedAuthority auth : getAuthorities()) {
|
|
if (!first) {
|
|
sb.append(",");
|
|
}
|
|
first = false;
|
|
|
|
sb.append(auth);
|
|
}
|
|
} else {
|
|
sb.append("Not granted any authorities");
|
|
}
|
|
return sb.toString();
|
|
}
|
|
}
|