diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/localrpc')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java | 20 | ||||
-rw-r--r-- | src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java | 19 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java b/src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java index 9c86ea7..3dff32f 100644 --- a/src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java +++ b/src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java @@ -2,7 +2,9 @@ package org.openslx.imagemaster.localrpc; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.openslx.bwlp.thrift.iface.AuthorizationError; import org.openslx.bwlp.thrift.iface.Role; +import org.openslx.bwlp.thrift.iface.TAuthorizationException; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.imagemaster.util.Util; @@ -17,9 +19,15 @@ public class JsonUser private String lastName = null; private String mail = null; private String role = null; + private String status; + private String error; + + private String accessCode; public UserInfo toUser() { + if ( !"ok".equals( status ) ) + return null; Role role; try { role = Role.valueOf( this.role ); @@ -35,4 +43,16 @@ public class JsonUser return ui; } + public TAuthorizationException toException() + { + if ( "ok".equals( status ) ) + return null; + return new TAuthorizationException( AuthorizationError.GENERIC_ERROR, this.error ); + } + + public String accessCode() + { + return this.accessCode; + } + } 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 ); } |