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

Reply via email to