Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Stop Magnolia CMS.
  2. Copy the following JSP script and save it to your docroot folder, for example <apache-tomcat>/webapps/magnoliaAuthor/docroot/recovery-script.jsp.

    Code Block
    languagejava
    titlerecovery-script.jsp
    <%@ page contentType="text/plain" %>
    <%@ page import="info.magnolia.importexport.BootstrapUtil"%>
    <%@ page import="info.magnolia.context.*"%>
    <%@ page import="info.magnolia.cms.util.ContentUtil"%>
    <%@ page import="info.magnolia.cms.core.HierarchyManager"%>
    <%@ page import="javax.jcr.Node"%>
    <%@ page import="javax.jcr.ImportUUIDBehavior"%>
    <%
    info.magnolia.context.MgnlContext.setInstance(new info.magnolia.context.SingleJCRSessionSystemContext());
    try{
      BootstrapUtil.bootstrap(new String[]{"/mgnl-bootstrap/core/users.system.superuser.xml"}, 
        ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
      HierarchyManager hm = MgnlContext.getHierarchyManager("users");
      hm.save();
      } catch (Exception e) {
      System.out.println(e);
      }
      System.out.println("finished");
    %>
    
  3. Open <apache-tomcat>/webapps/magnoliaAuthor/WEB-INF/web.xml in a text editor.

  4. Comment out the <filter> and <filter-mapping>sections.

    Code Block
    languagexml
    <!-- filter>
      <display-name>Magnolia global filters</display-name>
      <filter-name>magnoliaFilterChain</filter-name>
      <filter-class>info.magnolia.cms.filters.MgnlMainFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>magnoliaFilterChain</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>FORWARD</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
      <dispatcher>ERROR</dispatcher>
    </filter-mapping -->
    
    Warning

    This will also disable the URI security filter, making your system vulnerable. Use a firewall or Apache Web Server in front of your application server to prevent unauthorized access while you do this.

  5. Save the web.xml file.
  6. Start Magnolia CMS.
  7. Request the JSP script at http://localhost:8080/magnoliaAuthor/docroot/recovery-script.jsp.
    The script will bootstrap the superuser account to default settings. You should see the following line in the log:

    Code Block
    WARN  info.magnolia.importexport.BootstrapUtil: 
    Deleted already existing node for bootstrapping: 
    /system/superuser
    
  8. Stop Magnolia CMS.
  9. Uncomment the <filter> and <filter-mapping> sections in the web.xml. (Undo step 4).
  10. Start Magnolia CMS.
  11. Log in as superuser with password superuser.

Alternative procedure using the Groovy Rescue App

An alternative to the above procedure is using the Groovy Rescue App.

Once set up as explained in the documentation link above, you can run the following script in the rescue app

Code Block
languagegroovy
titleReset superuser with Groovy
session = MgnlContext.getJCRSession("users")
superuser = session.getNode('/system/superuser') 
superuser.pswd = info.magnolia.cms.security.SecurityUtil.getBCrypt('superuser') 
session.save()