From c54956d642082d6a7a39545804cee06b16fed537 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 8 Dec 2015 16:51:01 +0000 Subject: [PATCH] CCM NG: More work to get CCM NG running git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3765 8810af33-2d31-482b-a856-94f89814c4df --- .../WEB-INF/conf/registry/registry.properties | 1 + .../main/java/org/libreccm/core/CcmCore.java | 5 ++ .../libreccm/security/SystemUsersSetup.java | 75 ++++++++++++++++++- .../WEB-INF/conf/registry/registry.properties | 1 + 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 ccm-bundle-devel-wildfly/src/main/webapp/WEB-INF/conf/registry/registry.properties create mode 100644 ccm-test-bundle-wildfly8/src/main/webapp/WEB-INF/conf/registry/registry.properties diff --git a/ccm-bundle-devel-wildfly/src/main/webapp/WEB-INF/conf/registry/registry.properties b/ccm-bundle-devel-wildfly/src/main/webapp/WEB-INF/conf/registry/registry.properties new file mode 100644 index 000000000..9bb7b6ea9 --- /dev/null +++ b/ccm-bundle-devel-wildfly/src/main/webapp/WEB-INF/conf/registry/registry.properties @@ -0,0 +1 @@ +waf.config.packages=ccm-core \ No newline at end of file diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java index cd2ade090..d123e299e 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java @@ -18,6 +18,7 @@ */ package org.libreccm.core; +import com.arsdigita.runtime.ConfigRegistry; import com.arsdigita.ui.admin.AdminApplicationCreator; import com.arsdigita.ui.admin.AdminServlet; import com.arsdigita.ui.login.LoginApplicationCreator; @@ -101,6 +102,10 @@ public class CcmCore implements CcmModule { final SystemUsersSetup systemUsersSetup = new SystemUsersSetup( entityManager); systemUsersSetup.setupSystemUsers(); + + final ConfigRegistry configRegistry = new ConfigRegistry(); + configRegistry.initialize("ccm-core"); + } @Override diff --git a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java index 55eff0cb3..14a0200f3 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java +++ b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java @@ -18,9 +18,15 @@ */ package org.libreccm.security; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.libreccm.core.CcmCore; import org.libreccm.core.EmailAddress; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + import javax.persistence.EntityManager; /** @@ -31,6 +37,11 @@ import javax.persistence.EntityManager; */ public class SystemUsersSetup { + private static final Logger LOGGER = LogManager.getLogger( + SystemUsersSetup.class); + + private static final String DEFAULT_ADMIN_PW = "$shiro1$SHA-512$500000$MFPkVikNoRrBZ8R8CxQIHA==$UvgO2K+poSRGw5co63P3ygpWsX7H9N0TgqdrZPBqdXv6Q+/OCL/qOocVbg65/Yjv5hyri6A3zhw7K8mEgpISoA=="; + private final EntityManager entityManager; public SystemUsersSetup(final EntityManager entityManager) { @@ -38,13 +49,71 @@ public class SystemUsersSetup { } public void setupSystemUsers() { + LOGGER.info("Creating system users..."); + createAdmin(); + createPublicUser(); + } + + private void createAdmin() { + LOGGER.info("Creating admin user..."); + final User admin = new User(); + admin.setName("admin"); + admin.setFamilyName("LibreCCM"); + admin.setGivenName("System Administrator"); + final EmailAddress adminEmail = new EmailAddress(); + adminEmail.setAddress("admin@localhost"); + admin.setPrimaryEmailAddress(adminEmail); + + String adminPassword = DEFAULT_ADMIN_PW; + final InputStream inputStream = getClass().getResourceAsStream( + "/integration.properties"); + if (inputStream == null) { + LOGGER.warn("No integration.properties file found. Using default " + + "password (see documentation)"); + } else { + final Properties properties = new Properties(); + try { + properties.load(inputStream); + final String password = properties.getProperty("admin.password"); + if((password != null) && !password.isEmpty()) { + adminPassword = password; + } + } catch (IOException ex) { + LOGGER.warn("Failed to load integration.properties. " + + "Using default password.", + ex); + } + } + admin.setPassword(adminPassword); + + final Role adminRole = new Role(); + adminRole.setName("system-administrator"); + + final RoleMembership membership = new RoleMembership(); + membership.setRole(adminRole); + membership.setMember(admin); + + final Permission adminPermission = new Permission(); + adminPermission.setGrantee(adminRole); + adminPermission.setGrantedPrivilege("*"); + + admin.addRoleMembership(membership); + adminRole.addMembership(membership); + + entityManager.persist(admin); + entityManager.persist(adminRole); + entityManager.persist(membership); + entityManager.persist(adminPermission); + } + + private void createPublicUser() { final User user = new User(); user.setName("public-user"); - user.setFamilyName("ccm"); - user.setGivenName("public user"); + user.setFamilyName("LibreCCM"); + user.setGivenName("Public User"); final EmailAddress email = new EmailAddress(); email.setAddress("public-user@localhost"); - user.addEmailAddress(email); + user.setPrimaryEmailAddress(email); entityManager.persist(user); } diff --git a/ccm-test-bundle-wildfly8/src/main/webapp/WEB-INF/conf/registry/registry.properties b/ccm-test-bundle-wildfly8/src/main/webapp/WEB-INF/conf/registry/registry.properties new file mode 100644 index 000000000..9bb7b6ea9 --- /dev/null +++ b/ccm-test-bundle-wildfly8/src/main/webapp/WEB-INF/conf/registry/registry.properties @@ -0,0 +1 @@ +waf.config.packages=ccm-core \ No newline at end of file