X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSimpleRoleRegistration.java;fp=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSimpleRoleRegistration.java;h=aa8a5f06e2bb23b447921e4ea19b085fa66dfe61;hb=10ed6557c631d5feee8541badd0c9f16a9e791c6;hp=0000000000000000000000000000000000000000;hpb=864072113f7a44fd2a291a4cb50659d6e67f8c29;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/security/core/SimpleRoleRegistration.java b/org.argeo.security.core/src/org/argeo/security/core/SimpleRoleRegistration.java new file mode 100644 index 000000000..aa8a5f06e --- /dev/null +++ b/org.argeo.security.core/src/org/argeo/security/core/SimpleRoleRegistration.java @@ -0,0 +1,57 @@ +package org.argeo.security.core; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.security.UserAdminService; + +/** + * Register one or many roles via a user admin service. Does nothing if the role + * is already registered. + */ +public class SimpleRoleRegistration implements Runnable { + private final static Log log = LogFactory + .getLog(SimpleRoleRegistration.class); + + private String role; + private List roles = new ArrayList(); + private UserAdminService userAdminService; + + @Override + public void run() { + Set existingRoles = userAdminService.listEditableRoles(); + if (role != null && !existingRoles.contains(role)) + newRole(role); + for (String r : roles) { + if (!existingRoles.contains(r)) + newRole(r); + } + } + + protected void newRole(String r) { + userAdminService.newRole(r); + log.info("Added role " + r + " required by application."); + } + + public void register(UserAdminService userAdminService, Map properties) { + this.userAdminService = userAdminService; + run(); + } + + public void setRole(String role) { + this.role = role; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public void setUserAdminService(UserAdminService userAdminService) { + this.userAdminService = userAdminService; + } + +}