mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 16:05:44 +01:00
#9208 add group permission prefix to the dto links
This commit is contained in:
@@ -10,6 +10,8 @@ import lombok.ToString;
|
|||||||
@Getter @Setter @ToString
|
@Getter @Setter @ToString
|
||||||
public class PermissionDto extends HalRepresentation {
|
public class PermissionDto extends HalRepresentation {
|
||||||
|
|
||||||
|
public static final String GROUP_PREFIX = "@";
|
||||||
|
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,12 @@ import java.net.URI;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import static sonia.scm.api.v2.resources.PermissionDto.GROUP_PREFIX;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class PermissionRootResource {
|
public class PermissionRootResource {
|
||||||
|
|
||||||
private static final String GROUP_PREFIX = "@";
|
|
||||||
private PermissionDtoToPermissionMapper dtoToModelMapper;
|
private PermissionDtoToPermissionMapper dtoToModelMapper;
|
||||||
private PermissionToPermissionDtoMapper modelToDtoMapper;
|
private PermissionToPermissionDtoMapper modelToDtoMapper;
|
||||||
private PermissionCollectionToDtoMapper permissionCollectionToDtoMapper;
|
private PermissionCollectionToDtoMapper permissionCollectionToDtoMapper;
|
||||||
|
|||||||
@@ -12,9 +12,11 @@ import sonia.scm.repository.Repository;
|
|||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static de.otto.edison.hal.Link.link;
|
import static de.otto.edison.hal.Link.link;
|
||||||
import static de.otto.edison.hal.Links.linkingTo;
|
import static de.otto.edison.hal.Links.linkingTo;
|
||||||
|
import static sonia.scm.api.v2.resources.PermissionDto.GROUP_PREFIX;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public abstract class PermissionToPermissionDtoMapper {
|
public abstract class PermissionToPermissionDtoMapper {
|
||||||
@@ -39,11 +41,14 @@ public abstract class PermissionToPermissionDtoMapper {
|
|||||||
*/
|
*/
|
||||||
@AfterMapping
|
@AfterMapping
|
||||||
void appendLinks(@MappingTarget PermissionDto target, @Context Repository repository) {
|
void appendLinks(@MappingTarget PermissionDto target, @Context Repository repository) {
|
||||||
|
String permissionName = Optional.of(target.getName())
|
||||||
|
.filter(p -> !target.isGroupPermission())
|
||||||
|
.orElse(GROUP_PREFIX + target.getName());
|
||||||
Links.Builder linksBuilder = linkingTo()
|
Links.Builder linksBuilder = linkingTo()
|
||||||
.self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), target.getName()));
|
.self(resourceLinks.permission().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(), target.getName())));
|
linksBuilder.single(link("update", resourceLinks.permission().update(repository.getNamespace(), repository.getName(), permissionName)));
|
||||||
linksBuilder.single(link("delete", resourceLinks.permission().delete(repository.getNamespace(), repository.getName(), target.getName())));
|
linksBuilder.single(link("delete", resourceLinks.permission().delete(repository.getNamespace(), repository.getName(), permissionName)));
|
||||||
}
|
}
|
||||||
target.add(linksBuilder.build());
|
target.add(linksBuilder.build());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user