
ru.mynewtons.starter.oauth2.domain.UserDetails Maven / Gradle / Ivy
The newest version!
package ru.mynewtons.starter.oauth2.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import javax.persistence.*;
import java.util.Collection;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@Setter
@Inheritance(strategy = InheritanceType.JOINED)
@Entity(name = "user_details")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class UserDetails extends BaseDomain implements org.springframework.security.core.userdetails.UserDetails {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column
private String id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "password")
private String password;
@Column
private Boolean enabled;
@OneToOne()
@JoinColumn(name = "role_id")
private Role role;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "status_id")
private UserStatus userStatus;
@Email
@NotEmpty
@Column(unique = true)
private String email;
@Column
private Gender gender;
@Override
public Collection extends GrantedAuthority> getAuthorities() {
return AuthorityUtils.commaSeparatedStringToAuthorityList(role.getTitle());
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return enabled;
}
@Override
public String getUsername() {
return email;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy