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.
Code Block |
---|
title | setPasswordToNull.jsp |
---|
borderStyle | solid |
---|
|
<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>
|