78 lines
2.6 KiB
Java
78 lines
2.6 KiB
Java
package com.rest.api.entity;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import com.rest.api.entity.common.CommonDateEntity;
|
|
import lombok.*;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
|
|
import javax.persistence.*;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Builder // builder를 사용할수 있게 합니다.
|
|
@Entity // jpa entity임을 알립니다.
|
|
@Getter // user 필드값의 getter를 자동으로 생성합니다.
|
|
@Setter
|
|
@NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다.
|
|
@AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다.
|
|
@Table(name = "user") // 'user' 테이블과 매핑됨을 명시
|
|
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) // Post Entity에서 User와의 관계를 Json으로 변환시 오류 방지를 위한 코드
|
|
public class User extends CommonDateEntity implements UserDetails {
|
|
@Id // pk
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long msrl;
|
|
@Column(nullable = false, unique = true, length = 50)
|
|
private String uid;
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Column(length = 100)
|
|
private String password;
|
|
@Column(nullable = false, length = 100)
|
|
private String name;
|
|
@Column(length = 100)
|
|
private String provider;
|
|
|
|
@ElementCollection(fetch = FetchType.EAGER)
|
|
@Builder.Default
|
|
private List<String> roles = new ArrayList<>();
|
|
|
|
@Override
|
|
public Collection<? extends GrantedAuthority> getAuthorities() {
|
|
return this.roles.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList());
|
|
}
|
|
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Override
|
|
public String getUsername() {
|
|
return this.uid;
|
|
}
|
|
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Override
|
|
public boolean isAccountNonExpired() {
|
|
return true;
|
|
}
|
|
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Override
|
|
public boolean isAccountNonLocked() {
|
|
return true;
|
|
}
|
|
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Override
|
|
public boolean isCredentialsNonExpired() {
|
|
return true;
|
|
}
|
|
|
|
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
|
@Override
|
|
public boolean isEnabled() {
|
|
return true;
|
|
}
|
|
}
|