diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java b/src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java index 228d793..4416647 100644 --- a/src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java +++ b/src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java @@ -13,6 +13,7 @@ import java.util.concurrent.LinkedBlockingQueue; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.openslx.bwlp.thrift.iface.ClientSessionData; +import org.openslx.bwlp.thrift.iface.TAuthorizationException; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.imagemaster.session.Session; import org.openslx.imagemaster.session.SessionManager; @@ -125,13 +126,19 @@ public class NetworkHandler implements Runnable { try { JsonUser ju = gson.fromJson( payload, JsonUser.class ); - UserInfo u = ju.toUser(); - if ( u == null ) { - log.warn( "Invalid or inomplete RPC data (" + payload + ")" ); - return "Invalid or incomplete RPC data"; + TAuthorizationException ex = ju.toException(); + if ( ex != null ) { + SessionManager.addAuthError( ex, ju.accessCode() ); + return "Auth error"; + } else { + UserInfo u = ju.toUser(); + if ( u == null ) { + log.warn( "Invalid or inomplete RPC data (" + payload + ")" ); + return "Invalid or incomplete RPC data"; + } + ClientSessionData sd = SessionManager.addSession( new Session( u ), ju.accessCode() ); + return "TOKEN:" + sd.authToken + " SESSIONID:" + sd.sessionId; } - ClientSessionData sd = SessionManager.addSession( new Session( u ) ); - return "TOKEN:" + sd.authToken + " SESSIONID:" + sd.sessionId; } catch ( Throwable t ) { log.error( "Exception on json decode", t ); } |