package finki.diplomska.tripplanner.models; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; @Entity @Table(name = "users") @AllArgsConstructor @Getter @Setter public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Email(message = "Username needs to be an email") @NotBlank(message = "username is required") @Column(unique = true) private String username; @NotBlank(message = "Please enter your full name") private String fullName; @NotBlank(message = "Password field is required") private String password; @Transient private String confirmPassword; private Date create_At; private Date update_At; //OneToMany with Planners @OneToMany(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER, mappedBy = "user", orphanRemoval = true) @JsonIgnore private List planners = new ArrayList<>(); public User() { } public User(String username, String fullName, String password, String confirmPassword) { this.username = username; this.fullName = fullName; this.password = password; this.confirmPassword = confirmPassword; } @PrePersist protected void onCreate(){ this.create_At = new Date(); } @PreUpdate protected void onUpdate(){ this.update_At = new Date(); } @Override @JsonIgnore public Collection getAuthorities() { return null; } @Override @JsonIgnore public boolean isAccountNonExpired() { return true; } @Override @JsonIgnore public boolean isAccountNonLocked() { return true; } @Override @JsonIgnore public boolean isCredentialsNonExpired() { return true; } @Override @JsonIgnore public boolean isEnabled() { return true; } }