mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 23:15:43 +01:00
Fix permission overwrite links for groups
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user