178 lines
4.1 KiB
Java
178 lines
4.1 KiB
Java
package ru.ulstu.user.model;
|
|
|
|
import org.hibernate.annotations.BatchSize;
|
|
import org.hibernate.validator.constraints.Email;
|
|
import ru.ulstu.configuration.Constants;
|
|
import ru.ulstu.core.model.BaseEntity;
|
|
|
|
import javax.persistence.Column;
|
|
import javax.persistence.Entity;
|
|
import javax.persistence.JoinColumn;
|
|
import javax.persistence.JoinTable;
|
|
import javax.persistence.ManyToMany;
|
|
import javax.persistence.Table;
|
|
import javax.persistence.Temporal;
|
|
import javax.persistence.TemporalType;
|
|
import javax.validation.constraints.NotNull;
|
|
import javax.validation.constraints.Pattern;
|
|
import javax.validation.constraints.Size;
|
|
import java.util.Collection;
|
|
import java.util.Date;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
@Entity
|
|
@Table(name = "users")
|
|
public class User extends BaseEntity {
|
|
@NotNull
|
|
@Pattern(regexp = Constants.LOGIN_REGEX)
|
|
@Size(min = 1, max = 50)
|
|
@Column(length = 50, unique = true, nullable = false)
|
|
private String login;
|
|
|
|
@NotNull
|
|
@Size(min = 60, max = 60)
|
|
@Column(name = "password_hash", length = 60, nullable = false)
|
|
private String password;
|
|
|
|
@NotNull
|
|
@Size(max = 50)
|
|
@Column(name = "first_name", length = 50, nullable = false)
|
|
private String firstName;
|
|
|
|
@NotNull
|
|
@Size(max = 50)
|
|
@Column(name = "last_name", length = 50, nullable = false)
|
|
private String lastName;
|
|
|
|
@NotNull
|
|
@Email
|
|
@Size(min = 5, max = 100)
|
|
@Column(length = 100, nullable = false, unique = true)
|
|
private String email;
|
|
|
|
@NotNull
|
|
@Column(nullable = false)
|
|
private boolean activated;
|
|
|
|
@Size(max = 20)
|
|
@Column(name = "activation_key", length = 20)
|
|
private String activationKey;
|
|
|
|
@Column(name = "activation_date")
|
|
@Temporal(TemporalType.TIMESTAMP)
|
|
private Date activationDate;
|
|
|
|
@Size(max = 20)
|
|
@Column(name = "reset_key", length = 20)
|
|
private String resetKey;
|
|
|
|
@Column(name = "reset_date")
|
|
@Temporal(TemporalType.TIMESTAMP)
|
|
private Date resetDate;
|
|
|
|
@ManyToMany
|
|
@JoinTable(
|
|
name = "user_role",
|
|
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
|
|
inverseJoinColumns = {@JoinColumn(name = "user_role_name", referencedColumnName = "name")})
|
|
@BatchSize(size = 20)
|
|
private Set<UserRole> roles;
|
|
|
|
public User() {
|
|
roles = new HashSet<>();
|
|
activated = false;
|
|
activationDate = new Date();
|
|
resetDate = null;
|
|
}
|
|
|
|
public String getLogin() {
|
|
return login;
|
|
}
|
|
|
|
public void setLogin(String login) {
|
|
this.login = login.toLowerCase();
|
|
}
|
|
|
|
public String getPassword() {
|
|
return password;
|
|
}
|
|
|
|
public void setPassword(String password) {
|
|
this.password = password;
|
|
}
|
|
|
|
public String getFirstName() {
|
|
return firstName;
|
|
}
|
|
|
|
public void setFirstName(String firstName) {
|
|
this.firstName = firstName;
|
|
}
|
|
|
|
public String getLastName() {
|
|
return lastName;
|
|
}
|
|
|
|
public void setLastName(String lastName) {
|
|
this.lastName = lastName;
|
|
}
|
|
|
|
public String getEmail() {
|
|
return email;
|
|
}
|
|
|
|
public void setEmail(String email) {
|
|
this.email = email;
|
|
}
|
|
|
|
public boolean getActivated() {
|
|
return activated;
|
|
}
|
|
|
|
public void setActivated(boolean activated) {
|
|
this.activated = activated;
|
|
}
|
|
|
|
public String getActivationKey() {
|
|
return activationKey;
|
|
}
|
|
|
|
public void setActivationKey(String activationKey) {
|
|
this.activationKey = activationKey;
|
|
}
|
|
|
|
public Date getActivationDate() {
|
|
return activationDate;
|
|
}
|
|
|
|
public void setActivationDate(Date activationDate) {
|
|
this.activationDate = activationDate;
|
|
}
|
|
|
|
public String getResetKey() {
|
|
return resetKey;
|
|
}
|
|
|
|
public void setResetKey(String resetKey) {
|
|
this.resetKey = resetKey;
|
|
}
|
|
|
|
public Date getResetDate() {
|
|
return resetDate;
|
|
}
|
|
|
|
public void setResetDate(Date resetDate) {
|
|
this.resetDate = resetDate;
|
|
}
|
|
|
|
public Set<UserRole> getRoles() {
|
|
return roles;
|
|
}
|
|
|
|
public void setRoles(Collection<UserRole> roles) {
|
|
this.roles.clear();
|
|
this.roles.addAll(roles);
|
|
}
|
|
}
|