New view-only mode for client
This commit is contained in:
@ -19,7 +19,7 @@ import es.mesacarlos.webconsole.websocket.command.WSCommand;
|
||||
import es.mesacarlos.webconsole.websocket.response.ConsoleOutput;
|
||||
import es.mesacarlos.webconsole.websocket.response.JSONOutput;
|
||||
import es.mesacarlos.webconsole.websocket.response.LoginRequired;
|
||||
import es.mesacarlos.webconsole.websocket.response.Processed;
|
||||
import es.mesacarlos.webconsole.websocket.response.LoggedIn;
|
||||
import es.mesacarlos.webconsole.websocket.response.UnknownCommand;
|
||||
|
||||
public class WSServer extends WebSocketServer {
|
||||
@ -34,7 +34,7 @@ public class WSServer extends WebSocketServer {
|
||||
@Override
|
||||
public void onOpen(WebSocket conn, ClientHandshake handshake) {
|
||||
if (LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress())) {
|
||||
sendToClient(conn, new Processed(Internationalization.getPhrase("connection-resumed-message")));
|
||||
sendToClient(conn, new LoggedIn(Internationalization.getPhrase("connection-resumed-message")));
|
||||
Bukkit.getLogger().info(Internationalization.getPhrase("connection-resumed-console", conn.getRemoteSocketAddress()));
|
||||
} else {
|
||||
sendToClient(conn, new LoginRequired(Internationalization.getPhrase("connection-login-message")));
|
||||
|
@ -4,12 +4,13 @@ import org.bukkit.Bukkit;
|
||||
import org.java_websocket.WebSocket;
|
||||
|
||||
import es.mesacarlos.webconsole.auth.LoginManager;
|
||||
import es.mesacarlos.webconsole.auth.PasswordManager;
|
||||
import es.mesacarlos.webconsole.auth.User;
|
||||
import es.mesacarlos.webconsole.auth.UserType;
|
||||
import es.mesacarlos.webconsole.util.Internationalization;
|
||||
import es.mesacarlos.webconsole.websocket.WSServer;
|
||||
import es.mesacarlos.webconsole.websocket.response.LoginRequired;
|
||||
import es.mesacarlos.webconsole.websocket.response.Processed;
|
||||
import es.mesacarlos.webconsole.websocket.response.LoggedIn;
|
||||
|
||||
public class LogInCommand implements WSCommand {
|
||||
|
||||
@ -20,12 +21,12 @@ public class LogInCommand implements WSCommand {
|
||||
return;
|
||||
|
||||
//Check user type and login is password is valid
|
||||
switch(LoginManager.getInstance().isValidUser(password)) {
|
||||
switch(PasswordManager.isValidUser(password)) {
|
||||
case ADMIN:
|
||||
login(wsServer, conn, LoginManager.getInstance().isValidAdminPassword(password), UserType.ADMIN);
|
||||
login(wsServer, conn, PasswordManager.isValidAdminPassword(password), UserType.ADMIN);
|
||||
break;
|
||||
case VIEWER:
|
||||
login(wsServer, conn, LoginManager.getInstance().isValidViewerPassword(password), UserType.VIEWER);
|
||||
login(wsServer, conn, PasswordManager.isValidViewerPassword(password), UserType.VIEWER);
|
||||
break;
|
||||
case UNKNOWN:
|
||||
wsServer.sendToClient(conn, new LoginRequired(Internationalization.getPhrase("login-failed-message")));
|
||||
@ -43,7 +44,7 @@ public class LogInCommand implements WSCommand {
|
||||
User user = new User(conn.getRemoteSocketAddress(), username, as);
|
||||
LoginManager.getInstance().logIn(user);
|
||||
|
||||
wsServer.sendToClient(conn, new Processed(Internationalization.getPhrase("login-sucessful-message"), "LOGIN ********"));
|
||||
wsServer.sendToClient(conn, new LoggedIn(Internationalization.getPhrase("login-sucessful-message"), "LOGIN ********", user.getUsername(), user.getUserType()));
|
||||
Bukkit.getLogger().info(Internationalization.getPhrase("login-sucessful-console", user.toString()));
|
||||
}
|
||||
|
||||
|
@ -2,17 +2,23 @@ package es.mesacarlos.webconsole.websocket.response;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class Processed implements JSONOutput{
|
||||
import es.mesacarlos.webconsole.auth.UserType;
|
||||
|
||||
public class LoggedIn implements JSONOutput{
|
||||
private String message;
|
||||
private String respondsTo;
|
||||
private String username;
|
||||
private UserType as;
|
||||
|
||||
public Processed(String message) {
|
||||
public LoggedIn(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Processed(String message, String respondsTo) {
|
||||
public LoggedIn(String message, String respondsTo, String username, UserType as) {
|
||||
this.message = message;
|
||||
this.respondsTo = respondsTo;
|
||||
this.username = username;
|
||||
this.as = as;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -33,12 +39,28 @@ public class Processed implements JSONOutput{
|
||||
return respondsTo;
|
||||
}
|
||||
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public String getAs() {
|
||||
switch(as) {
|
||||
case ADMIN:
|
||||
return "ADMIN";
|
||||
default:
|
||||
return "VIEWER"; //This is not a security hole bc its just informative...
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toJSON() {
|
||||
JsonObject object = new JsonObject();
|
||||
object.addProperty("status", getStatusCode());
|
||||
object.addProperty("statusDescription", "Processed");
|
||||
object.addProperty("statusDescription", "LoggedIn");
|
||||
object.addProperty("respondsTo", getRespondsTo());
|
||||
object.addProperty("username", getUsername());
|
||||
object.addProperty("as", getAs());
|
||||
object.addProperty("message", getMessage());
|
||||
return object.toString();
|
||||
}
|
Reference in New Issue
Block a user