Merge tag 'v2.3.24' into testing
[gpl/argeo-suite.git] / org.argeo.api.app / src / org / argeo / api / app / SuiteRole.java
diff --git a/org.argeo.api.app/src/org/argeo/api/app/SuiteRole.java b/org.argeo.api.app/src/org/argeo/api/app/SuiteRole.java
new file mode 100644 (file)
index 0000000..07f2499
--- /dev/null
@@ -0,0 +1,47 @@
+package org.argeo.api.app;
+
+import javax.xml.namespace.QName;
+
+import org.argeo.api.acr.ArgeoNamespace;
+import org.argeo.api.acr.ContentName;
+import org.argeo.api.acr.ldap.LdapAttr;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.auth.SystemRole;
+
+/** Standard suite system roles. */
+public enum SuiteRole implements SystemRole {
+       /** An external person who has read access to part of the information. */
+       observer,
+       /** An active coworker. */
+       coworker,
+       /** Someone who is allowed validate and publish information. */
+       publisher,
+       /** Someone with manager status within an organisation. Does not necessarily give more rights. */
+       manager,
+       //
+       ;
+
+       private final static String QUALIFIER = "app.";
+
+       private final ContentName name;
+
+       SuiteRole() {
+               name = new ContentName(ArgeoNamespace.ROLE_NAMESPACE_URI, QUALIFIER + name());
+       }
+
+       @Override
+       public QName qName() {
+               return name;
+       }
+
+       @Deprecated
+       private String getRolePrefix() {
+               return "org.argeo.suite";
+       }
+
+       @Deprecated
+       public String dn() {
+               return new StringBuilder(LdapAttr.cn.name()).append("=").append(getRolePrefix()).append(".").append(name())
+                               .append(",").append(CmsConstants.SYSTEM_ROLES_BASEDN).toString();
+       }
+}