Author: prabath
Date: Fri Feb  8 02:46:47 2008
New Revision: 13461

Log:

handles user approval

Modified:
   
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDAuthVerificationAction.java
   
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDUserApprovalAction.java

Modified: 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDAuthVerificationAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDAuthVerificationAction.java
 (original)
+++ 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDAuthVerificationAction.java
 Fri Feb  8 02:46:47 2008
@@ -1,12 +1,16 @@
 package org.wso2.solutions.identity.user.ui.action;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import org.openid4java.message.ParameterList;
+import org.openid4java.server.ServerException;
 
 import org.apache.struts2.StrutsStatics;
 import org.wso2.solutions.identity.IdentityProviderConstants;
+import org.wso2.solutions.identity.persistence.IPPersistenceManager;
+import org.wso2.solutions.identity.persistence.dataobject.OpenIDUserRPDO;
 import org.wso2.solutions.identity.user.ui.util.UserUtil;
 
 import com.opensymphony.xwork2.ActionContext;
@@ -25,6 +29,7 @@
 
         ActionContext context = null;
         HttpServletRequest request = null;
+        HttpServletResponse response = null;
         String password = null;
         String openID = null;
         HttpSession session = null;
@@ -34,6 +39,8 @@
 
         context = ActionContext.getContext();
         request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);
+        response = (HttpServletResponse) context
+                .get(StrutsStatics.HTTP_RESPONSE);
         session = request.getSession();
 
         infoCardSignin = request.getParameter("InfoCardSignin");
@@ -41,6 +48,10 @@
         if (infoCardSignin != null && "Log in".equals(infoCardSignin)) {
 
             if (UserUtil.verifyInfoCardLogin(request)) {
+                if (!isRequiredUserApproval(request)) {
+                    response
+                            
.sendRedirect("server?_action=complete&authenticatedAndApproved=true");
+                }
                 return SUCCESS;
             } else {
                 this.addErrorMessage(getText("invalid_card_login"));
@@ -58,6 +69,10 @@
             user = UserUtil.getUserName(openID);
 
             if (UserUtil.doLogin(user, password)) {
+                if (!isRequiredUserApproval(request)) {
+                    response
+                            
.sendRedirect("server?_action=complete&authenticatedAndApproved=true");
+                }
                 return SUCCESS;
             } else {
                 this.addErrorMessage(getText("invalid_user_password"));
@@ -67,4 +82,35 @@
         }
 
     }
+
+    /**
+     * 
+     * @param request
+     * @return
+     * @throws ServerException
+     * @throws Exception
+     */
+    private boolean isRequiredUserApproval(HttpServletRequest request)
+            throws ServerException, Exception {
+
+        ParameterList requestParam = null;
+        requestParam = (ParameterList) request.getSession().getAttribute(
+                "parameterlist");
+
+        String openID = 
requestParam.getParameter("openid.identity").getValue();
+        String rpUrl = requestParam.getParameterValue("openid.return_to");
+
+        IPPersistenceManager db = IPPersistenceManager.getPersistanceManager();
+        OpenIDUserRPDO[] rpdos = null;
+
+        rpdos = db.getOpenIDUserRP(UserUtil.getUserName(openID), rpUrl);
+
+        if (rpdos != null && rpdos.length > 0) {
+
+            return !rpdos[0].getIsTrustedAlways();
+        }
+
+        return true;
+    }
+
 }

Modified: 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDUserApprovalAction.java
==============================================================================
--- 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDUserApprovalAction.java
     (original)
+++ 
trunk/solutions/identity/modules/user-ui/src/main/java/org/wso2/solutions/identity/user/ui/action/OpenIDUserApprovalAction.java
     Fri Feb  8 02:46:47 2008
@@ -9,6 +9,8 @@
 import org.openid4java.message.ParameterList;
 import org.wso2.solutions.identity.IdentityConstants;
 import org.wso2.solutions.identity.admin.RelyingPartyAdmin;
+import org.wso2.solutions.identity.persistence.IPPersistenceManager;
+import org.wso2.solutions.identity.persistence.dao.OpenIDUserRPDAO;
 import org.wso2.solutions.identity.persistence.dataobject.OpenIDUserRPDO;
 import org.wso2.solutions.identity.user.ui.util.UserUtil;
 
@@ -43,10 +45,10 @@
 
             ParameterList requestp = (ParameterList) request.getSession()
                     .getAttribute("parameterlist");
-            String openidreturnto = requestp
-                    .getParameterValue("openid.return_to");
+            String rpUrl = requestp.getParameterValue("openid.return_to");
             String openididentity = requestp
                     .getParameterValue("openid.identity");
+            String userId = UserUtil.getUserName(openididentity);
 
             OpenIDUserRPDO rpdo = null;
             rpdo = new OpenIDUserRPDO();
@@ -56,22 +58,37 @@
                 Date date = new Date();
 
                 if (authenticatedAndApproved.equalsIgnoreCase("once")) {
-                    rpdo.setIsTrustedAlways(true);
-                } else if 
(authenticatedAndApproved.equalsIgnoreCase("always")) {
                     rpdo.setIsTrustedAlways(false);
+                } else if 
(authenticatedAndApproved.equalsIgnoreCase("always")) {
+                    rpdo.setIsTrustedAlways(true);
                 }
 
-                rpdo.setRpUrl(openidreturnto);
                 rpdo.setLastVisit(date);
-                rpdo.setVisitCount(1);
-                rpdo.setUserId(UserUtil.getUserName(openididentity));
+                rpdo.setUserId(userId);
+                rpdo.setRpUrl(rpUrl);
 
-                RelyingPartyAdmin admin = new RelyingPartyAdmin();
-                admin.create(rpdo);
             } else {
                 return ERROR;
             }
 
+            IPPersistenceManager db = IPPersistenceManager
+                    .getPersistanceManager();
+            RelyingPartyAdmin admin = new RelyingPartyAdmin();
+            OpenIDUserRPDO[] rpdos = null;
+
+            rpdos = db.getOpenIDUserRP(userId, rpUrl);
+
+            if (rpdos != null && rpdos.length > 0) {
+                OpenIDUserRPDO existingDO = null;
+                existingDO = rpdos[0];
+                rpdo.setVisitCount(existingDO.getVisitCount() + 1);
+                rpdo.setId(existingDO.getId());
+                admin.update(rpdo);
+            } else {
+                rpdo.setVisitCount(1);
+                admin.create(rpdo);
+            }
+
         } catch (Exception e) {
             return ERROR;
         }

_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev

Reply via email to