Tools/src/main/java/de/ph87/tools/user/User.java
2024-11-04 08:59:40 +01:00

82 lines
1.7 KiB
Java

package de.ph87.tools.user;
import de.ph87.tools.web.IWebSocketMessage;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.*;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.UUID;
@Entity
@Getter
@ToString
@NoArgsConstructor
@Table(name = "`user`")
public class User implements IWebSocketMessage {
@Id
@NonNull
@Column(nullable = false)
private String privateUuid = UUID.randomUUID().toString();
@NonNull
@Column(nullable = false)
private String publicUuid = UUID.randomUUID().toString();
@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
@Column(nullable = false)
private String password = "";
public User(@NonNull final String name) {
this.name = name;
}
public void touch() {
lastAccess = ZonedDateTime.now();
}
@Override
public List<Object> getWebsocketTopic() {
return List.of("User", privateUuid);
}
@Override
public boolean equals(final Object obj) {
if (!(obj instanceof final User user)) {
return false;
}
return user.privateUuid.equals(this.privateUuid);
}
@Override
public int hashCode() {
return privateUuid.hashCode();
}
public void setPassword(@NonNull final PasswordEncoder passwordEncoder, @NonNull final String password) {
this.password = passwordEncoder.encode(password);
}
}