Further reducing auth code
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ServiceProxyExtensions.java
index dae3a17..d283b29 100644 (file)
@@ -16,11 +16,10 @@ import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.AuthCommand;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload;\r
-import com.indexdata.mkjsf.pazpar2.data.AuthResponse;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
 import com.indexdata.mkjsf.pazpar2.data.Responses;\r
-import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
 @Named("pz2x") @SessionScoped\r
@@ -33,7 +32,6 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   private InitDocUpload initDocUpload; \r
     \r
   @Inject ConfigurationReader configurator;  \r
-  @Inject ServiceProxyUser user;    \r
   @Inject Pz2Bean pz2;\r
   @Inject Pazpar2Commands pzreq;\r
   @Inject Responses pzresp;\r
@@ -45,71 +43,43 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
     //stateMgr.addStateListener(this);\r
   }\r
    \r
-  /*\r
-  public void login(String un, String pw) {\r
-    if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) {\r
-      logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in.");\r
-    } else {\r
-      logger.info("doing un/pw login");\r
-      user.setName(un);\r
-      user.setPassword(pw);\r
-      login("dummy");\r
-    }\r
-  }\r
-  */\r
-\r
-  \r
-  @Override  \r
-  public String login(String navigateTo) {\r
-    logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient());\r
+  public void authenticate() {\r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
-    AuthCommand auth = pzreq.getSp().getAuth(); \r
-    auth.setParametersInState(new CommandParameter("action","=","login"),\r
-                              new CommandParameter("username","=",user.getName()),\r
-                              new CommandParameter("password","=",user.getPassword()));\r
-    ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
+    AuthCommand auth = pzreq.getSp().getAuth();     \r
+    ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);      \r
     String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth");\r
     commandResponse.setResponseToParse(renamedResponse);\r
-    AuthResponse responseObject = (AuthResponse) ResponseParser.getParser().getDataObject(commandResponse);\r
+    ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(commandResponse);\r
     if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
       pzresp.put(auth.getCommandName(), responseObject);\r
     }\r
     String responseStr = commandResponse.getResponseString();\r
-    logger.info(responseStr);      \r
-    if (responseStr.contains("FAIL")) {\r
-      user.credentialsAuthenticationSucceeded(false);    \r
-    } else {\r
-      user.credentialsAuthenticationSucceeded(true);    \r
-    }      \r
-    return navigateTo;\r
+    logger.info(responseStr);          \r
   }\r
   \r
+  public void login(String un, String pw) {      \r
+      login(un,pw,"");\r
+  }\r
   \r
-  public void ipAuthenticate (ServiceProxyUser user) {\r
-    if (!user.isIpAuthenticated()) {\r
-      if (user.isAuthenticated()) {\r
-        user.clear();\r
-      }\r
-      pz2.resetSearchAndRecordCommands();\r
-      pzresp.resetAllSessionData();\r
-      AuthCommand auth = pzreq.getSp().getAuth(); \r
-      auth.setParameterInState(new CommandParameter("action","=","ipAuth"));\r
-      ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);      \r
-      String renamedResponse = renameResponseElement(commandResponse.getResponseString(), "auth");\r
-      commandResponse.setResponseToParse(renamedResponse);\r
-      ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(commandResponse);\r
-      if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
-        pzresp.put(auth.getCommandName(), responseObject);\r
-      }\r
-      String responseStr = commandResponse.getResponseString();\r
-      logger.info(responseStr);      \r
-      if (responseStr.contains("FAIL")) {\r
-        user.credentialsAuthenticationSucceeded(false);    \r
-      } else {\r
-        user.credentialsAuthenticationSucceeded(true);    \r
-      }      \r
-    }\r
+  public void login(String un, String pw, String navigateTo) {      \r
+    pzreq.getSp().getAuth().setUsername(un);\r
+    pzreq.getSp().getAuth().setPassword(pw);\r
+    login("");\r
+  }  \r
+    \r
+  @Override  \r
+  public String login(String navigateTo) {\r
+    AuthCommand auth = pzreq.getSp().getAuth(); \r
+    auth.setParameterInState(new CommandParameter("action","=","login"));\r
+    authenticate();\r
+    return navigateTo;\r
+  }\r
+    \r
+  public void ipAuthenticate () {  \r
+    AuthCommand auth = pzreq.getSp().getAuth(); \r
+    auth.setParameterInState(new CommandParameter("action","=","ipAuth"));\r
+    authenticate();\r
   }\r
   \r
   private String renameResponseElement(String responseString, String newName) {\r
@@ -137,9 +107,9 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException {    \r
     String initDocPath = pz2.getSpClient().getInitDocPaths().get(0);\r
     logger.info("Paths: " + pz2.getSpClient().getInitDocPaths());\r
-    logger.info("Path: " + initDocPath);\r
+    logger.info("Path: " + initDocPath);   \r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName());    \r
     return response;\r
   }\r
@@ -147,7 +117,7 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
   @Override\r
   public HttpResponseWrapper postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException {    \r
     pz2.resetSearchAndRecordCommands();\r
-    pzresp.resetAllSessionData();\r
+    pzresp.getSp().resetAuthAndBeyond(true);\r
     HttpResponseWrapper response = pz2.getSpClient().postInitDoc(initDoc,includeDebug);    \r
     return response;\r
   }\r
@@ -181,8 +151,30 @@ public class ServiceProxyExtensions implements ServiceProxyInterface, Serializab
     return initDocUpload.getIncludeDebug();\r
   }\r
   \r
-  // TODO: Remove when possible\r
+  // TODO: Remove when obsolete\r
   public InitDocUpload getInitDocUpload () {\r
     return initDocUpload;\r
   }\r
+  \r
+  public CategoriesResponse getCategories () {\r
+    if (pz2.isServiceProxyService()) {\r
+      ResponseDataObject response = pz2.doCommand("categories");\r
+      if (response.hasApplicationError()) {\r
+        logger.debug(response.getXml());\r
+        return new CategoriesResponse();\r
+      } else {\r
+        try {\r
+          return (CategoriesResponse) response;\r
+        } catch (Exception e) {\r
+          e.printStackTrace();\r
+          logger.debug(response.getXml());\r
+          return new CategoriesResponse();\r
+        }\r
+      }\r
+    } else {\r
+      return new CategoriesResponse();\r
+    }\r
+  }\r
+  \r
+  \r
 }\r