mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-17 02:31:14 +01:00
user with write permission on namespacesPermissions may also read the namespacePermissions so it is consistent to other permissions
This commit is contained in:
@@ -617,9 +617,9 @@ export function getDeleteRepoFailure(state: object, namespace: string, name: str
|
||||
export function getPermissionsLink(state: object, namespaceName: string, repoName?: string) {
|
||||
if (repoName) {
|
||||
const repo = getRepository(state, namespaceName, repoName);
|
||||
return repo && repo._links ? repo._links.permissions.href : undefined;
|
||||
return repo?._links ? repo._links.permissions.href : undefined;
|
||||
} else {
|
||||
const namespace = getNamespace(state, namespaceName);
|
||||
return namespace && namespace._links ? namespace._links.permissions.href : undefined;
|
||||
return namespace?._links ? namespace?._links?.permissions?.href : undefined;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ type Props = WithTranslation & {
|
||||
|
||||
class PermissionsNavLink extends React.Component<Props> {
|
||||
hasPermissionsLink = () => {
|
||||
return this.props.namespace._links.permissions;
|
||||
return this.props.namespace?._links?.permissions;
|
||||
};
|
||||
render() {
|
||||
if (!this.hasPermissionsLink()) {
|
||||
|
||||
@@ -47,7 +47,7 @@ class NamespaceToNamespaceDtoMapper {
|
||||
.self(links.namespace().self(namespace))
|
||||
.single(link("repositories", links.repositoryCollection().forNamespace(namespace)));
|
||||
|
||||
if (NamespacePermissions.permissionRead().isPermitted()) {
|
||||
if (NamespacePermissions.permissionRead().isPermitted() || NamespacePermissions.permissionWrite().isPermitted()) {
|
||||
linkingTo
|
||||
.single(link("permissions", links.namespacePermission().all(namespace)));
|
||||
}
|
||||
|
||||
@@ -78,7 +78,9 @@ public class RepositoryPermissionCollectionToDtoMapper {
|
||||
}
|
||||
|
||||
private Links createLinks(Namespace namespace) {
|
||||
if (!NamespacePermissions.permissionWrite().isPermitted()) {
|
||||
NamespacePermissions.permissionRead().check();
|
||||
}
|
||||
Links.Builder linksBuilder = linkingTo()
|
||||
.with(Links.linkingTo().self(resourceLinks.namespacePermission().all(namespace.getNamespace())).build());
|
||||
if (NamespacePermissions.permissionWrite().isPermitted()) {
|
||||
|
||||
@@ -26,15 +26,14 @@ package sonia.scm.api.v2.resources;
|
||||
|
||||
import de.otto.edison.hal.Links;
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.BeforeMapping;
|
||||
import org.mapstruct.Context;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import sonia.scm.repository.Namespace;
|
||||
import sonia.scm.repository.NamespacePermissions;
|
||||
import sonia.scm.repository.RepositoryPermission;
|
||||
import sonia.scm.repository.Repository;
|
||||
import sonia.scm.repository.RepositoryPermission;
|
||||
import sonia.scm.repository.RepositoryPermissions;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -104,7 +104,7 @@ public class DefaultNamespaceManager implements NamespaceManager {
|
||||
}
|
||||
|
||||
private Namespace createNamespaceForName(String namespace) {
|
||||
if (NamespacePermissions.permissionRead().isPermitted()) {
|
||||
if (NamespacePermissions.permissionRead().isPermitted() || NamespacePermissions.permissionWrite().isPermitted()) {
|
||||
return dao.get(namespace)
|
||||
.map(Namespace::clone)
|
||||
.orElse(new Namespace(namespace));
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
},
|
||||
"permissionWrite": {
|
||||
"displayName": "Berechtigungen auf Namespaces modifizieren",
|
||||
"description": "Darf die Berechtigungen auf Namespace-Ebene bearbeiten"
|
||||
"description": "Darf die Berechtigungen auf Namespace-Ebene lesen und bearbeiten"
|
||||
}
|
||||
},
|
||||
"unknown": "Unbekannte Berechtigung"
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
},
|
||||
"permissionWrite": {
|
||||
"displayName": "Modify permissions on namespaces",
|
||||
"description": "May modify the permissions set for namespaces"
|
||||
"description": "May read and modify the permissions set for namespaces"
|
||||
}
|
||||
},
|
||||
"unknown": "Unknown permission"
|
||||
|
||||
@@ -11719,10 +11719,10 @@ mini-create-react-context@^0.4.0:
|
||||
"@babel/runtime" "^7.5.5"
|
||||
tiny-warning "^1.0.3"
|
||||
|
||||
mini-css-extract-plugin@^0.10.0:
|
||||
version "0.10.1"
|
||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.1.tgz#2592c891f965e15750da6a6c0b60740b5b0cb62d"
|
||||
integrity sha512-9B10gZixtNjHerADBrMxPXM5G0uL0CRGMcLRV67I8nd1SKbwJrI0okKUzD+PxKsUZ9Dxt8/hPvtzF0DrRnrOyA==
|
||||
mini-css-extract-plugin@^0.11.0:
|
||||
version "0.11.2"
|
||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.2.tgz#e3af4d5e04fbcaaf11838ab230510073060b37bf"
|
||||
integrity sha512-h2LknfX4U1kScXxH8xE9LCOqT5B+068EAj36qicMb8l4dqdJoyHcmWmpd+ueyZfgu/POvIn+teoUnTtei2ikug==
|
||||
dependencies:
|
||||
loader-utils "^1.1.0"
|
||||
normalize-url "1.9.1"
|
||||
|
||||
Reference in New Issue
Block a user