package com.example.educatback.model.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @Entity @Builder @NoArgsConstructor @Getter @AllArgsConstructor @Setter @Table(name = "Member") public class Member implements UserDetails { @Id @Column(name = "id") private String username; @Column(name = "pw") private String password; @Column(name = "name") private String name; @Column(name = "grade") private int grade; @Column private String role; @Column(name = "focus") private int focus; @Column(name = "expression") private int expression; @Column(name = "understand") private int understand; @Column(name = "word") private int word; @Column(name = "sentence") private int sentence; @Column(name = "grammar") private int grammar; @Column(name = "gender") private String gender; @Column(name = "created_at") private LocalDateTime createdAt; @Column(name = "updated_at") private LocalDateTime updatedAt; @OneToMany(mappedBy = "member") private List solveds; @OneToMany(mappedBy = "member") private List scoreLogs; @Override public Collection getAuthorities() { List roles = new ArrayList<>(); // roles.add(new SimpleGrantedAuthority(role)); if (role != null) { roles.add(new SimpleGrantedAuthority(role)); } return roles; } @Override public String getPassword() { return password; } @Override public String getUsername() { return username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } @PrePersist public void prePersist() { this.createdAt = LocalDateTime.now(); this.updatedAt = LocalDateTime.now(); } @PreUpdate public void preUpdate() { this.updatedAt = LocalDateTime.now(); } }