mirror of
https://github.com/GravitLauncher/Launcher
synced 2025-03-28 03:58:17 +03:00
71 lines
2 KiB
Java
71 lines
2 KiB
Java
package pro.gravit.launchserver.dao;
|
|
|
|
import pro.gravit.launcher.ClientPermissions;
|
|
import pro.gravit.utils.helper.LogHelper;
|
|
import pro.gravit.utils.helper.SecurityHelper;
|
|
|
|
import javax.persistence.*;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.security.MessageDigest;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.util.Arrays;
|
|
import java.util.UUID;
|
|
|
|
@Entity
|
|
@Table(name = "users")
|
|
public class User {
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private long id;
|
|
@Column(unique = true)
|
|
public String username;
|
|
public String email;
|
|
@Column(unique = true)
|
|
public UUID uuid;
|
|
@Column(name = "password")
|
|
private byte[] password;
|
|
private String accessToken;
|
|
public String serverID;
|
|
private String password_salt;
|
|
public long permissions;
|
|
|
|
public void setPassword(String password) {
|
|
password_salt = SecurityHelper.randomStringAESKey();
|
|
MessageDigest digest;
|
|
try {
|
|
digest = MessageDigest.getInstance("SHA-256");
|
|
} catch (NoSuchAlgorithmException e) {
|
|
LogHelper.error(e);
|
|
return;
|
|
}
|
|
this.password = digest.digest(password.concat(password_salt).getBytes(StandardCharsets.UTF_8));
|
|
}
|
|
|
|
public boolean verifyPassword(String password) {
|
|
MessageDigest digest;
|
|
try {
|
|
digest = MessageDigest.getInstance("SHA-256");
|
|
} catch (NoSuchAlgorithmException e) {
|
|
LogHelper.error(e);
|
|
return false;
|
|
}
|
|
byte[] enpassword = digest.digest(password.concat(password_salt).getBytes(StandardCharsets.UTF_8));
|
|
return Arrays.equals(enpassword, this.password);
|
|
}
|
|
|
|
public ClientPermissions getPermissions() {
|
|
return new ClientPermissions(permissions);
|
|
}
|
|
|
|
public void setPermissions(ClientPermissions permissions) {
|
|
this.permissions = permissions.toLong();
|
|
}
|
|
|
|
public String getAccessToken() {
|
|
return accessToken;
|
|
}
|
|
|
|
public void setAccessToken(String accessToken) {
|
|
this.accessToken = accessToken;
|
|
}
|
|
}
|