package alien4cloud.security.model; import java.util.Set; import lombok.Getter; import lombok.Setter; import org.elasticsearch.annotation.BooleanField; import org.elasticsearch.annotation.ESObject; import org.elasticsearch.annotation.Id; import org.elasticsearch.annotation.StringField; import org.elasticsearch.annotation.query.TermFilter; import org.elasticsearch.annotation.query.TermsFacet; import org.elasticsearch.mapping.IndexType; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.social.security.SocialUserDetails; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.google.common.collect.Sets; @ESObject @Getter @Setter @JsonInclude(Include.NON_NULL) public class User implements SocialUserDetails { private static final long serialVersionUID = 1L; @Id private String username; private String password; private String lastName; private String firstName; @StringField(includeInAll = false, indexType = IndexType.no) private String email; @StringField(indexType = IndexType.not_analyzed) @TermsFacet private Set<String> groups; private Set<String> groupRoles; @TermFilter private String[] roles; @BooleanField(includeInAll = false, index = IndexType.no) private boolean internalDirectory; @BooleanField(includeInAll = false, index = IndexType.no) private boolean accountNonExpired = true; @BooleanField(includeInAll = false, index = IndexType.no) private boolean accountNonLocked = true; @BooleanField(includeInAll = false, index = IndexType.no) private boolean credentialsNonExpired = true; @BooleanField(includeInAll = false, index = IndexType.no) private boolean enabled = true; @JsonIgnore @Override public Set<SimpleGrantedAuthority> getAuthorities() { Set<SimpleGrantedAuthority> authorities = Sets.newHashSet(); if (roles != null) { for (String role : roles) { authorities.add(new SimpleGrantedAuthority(role)); } } if (groupRoles != null) { for (String role : groupRoles) { authorities.add(new SimpleGrantedAuthority(role)); } } return authorities; } @JsonIgnore @Override public String getUserId() { return this.username; } }