Fix permission overwrite links for groups

This commit is contained in:
René Pfeuffer
2019-01-18 14:17:07 +01:00
parent 8e77b55a15
commit 05f9483a9c
4 changed files with 21 additions and 7 deletions

View File

@@ -48,7 +48,7 @@ public class GroupPermissionResource {
})
public Response getPermissions(@PathParam("id") String id) {
Collection<PermissionDescriptor> permissions = permissionAssigner.readPermissionsForGroup(id);
return Response.ok(permissionCollectionToDtoMapper.map(permissions, id)).build();
return Response.ok(permissionCollectionToDtoMapper.mapForGroup(permissions, id)).build();
}
/**

View File

@@ -20,17 +20,25 @@ public class PermissionCollectionToDtoMapper {
this.resourceLinks = resourceLinks;
}
public PermissionListDto map(Collection<PermissionDescriptor> permissions, @Context String userId) {
public PermissionListDto mapForUser(Collection<PermissionDescriptor> permissions, String userId) {
return map(permissions, userId, resourceLinks.userPermissions());
}
public PermissionListDto mapForGroup(Collection<PermissionDescriptor> permissions, String groupId) {
return map(permissions, groupId, resourceLinks.groupPermissions());
}
private PermissionListDto map(Collection<PermissionDescriptor> permissions, String id, ResourceLinks.WithPermissionLinks links) {
String[] permissionStrings = permissions
.stream()
.map(PermissionDescriptor::getValue)
.toArray(String[]::new);
PermissionListDto target = new PermissionListDto(permissionStrings);
Links.Builder linksBuilder = linkingTo().self(resourceLinks.userPermissions().permissions(userId));
Links.Builder linksBuilder = linkingTo().self(links.permissions(id));
if (PermissionPermissions.assign().isPermitted()) {
linksBuilder.single(link("overwrite", resourceLinks.userPermissions().overwritePermissions(userId)));
linksBuilder.single(link("overwrite", links.overwritePermissions(id)));
}
target.add(linksBuilder.build());

View File

@@ -96,11 +96,17 @@ class ResourceLinks {
}
}
interface WithPermissionLinks {
String permissions(String name);
String overwritePermissions(String name);
}
UserPermissionLinks userPermissions() {
return new UserPermissionLinks(scmPathInfoStore.get());
}
static class UserPermissionLinks {
static class UserPermissionLinks implements WithPermissionLinks {
private final LinkBuilder userPermissionLinkBuilder;
UserPermissionLinks(ScmPathInfo pathInfo) {
@@ -120,7 +126,7 @@ class ResourceLinks {
return new GroupPermissionLinks(scmPathInfoStore.get());
}
static class GroupPermissionLinks {
static class GroupPermissionLinks implements WithPermissionLinks {
private final LinkBuilder groupPermissionLinkBuilder;
GroupPermissionLinks(ScmPathInfo pathInfo) {

View File

@@ -48,7 +48,7 @@ public class UserPermissionResource {
})
public Response getPermissions(@PathParam("id") String id) {
Collection<PermissionDescriptor> permissions = permissionAssigner.readPermissionsForUser(id);
return Response.ok(permissionCollectionToDtoMapper.map(permissions, id)).build();
return Response.ok(permissionCollectionToDtoMapper.mapForUser(permissions, id)).build();
}
/**