diff --git a/scm-core/src/main/java/sonia/scm/repository/Namespace.java b/scm-core/src/main/java/sonia/scm/repository/Namespace.java index 0826a4f1ea..d2421c102d 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Namespace.java +++ b/scm-core/src/main/java/sonia/scm/repository/Namespace.java @@ -24,16 +24,29 @@ package sonia.scm.repository; +import com.github.sdorra.ssp.PermissionObject; +import com.github.sdorra.ssp.StaticPermissions; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; import java.util.Collection; import java.util.HashSet; import java.util.Set; import static java.util.Collections.unmodifiableCollection; -public class Namespace implements Cloneable { +@StaticPermissions( + value = "namespace", + globalPermissions = {"permissionRead", "permissionWrite"}, + permissions = {}, + custom = true, customGlobal = true +) +@XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement(name = "namespaces") +public class Namespace implements PermissionObject, Cloneable { private String namespace; private Set permissions = new HashSet<>(); @@ -69,6 +82,11 @@ public class Namespace implements Cloneable { return this.permissions.remove(permission); } + @Override + public String getId() { + return getNamespace(); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/scm-webapp/src/main/resources/META-INF/scm/permissions.xml b/scm-webapp/src/main/resources/META-INF/scm/permissions.xml index bc50fbd3da..0889341d25 100644 --- a/scm-webapp/src/main/resources/META-INF/scm/permissions.xml +++ b/scm-webapp/src/main/resources/META-INF/scm/permissions.xml @@ -44,6 +44,12 @@ repository:create + + namespace:permissionRead + + + namespace:permissionWrite + user:* diff --git a/scm-webapp/src/main/resources/locales/de/plugins.json b/scm-webapp/src/main/resources/locales/de/plugins.json index c5ab04d950..8804aa1a16 100644 --- a/scm-webapp/src/main/resources/locales/de/plugins.json +++ b/scm-webapp/src/main/resources/locales/de/plugins.json @@ -93,6 +93,16 @@ "description": "Darf alle installierten und verfügbaren Plugins lesen und verwalten" } }, + "namespace": { + "permissionRead": { + "displayName": "Berechtigungen auf Namespaces lesen", + "description": "Darf die Berechtigungen auf Namespace-Ebene sehen" + }, + "permissionWrite": { + "displayName": "Berechtigungen auf Namespaces modifizieren", + "description": "Darf die Berechtigungen auf Namespace-Ebene bearbeiten" + } + }, "unknown": "Unbekannte Berechtigung" }, "verbs": { diff --git a/scm-webapp/src/main/resources/locales/en/plugins.json b/scm-webapp/src/main/resources/locales/en/plugins.json index 7338d53267..05e70bb299 100644 --- a/scm-webapp/src/main/resources/locales/en/plugins.json +++ b/scm-webapp/src/main/resources/locales/en/plugins.json @@ -93,6 +93,16 @@ "description": "May see and manage all installed and available plugins" } }, + "namespace": { + "permissionRead": { + "displayName": "read permissions on namespaces", + "description": "May see the permissions set for namespaces" + }, + "permissionWrite": { + "displayName": "modify permissions on namespaces", + "description": "May modify the permissions set for namespaces" + } + }, "unknown": "Unknown permission" }, "verbs": {