Create _authenticated group at startup

This commit is contained in:
Florian Scholdei
2020-10-28 15:29:54 +01:00
parent 200deed11f
commit 03417898ca

View File

@@ -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);
}
}
}