package br.edu.utfpr.spring.security.model; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToMany; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @Entity public class Usuario implements UserDetails { private static final long serialVersionUID = -6814600362790849624L; private static final BCryptPasswordEncoder bcry = new BCryptPasswordEncoder(); @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String nome; private String username; private String password; @ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER) private Set<Permissao> permissoes; @Override public Collection<? extends GrantedAuthority> getAuthorities() { List<GrantedAuthority> auto = new ArrayList<GrantedAuthority>(); auto.addAll(getPermissoes()); return auto; } public void addPermissao(Permissao permissao){ if(permissoes == null){ permissoes = new HashSet<Permissao>(); } permissoes.add(permissao); } @Override public String getPassword() { return password; } @Override public String getUsername() { return username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } @Override public boolean equals(Object obj) { if(!(obj instanceof Usuario)){ return false; } Usuario bean = (Usuario)obj; return new EqualsBuilder().append(bean.getUsername(), this.getUsername()).isEquals(); } @Override public int hashCode() { return new HashCodeBuilder().append(this.getUsername()).toHashCode(); } public Set<Permissao> getPermissoes() { return permissoes; } public void setPermissoes(Set<Permissao> permissoes) { this.permissoes = permissoes; } public String getEncodePassword(String pass){ if(StringUtils.isNotEmpty(pass)){ return bcry.encode(pass); } return pass; } }