mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 16:35:45 +01:00
Fix location link for group permissions on POST
This commit is contained in:
@@ -70,14 +70,15 @@ public class PermissionRootResource {
|
|||||||
@TypeHint(TypeHint.NO_CONTENT.class)
|
@TypeHint(TypeHint.NO_CONTENT.class)
|
||||||
@Consumes(VndMediaType.PERMISSION)
|
@Consumes(VndMediaType.PERMISSION)
|
||||||
@Path("")
|
@Path("")
|
||||||
public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name, PermissionDto permission) throws Exception {
|
public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name, PermissionDto permission) throws AlreadyExistsException, NotFoundException {
|
||||||
log.info("try to add new permission: {}", permission);
|
log.info("try to add new permission: {}", permission);
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
RepositoryPermissions.permissionWrite(repository).check();
|
RepositoryPermissions.permissionWrite(repository).check();
|
||||||
checkPermissionAlreadyExists(permission, repository);
|
checkPermissionAlreadyExists(permission, repository);
|
||||||
repository.getPermissions().add(dtoToModelMapper.map(permission));
|
repository.getPermissions().add(dtoToModelMapper.map(permission));
|
||||||
manager.modify(repository);
|
manager.modify(repository);
|
||||||
return Response.created(URI.create(resourceLinks.permission().self(namespace, name, permission.getName()))).build();
|
String urlPermissionName = modelToDtoMapper.getUrlPermissionName(permission);
|
||||||
|
return Response.created(URI.create(resourceLinks.permission().self(namespace, name, urlPermissionName))).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,7 @@ 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())
|
String permissionName = getUrlPermissionName(target);
|
||||||
.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(), permissionName));
|
.self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), permissionName));
|
||||||
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
if (RepositoryPermissions.permissionWrite(repository).isPermitted()) {
|
||||||
@@ -52,4 +50,10 @@ public abstract class PermissionToPermissionDtoMapper {
|
|||||||
}
|
}
|
||||||
target.add(linksBuilder.build());
|
target.add(linksBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUrlPermissionName(PermissionDto permissionDto) {
|
||||||
|
return Optional.of(permissionDto.getName())
|
||||||
|
.filter(p -> !permissionDto.isGroupPermission())
|
||||||
|
.orElse(GROUP_PREFIX + permissionDto.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user