86 lines
1.9 KiB
Java
86 lines
1.9 KiB
Java
package de.ph87.tools.user;
|
|
|
|
import de.ph87.tools.user.uuid.UserPrivateUuid;
|
|
import de.ph87.tools.user.uuid.UserPublicAbstract;
|
|
import de.ph87.tools.user.uuid.UserPublicUuid;
|
|
import jakarta.persistence.*;
|
|
import lombok.*;
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
|
import java.time.ZonedDateTime;
|
|
import java.util.UUID;
|
|
|
|
@Entity
|
|
@Getter
|
|
@ToString
|
|
@NoArgsConstructor
|
|
@Table(name = "`user`")
|
|
public class User extends UserPublicAbstract {
|
|
|
|
@Id
|
|
@NonNull
|
|
@Getter(AccessLevel.NONE)
|
|
private String publicUuid = UUID.randomUUID().toString();
|
|
|
|
@Transient
|
|
private UserPublicUuid _publicUuid;
|
|
|
|
@NonNull
|
|
public UserPublicUuid getPublicUuid() {
|
|
if (_publicUuid == null) {
|
|
_publicUuid = new UserPublicUuid(publicUuid);
|
|
}
|
|
return _publicUuid;
|
|
}
|
|
|
|
@NonNull
|
|
@Getter(AccessLevel.NONE)
|
|
@Column(nullable = false, unique = true, updatable = false)
|
|
private String privateUuid = UUID.randomUUID().toString();
|
|
|
|
@Transient
|
|
private UserPrivateUuid _privateUuid;
|
|
|
|
@NonNull
|
|
public UserPrivateUuid getPrivateUuid() {
|
|
if (_privateUuid == null) {
|
|
_privateUuid = new UserPrivateUuid(privateUuid);
|
|
}
|
|
return _privateUuid;
|
|
}
|
|
|
|
@NonNull
|
|
@Column(nullable = false)
|
|
private ZonedDateTime created = ZonedDateTime.now();
|
|
|
|
@NonNull
|
|
@Column(nullable = false)
|
|
private ZonedDateTime lastAccess = created;
|
|
|
|
@Setter
|
|
@NonNull
|
|
@Column(nullable = false, unique = true)
|
|
private String name;
|
|
|
|
@Column(nullable = false)
|
|
private boolean admin = false;
|
|
|
|
@NonNull
|
|
@ToString.Exclude
|
|
@Column(nullable = false)
|
|
private String password = "";
|
|
|
|
public User(@NonNull final String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public void touch() {
|
|
lastAccess = ZonedDateTime.now();
|
|
}
|
|
|
|
public void setPassword(@NonNull final PasswordEncoder passwordEncoder, @NonNull final String password) {
|
|
this.password = passwordEncoder.encode(password);
|
|
}
|
|
|
|
}
|