Author: channa
Date: Fri Jan 11 00:54:02 2008
New Revision: 12137
Log:
Changing user deletion to a disable operation, with the non-default option to
purge user data (WIP).
Modified:
trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java
trunk/mashup/java/modules/www/delete_user.jsp
trunk/mashup/java/modules/www/signin.jsp
Modified:
trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
==============================================================================
--- trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
(original)
+++ trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java
Fri Jan 11 00:54:02 2008
@@ -71,6 +71,7 @@
public static final String FIRST_NAME = "firstname";
public static final String LAST_NAME = "lastname";
public static final String EMAIL_ID = "email";
+ public static final String ENABLED = "enabled";
public static final String INFOCARD_PPID = "ppid";
public static final String INFOCARD_COUNT = "cardcount";
Modified:
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java
==============================================================================
---
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java
(original)
+++
trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java
Fri Jan 11 00:54:02 2008
@@ -18,16 +18,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.mashup.MashupConstants;
-import org.wso2.registry.RegistryConstants;
-import org.wso2.registry.RegistryException;
-import org.wso2.registry.secure.RegistryUserManager;
import org.wso2.registry.secure.SecureRegistry;
import org.wso2.usermanager.Realm;
import org.wso2.usermanager.UserManagerException;
import org.wso2.usermanager.UserStoreAdmin;
import org.wso2.usermanager.UserStoreReader;
-import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@@ -100,6 +96,7 @@
try {
UserStoreAdmin userStoreAdmin = realm.getUserStoreAdmin();
userStoreAdmin.deleteUser(userName);
+ deleteUserResources(registry, userName);
deletionSuccess = true;
} catch (UserManagerException e) {
log.error("Error deleting user", e);
@@ -108,6 +105,23 @@
}
/**
+ * Deletes resources created/owned by the user.
+ *
+ * @param registry Instance of the secure registry.
+ * @param userName name of user, who's resources must be deleted.
+ * @return true if the purge succeeded.
+ * todo: implement removal of services and all registry based resources.
+ */
+ private static boolean deleteUserResources(SecureRegistry registry, String
userName) {
+ boolean purgeSuccess = true;
+
+ // Delete services
+
+
+ return purgeSuccess;
+ }
+
+ /**
* Wraps the call to the user manager's isExistingUser method.
*
* @param request Servlet request instance.
@@ -116,18 +130,76 @@
*/
public static boolean isExistingUser(HttpServletRequest request, String
userName) {
boolean exists = false;
- ServletContext context = request.getSession().getServletContext();
SecureRegistry registry =
(SecureRegistry)
request.getSession().getAttribute(MashupConstants.USER_REGISTRY);
Realm realm = registry.getUserRealm();
try {
- // If the name has already been taken, signal an error.
+ // If the name exists, return true.
UserStoreReader userStoreReader = realm.getUserStoreReader();
exists = userStoreReader.isExistingUser(userName);
} catch (UserManagerException e) {
- log.error("Error adding user in user manager", e);
+ log.error("Error getting user properties", e);
}
return exists;
}
+
+ /**
+ * Gets the profile for a given user and returns if his or her profile is
enabled or disabled.
+ *
+ * @param registry Secure registry instance.
+ * @param userName User name to be checked for status.
+ * @return true if user profile is enabled.
+ */
+ public static boolean isUserActive(SecureRegistry registry, String
userName) {
+ boolean active = false;
+ Realm realm = registry.getUserRealm();
+
+ try {
+ // If the name has already been taken, signal an error.
+ UserStoreReader userStoreReader = realm.getUserStoreReader();
+ Map userProps = userStoreReader.getUserProperties(userName);
+
+ // Get 'enabled' property. If it doesn't exist, user status has
not been explicitly set.
+ if (!userProps.containsKey(MashupConstants.ENABLED)) {
+ active = true;
+ } else {
+ active = Boolean.parseBoolean((String)
userProps.get(MashupConstants.ENABLED));
+ }
+ } catch (UserManagerException e) {
+ log.error("Error getting user properties", e);
+ }
+ return active;
+ }
+
+ /**
+ * Gets the profile for a given user and sets the status to enabled or
disabled as specified.
+ *
+ * @param request Servlet request instance.
+ * @param userName User name to be checked for existance.
+ * @param enabled True to enable user and false to disable.
+ * @return true if the status change succeeded.
+ */
+ public static boolean setUserActiveStatus(HttpServletRequest request,
String userName,
+ boolean enabled) {
+ boolean success = false;
+ SecureRegistry registry =
+ (SecureRegistry) request.getSession()
+ .getAttribute(MashupConstants.USER_REGISTRY);
+ Realm realm = registry.getUserRealm();
+
+ try {
+ // If the name has already been taken, signal an error.
+ UserStoreAdmin userStoreAdmin = realm.getUserStoreAdmin();
+ Map userProps = userStoreAdmin.getUserProperties(userName);
+
+ // Set the 'enabled' property.
+ userProps.put(MashupConstants.ENABLED, String.valueOf(enabled));
+ userStoreAdmin.setUserProperties(userName, userProps);
+ success = true;
+ } catch (UserManagerException e) {
+ log.error("Error getting user properties", e);
+ }
+ return success;
+ }
}
Modified: trunk/mashup/java/modules/www/delete_user.jsp
==============================================================================
--- trunk/mashup/java/modules/www/delete_user.jsp (original)
+++ trunk/mashup/java/modules/www/delete_user.jsp Fri Jan 11 00:54:02 2008
@@ -32,13 +32,31 @@
} else {
bounceback = URLDecoder.decode(bounceback, "UTF-8");
}
+
+ if (userName != null) {
+ userName = URLDecoder.decode(userName, "UTF-8");
+ }
+
+ if (fullName != null) {
+ fullName = URLDecoder.decode(fullName, "UTF-8");
+ }
+
if (!"true".equals(firstcall)) {
if (RegistryUtils.isAdminRole(registry)) {
- if (ManageUsers.deleteUser(request, userName)) {
- response.sendRedirect(bounceback);
+ if ("true".equals(request.getParameter("purge"))) {
+ if (ManageUsers.deleteUser(request, userName)) {
+ response.sendRedirect(bounceback);
+ } else {
+ message = "User Deletion Failed";
+ deletionFailed = true;
+ }
} else {
- message = "User Deletion Failed";
- deletionFailed = true;
+ if (ManageUsers.setUserActiveStatus(request, userName, false))
{
+ response.sendRedirect(bounceback);
+ } else {
+ message = "Could not disable user profile.";
+ deletionFailed = true;
+ }
}
} else {
message = "You are not authorized to delete users!";
@@ -58,7 +76,7 @@
</head>
<body>
<div id="page">
- <% String thisPage = "registration_result.jsp"; %>
+ <% String thisPage = "delete_user.jsp"; %>
<%@ include file="header.jsp" %>
<div id="search"></div>
<div id="content" style="height:400px; ">
@@ -70,15 +88,15 @@
<table width="100%" border="0" cellspacing="0"
cellpadding="3">
<tr>
<td width="130"><label><strong>Deleting
User:</strong></label></td>
- <td><label><%= userName %>
- </label>
- </td>
+ <td><label><%= userName %></label></td>
</tr>
<tr>
<td width="130"><label><strong>Full
Name:</strong></label></td>
- <td><label><%= fullName %>
- </label>
- </td>
+ <td><label><%= fullName %></label></td>
+ </tr>
+ <tr>
+ <td width="130"><label><strong>Purge User
Data:</strong></label></td>
+ <td><input type="checkbox" name="purge"
value="true"/></td>
</tr>
<tr>
<% if (deletionFailed) { %>
Modified: trunk/mashup/java/modules/www/signin.jsp
==============================================================================
--- trunk/mashup/java/modules/www/signin.jsp (original)
+++ trunk/mashup/java/modules/www/signin.jsp Fri Jan 11 00:54:02 2008
@@ -22,17 +22,18 @@
<%@ page import="com.sun.syndication.feed.synd.SyndFeed" %>
<%@ page import="com.sun.syndication.feed.synd.SyndFeedImpl" %>
<%@ page import="com.sun.syndication.io.SyndFeedOutput" %>
+<%@ page import="org.apache.axis2.context.ConfigurationContext" %>
<%@ page import="org.wso2.mashup.MashupConstants" %>
<%@ page import="org.wso2.mashup.utils.QueryResult" %>
<%@ page import="org.wso2.mashup.utils.QueryResults" %>
<%@ page import="org.wso2.mashup.webapp.identity.InfoCardHandler" %>
<%@ page import="org.wso2.mashup.webapp.identity.RegistrationBean" %>
+<%@ page import="org.wso2.mashup.webapp.userprofile.ManageUsers" %>
<%@ page import="org.wso2.mashup.webapp.userprofile.User" %>
<%@ page import="org.wso2.mashup.webapp.userprofile.UserQuery" %>
<%@ page import="org.wso2.mashup.webapp.utils.QueryParamUtils" %>
<%@ page import="org.wso2.mashup.webapp.utils.RegistryUtils" %>
<%@ page import="org.wso2.registry.Comment" %>
-<%@ page import="org.wso2.registry.LogEntry" %>
<%@ page import="org.wso2.registry.Registry" %>
<%@ page import="org.wso2.registry.RegistryConstants" %>
<%@ page import="org.wso2.registry.RegistryException" %>
@@ -42,8 +43,11 @@
<%@ page import="org.wso2.registry.secure.SecureRegistry" %>
<%@ page import="org.wso2.usermanager.Realm" %>
<%@ page import="org.wso2.usermanager.UserManagerException" %>
-<%@ page import="org.wso2.usermanager.verification.email.EmailVerifier" %>
+<%@ page import="org.wso2.usermanager.UserStoreAdmin" %>
+<%@ page import="org.wso2.wsas.ServerManager" %>
<%@ page import="javax.servlet.ServletContext" %>
+<%@ page import="java.io.BufferedReader" %>
+<%@ page import="java.io.FileReader" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.util.ArrayList" %>
@@ -88,8 +92,13 @@
jdbcRegistry, realm);
request.getSession().setAttribute(MashupConstants.USER_REGISTRY,
secureRegistry);
- response.sendRedirect(bounceback);
+ // Check if the user is active - if not, fail login.
+ if (ManageUsers.isUserActive(secureRegistry, nameProvided)) {
+ response.sendRedirect(bounceback);
+ } else {
+ success = false;
+ }
} catch (RegistryException e) {
success = false;
}
_______________________________________________
Mashup-dev mailing list
[email protected]
http://www.wso2.org/cgi-bin/mailman/listinfo/mashup-dev