You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Here's a script we used to reset all the passwords in our database to "". We used this when we went from Magnolia's native authentication to using LDAP.

setPasswordToNull.jsp
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:cms="urn:jsptld:cms-taglib"
	xmlns:cmsu="urn:jsptld:cms-util-taglib"
	xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core">

	<jsp:directive.page contentType="text/html; charset=UTF-8"
		session="false" />
	<jsp:output doctype-root-element="html"
		doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
		doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

	<html>
	<head>
	<title>Set User Password To Null</title>
	</head>
	<body>
	<jsp:directive.page import="info.magnolia.cms.core.Content" />
	<jsp:directive.page
		import="info.magnolia.cms.beans.config.ContentRepository" />
	<jsp:directive.page import="info.magnolia.cms.core.HierarchyManager" />
	<jsp:directive.page import="info.magnolia.context.MgnlContext" />
	<jsp:directive.page import="java.util.Iterator" />
	<jsp:directive.page import="info.magnolia.cms.core.NodeData" />
	<jsp:directive.page import="info.magnolia.cms.core.ItemType" />
	<jsp:directive.page import="javax.jcr.PathNotFoundException" />
	<jsp:directive.page import="javax.jcr.RepositoryException" />

	<jsp:declaration>
		<![CDATA[	
		public void processUsers( Content c, HttpServletResponse response )  {	
		   try {
		        int counter = 0;
		        Iterator users = c.getChildren(ItemType.USER).iterator();
            	System.out.println("Setting all passwords to null except superuser and anonymous");
             	while (users.hasNext()) {
                	 Content user = (Content) users.next();
                 	 try {
                     	 // skip anonymous user
                      	 if (user.getName().equalsIgnoreCase("anonymous")) continue;
                       	 // skip superuser user
                      	 if (user.getName().equalsIgnoreCase("superuser")) continue;
                         // else set password to an empty string
                         NodeData pswdNodeData = user.getNodeData("pswd"); 
                         //Add NodeData check in case that user does not have any pswd attribute 
                         //in magnolia repository
                         if (pswdNodeData.isExist()) {
	                     pswdNodeData.setValue("");
                         }
                         response.getWriter().println("Password for " + user.getName()+ " was set to null.</br>");
                         counter++;
                     } 
                     catch (RepositoryException re) {
                         System.out.println("Failed to set null password for " + user.getName());
                     }
               }
               c.save();
               response.getWriter().println("<h2>Total " + counter + " users' passwords were set to null.</h2>");
               response.flushBuffer();
               System.out.println("Successfully updated users repository");
           } 
           catch (PathNotFoundException pe) {
               pe.printStackTrace();
           }  
           catch (Throwable t) {
               t.printStackTrace();
           }

		}
				
		]]>
	</jsp:declaration>

	<jsp:scriptlet>
		<![CDATA[
	
		HierarchyManager hm = MgnlContext.getSystemContext().getHierarchyManager(ContentRepository.USERS);
		Content rootNode = hm.getContent("/");
		
		response.getWriter().println("<h1>Processing user profile ...</h1>");
		processUsers( rootNode, response);
		
		response.getWriter().println("Passwords for user \"anonymous\" and \"superuser\" remain unchanged.</br>");
		response.getWriter().println("</br>**** USER PASSWORD SET TO NULL COMPLETE ****");	
		
		]]>
	</jsp:scriptlet>
	</body>
	</html>

  • No labels