package com.prgrms.team03linkbookbe.user.entity; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @Entity @Getter @Table(name = "users") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "email", nullable = false, unique = true) private String email; @Column(name = "password", nullable = false) private String password; @Column(name = "name", nullable = false, columnDefinition = "varchar(20)") private String name; @Column(name = "image", nullable = true) private String image; @Column(name = "role", nullable = false, columnDefinition = "varchar(20)") private String role; @Builder public User(Long id, String email, String password, String name, String image, String role) { this.id = id; this.email = email; this.password = password; this.name = name; this.image = image; this.role = role; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { List<GrantedAuthority> roles = new ArrayList<>(); for (String role : this.role.split(",")) { roles.add(new SimpleGrantedAuthority(role)); } return roles; } @Override public String getUsername() { return this.email; } @Override public boolean isAccountNonExpired() { return false; } @Override public boolean isAccountNonLocked() { return false; } @Override public boolean isCredentialsNonExpired() { return false; } @Override public boolean isEnabled() { return false; } }