From ec95d85100579d19fda847cd945fe63f095f4c50 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 27 Feb 2015 10:32:57 +0000 Subject: [PATCH] Create a demo user at initialisation git-svn-id: https://svn.argeo.org/commons/trunk@7976 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/org/argeo/cms/KernelHeader.java | 1 + .../JackrabbitUserAdminService.java | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/org.argeo.cms/src/org/argeo/cms/KernelHeader.java b/org.argeo.cms/src/org/argeo/cms/KernelHeader.java index c72a410f0..94477c3d4 100644 --- a/org.argeo.cms/src/org/argeo/cms/KernelHeader.java +++ b/org.argeo.cms/src/org/argeo/cms/KernelHeader.java @@ -16,5 +16,6 @@ public interface KernelHeader { // RESERVED USERNAMES public final static String USERNAME_ADMIN = "root"; + public final static String USERNAME_DEMO = "demo"; public final static String USERNAME_ANONYMOUS = "anonymous"; } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/useradmin/jackrabbit/JackrabbitUserAdminService.java b/org.argeo.cms/src/org/argeo/cms/internal/useradmin/jackrabbit/JackrabbitUserAdminService.java index a363515c9..cc6d85b48 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/useradmin/jackrabbit/JackrabbitUserAdminService.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/useradmin/jackrabbit/JackrabbitUserAdminService.java @@ -1,5 +1,9 @@ package org.argeo.cms.internal.useradmin.jackrabbit; +import static org.argeo.cms.KernelHeader.ROLE_ADMIN; +import static org.argeo.cms.KernelHeader.USERNAME_ADMIN; +import static org.argeo.cms.KernelHeader.USERNAME_DEMO; + import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -12,7 +16,6 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; -import javax.jcr.Value; import javax.jcr.version.VersionManager; import org.apache.jackrabbit.api.JackrabbitSession; @@ -53,33 +56,44 @@ public class JackrabbitUserAdminService implements UserAdminService, AuthenticationProvider { private final static String JACKR_ADMINISTRATORS = "administrators"; private final static String REP_PRINCIPAL_NAME = "rep:principalName"; - private final static String REP_PASSWORD = "rep:password"; + // private final static String REP_PASSWORD = "rep:password"; private Repository repository; private JcrSecurityModel securityModel; private JackrabbitSession adminSession = null; - private String superUserInitialPassword = "demo"; + private String initialPassword = "demo"; public void init() throws RepositoryException { Authentication authentication = SecurityContextHolder.getContext() .getAuthentication(); authentication.getName(); adminSession = (JackrabbitSession) repository.login(); - Authorizable adminGroup = getUserManager().getAuthorizable( - KernelHeader.ROLE_ADMIN); + Authorizable adminGroup = getUserManager().getAuthorizable(ROLE_ADMIN); if (adminGroup == null) { - adminGroup = getUserManager().createGroup(KernelHeader.ROLE_ADMIN); + adminGroup = getUserManager().createGroup(ROLE_ADMIN); adminSession.save(); } + + // create superuser Authorizable superUser = getUserManager().getAuthorizable( - KernelHeader.USERNAME_ADMIN); + USERNAME_ADMIN); if (superUser == null) { - superUser = getUserManager().createUser( - KernelHeader.USERNAME_ADMIN, superUserInitialPassword); + superUser = getUserManager().createUser(USERNAME_ADMIN, + initialPassword); ((Group) adminGroup).addMember(superUser); - securityModel.sync(adminSession, KernelHeader.USERNAME_ADMIN, null); + securityModel.sync(adminSession, USERNAME_ADMIN, null); + adminSession.save(); + + // create demo user only at initialisation + Authorizable demoUser = getUserManager().getAuthorizable( + USERNAME_DEMO); + if (demoUser != null) + throw new CmsException("There is already a demo user"); + demoUser = getUserManager().createUser(USERNAME_DEMO, + initialPassword); + securityModel.sync(adminSession, USERNAME_DEMO, null); adminSession.save(); } securityModel.init(adminSession); -- 2.30.2