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