Adds methods for displaying authentication status
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / sp / auth / ServiceProxyUser.java
index ed6d0ba..0c4cb92 100644 (file)
@@ -1,8 +1,6 @@
 package com.indexdata.mkjsf.pazpar2.sp.auth;\r
 \r
-import java.util.Arrays;\r
 import java.util.HashMap;\r
-import java.util.List;\r
 import java.util.Map;\r
 \r
 import javax.enterprise.context.SessionScoped;\r
@@ -16,18 +14,17 @@ import com.indexdata.mkjsf.utils.Utils;
 public class ServiceProxyUser implements AuthenticationEntity {\r
 \r
   private static final long serialVersionUID = 2351542518778803071L;\r
-  private List<String> possibleProperties = Arrays.asList("name","password","realm");\r
   private Map<String,String> actualProperties = new HashMap<String,String>();\r
   private static Logger logger = Logger.getLogger(ServiceProxyUser.class);\r
-  private boolean authenticated = false;\r
+  private boolean credsAuthenticated = false;\r
+  private boolean ipAuthenticated = false;\r
+  private boolean ipAuthFailure = false;\r
+  private boolean credsAuthFailure = false;  \r
 \r
   public ServiceProxyUser()  {\r
     logger.debug("ServiceProxyUser instantiated: " + Utils.objectId(this));\r
   }\r
   \r
-  public void setAuthenticationMethod() {    \r
-  }\r
-\r
   public String getName() { \r
     return actualProperties.get("name"); \r
   }\r
@@ -52,12 +49,57 @@ public class ServiceProxyUser implements AuthenticationEntity {
     return actualProperties.get("realm");\r
   }\r
    \r
-  public void isAuthenticated(boolean authenticated) {\r
-    this.authenticated = authenticated;\r
+  public void credentialsAuthenticationSucceeded (boolean success) {\r
+    this.credsAuthFailure = !success;\r
+    this.credsAuthenticated = success;\r
+    this.ipAuthenticated = false;\r
+    this.ipAuthFailure = false;\r
+  }\r
+  \r
+  public void ipAuthenticationSucceeded (boolean success) {\r
+    this.ipAuthFailure = !success;    \r
+    this.ipAuthenticated = success;\r
+    this.credsAuthenticated = false;\r
+    this.credsAuthFailure = false;\r
   }\r
   \r
   public boolean isAuthenticated() {\r
-    return authenticated;\r
+    return (ipAuthenticated || credsAuthenticated);\r
+  }\r
+  \r
+  public boolean isIpAuthenticated () {\r
+    return ipAuthenticated;\r
+  }\r
+  \r
+  public boolean isCredentialsAuthenticated () {\r
+    return credsAuthenticated;\r
+  }\r
+  \r
+  public boolean hasIpAuthFailure () {\r
+    return ipAuthFailure;\r
+  }\r
+  \r
+  public boolean hasCredsAuthFailure () {\r
+    return credsAuthFailure;\r
+  }\r
+  \r
+  public boolean hasAuthenticationFailure () {\r
+    return credsAuthFailure || ipAuthFailure;\r
+  }\r
+  \r
+  public void authenticationCheckFailed () {\r
+    ipAuthenticated = false;\r
+    credsAuthenticated = false;\r
+  }\r
+  \r
+  public String getAuthenticationStatus () {\r
+    return (isAuthenticated() ? \r
+              (isIpAuthenticated()? "IP authenticated" : \r
+                 (isCredentialsAuthenticated() ? "Authenticated by credentials" : "Unknown authentication method")) :\r
+              (hasAuthenticationFailure() ? \r
+                  (hasIpAuthFailure() ? "Authentication by IP address failed" :\r
+                      (hasCredsAuthFailure() ? "Authentication by credentials failed" : "Unknown authentication failure")) :\r
+                "Not authenticated"));\r
   }\r
   \r
 \r
@@ -70,11 +112,16 @@ public class ServiceProxyUser implements AuthenticationEntity {
   public Map<String, String> getPropertyMap() {\r
     return actualProperties;\r
   }\r
-\r
-  @Override\r
-  public List<String> getPossibleProperties() {\r
-    return possibleProperties;\r
-  } \r
+  \r
+  public void clear() {\r
+    actualProperties = new HashMap<String,String>();\r
+    credsAuthenticated = false;\r
+    ipAuthenticated = false;    \r
+  }\r
+  \r
+  public void setSpResponse (String responseXml) {\r
+    \r
+  }\r
   \r
 \r
 }\r