mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Add link to permissions to index
This commit is contained in:
@@ -7,6 +7,7 @@ import org.apache.shiro.SecurityUtils;
|
|||||||
import sonia.scm.SCMContextProvider;
|
import sonia.scm.SCMContextProvider;
|
||||||
import sonia.scm.config.ConfigurationPermissions;
|
import sonia.scm.config.ConfigurationPermissions;
|
||||||
import sonia.scm.group.GroupPermissions;
|
import sonia.scm.group.GroupPermissions;
|
||||||
|
import sonia.scm.security.PermissionPermissions;
|
||||||
import sonia.scm.user.UserPermissions;
|
import sonia.scm.user.UserPermissions;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -52,6 +53,9 @@ public class IndexDtoGenerator extends LinkAppenderMapper {
|
|||||||
builder.single(link("config", resourceLinks.config().self()));
|
builder.single(link("config", resourceLinks.config().self()));
|
||||||
}
|
}
|
||||||
builder.single(link("repositories", resourceLinks.repositoryCollection().self()));
|
builder.single(link("repositories", resourceLinks.repositoryCollection().self()));
|
||||||
|
if (PermissionPermissions.list().isPermitted()) {
|
||||||
|
builder.single(link("permissions", resourceLinks.permissions().self()));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
builder.single(link("login", resourceLinks.authentication().jsonLogin()));
|
builder.single(link("login", resourceLinks.authentication().jsonLogin()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class PermissionRootResource {
|
|||||||
repository.addPermission(dtoToModelMapper.map(permission));
|
repository.addPermission(dtoToModelMapper.map(permission));
|
||||||
manager.modify(repository);
|
manager.modify(repository);
|
||||||
String urlPermissionName = modelToDtoMapper.getUrlPermissionName(permission);
|
String urlPermissionName = modelToDtoMapper.getUrlPermissionName(permission);
|
||||||
return Response.created(URI.create(resourceLinks.permission().self(namespace, name, urlPermissionName))).build();
|
return Response.created(URI.create(resourceLinks.repositoryPermission().self(namespace, name, urlPermissionName))).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ public class RepositoryPermissionCollectionToDtoMapper {
|
|||||||
private Links createLinks(Repository repository) {
|
private Links createLinks(Repository repository) {
|
||||||
RepositoryPermissions.permissionRead(repository).check();
|
RepositoryPermissions.permissionRead(repository).check();
|
||||||
Links.Builder linksBuilder = linkingTo()
|
Links.Builder linksBuilder = linkingTo()
|
||||||
.with(Links.linkingTo().self(resourceLinks.permission().all(repository.getNamespace(), repository.getName())).build());
|
.with(Links.linkingTo().self(resourceLinks.repositoryPermission().all(repository.getNamespace(), repository.getName())).build());
|
||||||
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
||||||
linksBuilder.single(link("create", resourceLinks.permission().create(repository.getNamespace(), repository.getName())));
|
linksBuilder.single(link("create", resourceLinks.repositoryPermission().create(repository.getNamespace(), repository.getName())));
|
||||||
}
|
}
|
||||||
return linksBuilder.build();
|
return linksBuilder.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ public abstract class RepositoryPermissionToRepositoryPermissionDtoMapper {
|
|||||||
void appendLinks(@MappingTarget RepositoryPermissionDto target, @Context Repository repository) {
|
void appendLinks(@MappingTarget RepositoryPermissionDto target, @Context Repository repository) {
|
||||||
String permissionName = getUrlPermissionName(target);
|
String permissionName = getUrlPermissionName(target);
|
||||||
Links.Builder linksBuilder = linkingTo()
|
Links.Builder linksBuilder = linkingTo()
|
||||||
.self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), permissionName));
|
.self(resourceLinks.repositoryPermission().self(repository.getNamespace(), repository.getName(), permissionName));
|
||||||
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
||||||
linksBuilder.single(link("update", resourceLinks.permission().update(repository.getNamespace(), repository.getName(), permissionName)));
|
linksBuilder.single(link("update", resourceLinks.repositoryPermission().update(repository.getNamespace(), repository.getName(), permissionName)));
|
||||||
linksBuilder.single(link("delete", resourceLinks.permission().delete(repository.getNamespace(), repository.getName(), permissionName)));
|
linksBuilder.single(link("delete", resourceLinks.repositoryPermission().delete(repository.getNamespace(), repository.getName(), permissionName)));
|
||||||
}
|
}
|
||||||
target.add(linksBuilder.build());
|
target.add(linksBuilder.build());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Reposit
|
|||||||
}
|
}
|
||||||
if (RepositoryPermissions.modify(repository).isPermitted()) {
|
if (RepositoryPermissions.modify(repository).isPermitted()) {
|
||||||
linksBuilder.single(link("update", resourceLinks.repository().update(target.getNamespace(), target.getName())));
|
linksBuilder.single(link("update", resourceLinks.repository().update(target.getNamespace(), target.getName())));
|
||||||
linksBuilder.single(link("permissions", resourceLinks.permission().all(target.getNamespace(), target.getName())));
|
linksBuilder.single(link("permissions", resourceLinks.repositoryPermission().all(target.getNamespace(), target.getName())));
|
||||||
}
|
}
|
||||||
try (RepositoryService repositoryService = serviceFactory.create(repository)) {
|
try (RepositoryService repositoryService = serviceFactory.create(repository)) {
|
||||||
if (RepositoryPermissions.pull(repository).isPermitted()) {
|
if (RepositoryPermissions.pull(repository).isPermitted()) {
|
||||||
|
|||||||
@@ -479,14 +479,15 @@ class ResourceLinks {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public PermissionLinks permission() {
|
|
||||||
return new PermissionLinks(scmPathInfoStore.get());
|
public RepositoryPermissionLinks repositoryPermission() {
|
||||||
|
return new RepositoryPermissionLinks(scmPathInfoStore.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
static class PermissionLinks {
|
static class RepositoryPermissionLinks {
|
||||||
private final LinkBuilder permissionLinkBuilder;
|
private final LinkBuilder permissionLinkBuilder;
|
||||||
|
|
||||||
PermissionLinks(ScmPathInfo pathInfo) {
|
RepositoryPermissionLinks(ScmPathInfo pathInfo) {
|
||||||
permissionLinkBuilder = new LinkBuilder(pathInfo, RepositoryRootResource.class, RepositoryResource.class, PermissionRootResource.class);
|
permissionLinkBuilder = new LinkBuilder(pathInfo, RepositoryRootResource.class, RepositoryResource.class, PermissionRootResource.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,4 +607,20 @@ class ResourceLinks {
|
|||||||
return mergeLinkBuilder.method("getRepositoryResource").parameters(namespace, name).method("merge").parameters().method("dryRun").parameters().href();
|
return mergeLinkBuilder.method("getRepositoryResource").parameters(namespace, name).method("merge").parameters().method("dryRun").parameters().href();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PermissionsLinks permissions() {
|
||||||
|
return new PermissionsLinks(scmPathInfoStore.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
static class PermissionsLinks {
|
||||||
|
private final LinkBuilder permissionsLlinkBuilder;
|
||||||
|
|
||||||
|
PermissionsLinks(ScmPathInfo scmPathInfo) {
|
||||||
|
this.permissionsLlinkBuilder = new LinkBuilder(scmPathInfo, GlobalPermissionPocResource.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
String self() {
|
||||||
|
return permissionsLlinkBuilder.method("getAll").parameters().href();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class ResourceLinksMock {
|
|||||||
when(resourceLinks.changeset()).thenReturn(new ResourceLinks.ChangesetLinks(uriInfo));
|
when(resourceLinks.changeset()).thenReturn(new ResourceLinks.ChangesetLinks(uriInfo));
|
||||||
when(resourceLinks.fileHistory()).thenReturn(new ResourceLinks.FileHistoryLinks(uriInfo));
|
when(resourceLinks.fileHistory()).thenReturn(new ResourceLinks.FileHistoryLinks(uriInfo));
|
||||||
when(resourceLinks.source()).thenReturn(new ResourceLinks.SourceLinks(uriInfo));
|
when(resourceLinks.source()).thenReturn(new ResourceLinks.SourceLinks(uriInfo));
|
||||||
when(resourceLinks.permission()).thenReturn(new ResourceLinks.PermissionLinks(uriInfo));
|
when(resourceLinks.repositoryPermission()).thenReturn(new ResourceLinks.RepositoryPermissionLinks(uriInfo));
|
||||||
when(resourceLinks.config()).thenReturn(new ResourceLinks.ConfigLinks(uriInfo));
|
when(resourceLinks.config()).thenReturn(new ResourceLinks.ConfigLinks(uriInfo));
|
||||||
when(resourceLinks.branch()).thenReturn(new ResourceLinks.BranchLinks(uriInfo));
|
when(resourceLinks.branch()).thenReturn(new ResourceLinks.BranchLinks(uriInfo));
|
||||||
when(resourceLinks.diff()).thenReturn(new ResourceLinks.DiffLinks(uriInfo));
|
when(resourceLinks.diff()).thenReturn(new ResourceLinks.DiffLinks(uriInfo));
|
||||||
@@ -40,6 +40,7 @@ public class ResourceLinksMock {
|
|||||||
when(resourceLinks.authentication()).thenReturn(new ResourceLinks.AuthenticationLinks(uriInfo));
|
when(resourceLinks.authentication()).thenReturn(new ResourceLinks.AuthenticationLinks(uriInfo));
|
||||||
when(resourceLinks.index()).thenReturn(new ResourceLinks.IndexLinks(uriInfo));
|
when(resourceLinks.index()).thenReturn(new ResourceLinks.IndexLinks(uriInfo));
|
||||||
when(resourceLinks.merge()).thenReturn(new ResourceLinks.MergeLinks(uriInfo));
|
when(resourceLinks.merge()).thenReturn(new ResourceLinks.MergeLinks(uriInfo));
|
||||||
|
when(resourceLinks.permissions()).thenReturn(new ResourceLinks.PermissionsLinks(uriInfo));
|
||||||
|
|
||||||
return resourceLinks;
|
return resourceLinks;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user