\r
package eu.etaxonomy.cdm.model.common;\r
\r
+import java.util.Collection;\r
import java.util.HashSet;\r
import java.util.Set;\r
-import java.util.TreeSet;\r
\r
import javax.persistence.Entity;\r
import javax.persistence.FetchType;\r
import org.hibernate.annotations.NaturalId;\r
import org.hibernate.envers.Audited;\r
import org.hibernate.envers.NotAudited;\r
-import org.springframework.security.GrantedAuthority;\r
-import org.springframework.security.userdetails.UserDetails;\r
+\r
+\r
+import org.hibernate.search.annotations.Field;\r
+import org.hibernate.search.annotations.Index;\r
+import org.hibernate.search.annotations.Indexed;\r
+import org.hibernate.search.annotations.IndexedEmbedded;\r
+import org.springframework.security.core.GrantedAuthority;\r
+import org.springframework.security.core.userdetails.UserDetails;\r
\r
import eu.etaxonomy.cdm.model.agent.Person;\r
\r
})\r
@XmlRootElement(name = "User")\r
@Entity\r
+@Indexed(index = "eu.etaxonomy.cdm.model.common.User")\r
@Audited\r
@Table(name = "UserAccount")\r
public class User extends CdmBase implements UserDetails {\r
@SuppressWarnings(value="unused")\r
private static final Logger logger = Logger.getLogger(User.class);\r
\r
+ protected User(){\r
+ super();\r
+ }\r
+ \r
public static User NewInstance(String username, String pwd){\r
User user = new User();\r
user.setUsername(username);\r
user.setPassword(pwd);\r
+ \r
+ user.setAccountNonExpired(true);\r
+ user.setAccountNonLocked(true);\r
+ user.setCredentialsNonExpired(true);\r
+ user.setEnabled(true);\r
+ \r
+ return user;\r
+ }\r
+ \r
+ public static User NewInstance(String personTitle, String username, String pwd){\r
+ User user = new User();\r
+ user.setUsername(username);\r
+ user.setPassword(pwd);\r
+ \r
+ user.setAccountNonExpired(true);\r
+ user.setAccountNonLocked(true);\r
+ user.setCredentialsNonExpired(true);\r
+ user.setEnabled(true);\r
+ Person userPerson = Person.NewTitledInstance(personTitle);\r
+ user.setPerson(userPerson);\r
+ \r
return user;\r
}\r
\r
@XmlElement(name = "Username")\r
@NaturalId\r
+ @Field(index = Index.UN_TOKENIZED)\r
protected String username;\r
\r
/**\r
@XmlIDREF\r
@XmlSchemaType(name = "IDREF")\r
@ManyToMany(fetch = FetchType.LAZY)\r
+ @IndexedEmbedded(depth = 1)\r
@NotAudited\r
protected Set<Group> groups = new HashSet<Group>();\r
\r
@XmlSchemaType(name = "IDREF")\r
@OneToOne(fetch = FetchType.LAZY)\r
@Cascade({CascadeType.SAVE_UPDATE})\r
+ @IndexedEmbedded(depth = 1)\r
protected Person person;\r
\r
@XmlTransient\r
@Transient\r
- private GrantedAuthority[] authorities;\r
+ private Set<GrantedAuthority> authorities;\r
\r
private void initAuthorities() {\r
- Set<GrantedAuthority> allAuthorities = new TreeSet<GrantedAuthority>();\r
- allAuthorities.addAll(grantedAuthorities);\r
+ authorities = new HashSet<GrantedAuthority>();\r
+ authorities.addAll(grantedAuthorities);\r
for(Group group : groups) {\r
- allAuthorities.addAll(group.getGrantedAuthorities());\r
+ authorities.addAll(group.getGrantedAuthorities());\r
}\r
- \r
- authorities = allAuthorities.toArray(new GrantedAuthority[allAuthorities.size()]);\r
}\r
\r
@Transient\r
- public GrantedAuthority[] getAuthorities() {\r
+ public Collection<GrantedAuthority> getAuthorities() {\r
if(authorities == null) initAuthorities();\r
return authorities;\r
}\r
return groups;\r
}\r
\r
+ \r
public Person getPerson() {\r
return person;\r
}\r