ohctechv3/.svn/pristine/a1/a1a88614e3dad4c6793330767c70a08eb759352e.svn-base
2024-10-28 15:03:36 +05:30

168 lines
4.6 KiB
Plaintext

package com.healthcare.ohctech.entity;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.*;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
@Entity
@Table(name = "users")
public class User implements UserDetails {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(name = "is_account_non_locked")
private Boolean isAccountNonLocked;
@Column(name = "is_enabled")
private Boolean isEnabled;
@Column(name = "is_credentials_non_expired")
private Boolean isCredentialsNonExpired;
@Column(name = "is_account_non_expired")
private Boolean isAccountNonExpired;
@Column(name = "failed_attempt")
private Integer failedAttempt = 0;
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
@JsonManagedReference
private Set<Role> roles;
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinTable(name = "users_ohcs", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "ohc_id", referencedColumnName = "id"))
@JsonManagedReference
private Set<OhcType> ohcTypes;
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private RefreshToken refreshToken;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return roles.stream().map(role -> new SimpleGrantedAuthority(role.getRoleName())).collect(Collectors.toSet());
}
@Override
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public boolean isAccountNonExpired() {
return isAccountNonExpired;
}
public void setAccountNonExpired(Boolean accountNonExpired) {
isAccountNonExpired = accountNonExpired;
}
@Override
public boolean isAccountNonLocked() {
return isAccountNonLocked;
}
public void setAccountNonLocked(Boolean accountNonLocked) {
isAccountNonLocked = accountNonLocked;
}
@Override
public boolean isCredentialsNonExpired() {
return isCredentialsNonExpired;
}
public void setCredentialsNonExpired(Boolean credentialsNonExpired) {
isCredentialsNonExpired = credentialsNonExpired;
}
@Override
public boolean isEnabled() {
return isEnabled;
}
public void setEnabled(Boolean enabled) {
isEnabled = enabled;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public RefreshToken getRefreshToken() {
return refreshToken;
}
public void setRefreshToken(RefreshToken refreshToken) {
this.refreshToken = refreshToken;
}
public Integer getFailedAttempt() {
return failedAttempt;
}
public void setFailedAttempt(Integer failedAttempt) {
this.failedAttempt = failedAttempt;
}
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public Set<OhcType> getOhcTypes() {
return ohcTypes;
}
public void setOhcTypes(Set<OhcType> ohcTypes) {
this.ohcTypes = ohcTypes;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", username='" + username + '\'' + ", isAccountNonLocked=" + isAccountNonLocked
+ ", isEnabled=" + isEnabled + ", isCredentialsNonExpired=" + isCredentialsNonExpired
+ ", isAccountNonExpired=" + isAccountNonExpired + ", failedAttempt=" + failedAttempt + ", roles="
+ roles + ", ohcTypes=" + ohcTypes + ", refreshToken=" + refreshToken + '}';
}
}