summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/localrpc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/localrpc')
-rw-r--r--src/main/java/org/openslx/imagemaster/localrpc/JsonUser.java20
-rw-r--r--src/main/java/org/openslx/imagemaster/localrpc/NetworkHandler.java19
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 );
}