/* * 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 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 getAuthorities() { return authorities; } /** * @param authorities the authorities to set */ public void setAuthorities(Set 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 sortAuthorities( Collection 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 sortedAuthorities = new TreeSet(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, 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(); } }