add staff password login
This commit is contained in:
parent
96f12f36f2
commit
379c8ba85d
1 changed files with 33 additions and 6 deletions
|
@ -4,6 +4,7 @@ import org.apache.commons.text.StringEscapeUtils;
|
||||||
import org.java_websocket.handshake.ServerHandshake;
|
import org.java_websocket.handshake.ServerHandshake;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
|
import javax.security.auth.login.CredentialException;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -34,7 +35,8 @@ public class CollabVMClient {
|
||||||
private ResetVote _currentVote;
|
private ResetVote _currentVote;
|
||||||
private boolean _usesAccountAuth;
|
private boolean _usesAccountAuth;
|
||||||
// Futures
|
// Futures
|
||||||
private CompletableFuture<AccountLoginResult> _loginFuture;
|
private CompletableFuture<AccountLoginResult> _accountLoginFuture;
|
||||||
|
private CompletableFuture<Integer> _passwordLoginFuture;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -90,13 +92,21 @@ public class CollabVMClient {
|
||||||
* @return A CompletableFuture that will complete when the login attempt is finished
|
* @return A CompletableFuture that will complete when the login attempt is finished
|
||||||
*/
|
*/
|
||||||
public CompletableFuture<AccountLoginResult> loginAccount(String token) {
|
public CompletableFuture<AccountLoginResult> loginAccount(String token) {
|
||||||
this._loginFuture = new CompletableFuture<>();
|
this._accountLoginFuture = new CompletableFuture<>();
|
||||||
this.sendGuac("login", token);
|
this.sendGuac("login", token);
|
||||||
return this._loginFuture;
|
return this._accountLoginFuture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
// Getters and setters
|
* Log into the VM using a staff password
|
||||||
|
* @param password The password to log in with
|
||||||
|
* @return A CompletableFuture that will complete when the login attempt is finished with the new rank
|
||||||
|
*/
|
||||||
|
public CompletableFuture<Integer> loginPassword(String password) {
|
||||||
|
this._passwordLoginFuture = new CompletableFuture<>();
|
||||||
|
this.sendGuac("admin", "2", password);
|
||||||
|
return this._passwordLoginFuture;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If not connected, sets the username to request when connecting.
|
* If not connected, sets the username to request when connecting.
|
||||||
|
@ -310,7 +320,7 @@ public class CollabVMClient {
|
||||||
}
|
}
|
||||||
case "login": {
|
case "login": {
|
||||||
boolean success = msgArr[1].equals("1");
|
boolean success = msgArr[1].equals("1");
|
||||||
this._loginFuture.complete(new AccountLoginResult(success, success ? null : msgArr[2]));
|
this._accountLoginFuture.complete(new AccountLoginResult(success, success ? null : msgArr[2]));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "auth": {
|
case "auth": {
|
||||||
|
@ -342,6 +352,23 @@ public class CollabVMClient {
|
||||||
}
|
}
|
||||||
case "admin": {
|
case "admin": {
|
||||||
switch (msgArr[1]) {
|
switch (msgArr[1]) {
|
||||||
|
case "0":
|
||||||
|
switch (msgArr[2]) {
|
||||||
|
case "0":
|
||||||
|
this._passwordLoginFuture.completeExceptionally(new CredentialException("Invalid password"));
|
||||||
|
break;
|
||||||
|
case "1":
|
||||||
|
this._rank = Rank.Admin;
|
||||||
|
this._permissions = Permissions.All();
|
||||||
|
this._passwordLoginFuture.complete(Rank.Admin);
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
this._rank = Rank.Moderator;
|
||||||
|
this._permissions = new Permissions(Integer.parseInt(msgArr[3]));
|
||||||
|
this._passwordLoginFuture.complete(Rank.Moderator);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue