package br.edu.utfpr.spring.mvc.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.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter @EqualsAndHashCode(of="username") public class Usuario implements UserDetails { private static final long serialVersionUID = -6814600362790849624L; private static final BCryptPasswordEncoder bcry = new BCryptPasswordEncoder(); @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 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 boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } public String getEncodePassword(String pass){ if(StringUtils.isNotEmpty(pass)){ return bcry.encode(pass); } return pass; } }