From 03417898ca26ce1f047c3c890ffa66092d9fd9c6 Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Wed, 28 Oct 2020 15:29:54 +0100 Subject: [PATCH] Create _authenticated group at startup --- .../scm/lifecycle/SetupContextListener.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/SetupContextListener.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/SetupContextListener.java index af95c09aa8..eade2c2783 100644 --- a/scm-webapp/src/main/java/sonia/scm/lifecycle/SetupContextListener.java +++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/SetupContextListener.java @@ -30,6 +30,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.SCMContext; import sonia.scm.config.ScmConfiguration; +import sonia.scm.group.Group; +import sonia.scm.group.GroupManager; import sonia.scm.plugin.Extension; import sonia.scm.security.AnonymousMode; import sonia.scm.security.PermissionAssigner; @@ -44,6 +46,8 @@ import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import java.util.Collections; +import static sonia.scm.group.GroupCollector.AUTHENTICATED; + @Extension public class SetupContextListener implements ServletContextListener { @@ -75,13 +79,17 @@ public class SetupContextListener implements ServletContextListener { private final PasswordService passwordService; private final PermissionAssigner permissionAssigner; private final ScmConfiguration scmConfiguration; + private final GroupManager groupManager; + + private static final String AUTHENTICATED_GROUP_DESCRIPTION = "Includes all authenticated users"; @Inject - public SetupAction(UserManager userManager, PasswordService passwordService, PermissionAssigner permissionAssigner, ScmConfiguration scmConfiguration) { + public SetupAction(UserManager userManager, PasswordService passwordService, PermissionAssigner permissionAssigner, ScmConfiguration scmConfiguration, GroupManager groupManager) { this.userManager = userManager; this.passwordService = passwordService; this.permissionAssigner = permissionAssigner; this.scmConfiguration = scmConfiguration; + this.groupManager = groupManager; } @Override @@ -92,6 +100,10 @@ public class SetupContextListener implements ServletContextListener { if (anonymousUserRequiredButNotExists()) { userManager.create(SCMContext.ANONYMOUS); } + + if (authenticatedGroupDoesNotExists()) { + createAuthenticatedGroup(); + } } private boolean anonymousUserRequiredButNotExists() { @@ -115,5 +127,15 @@ public class SetupContextListener implements ServletContextListener { PermissionDescriptor descriptor = new PermissionDescriptor("*"); permissionAssigner.setPermissionsForUser("scmadmin", Collections.singleton(descriptor)); } + + private boolean authenticatedGroupDoesNotExists() { + return (groupManager.get(AUTHENTICATED) == null); + } + + private void createAuthenticatedGroup() { + Group authenticated = new Group("xml", AUTHENTICATED); + authenticated.setDescription(AUTHENTICATED_GROUP_DESCRIPTION); + groupManager.create(authenticated); + } } }