mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
Add links map
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package sonia.scm.api.rest.resources;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.net.URI;
|
||||
|
||||
@Data
|
||||
@XmlRootElement
|
||||
public class Link {
|
||||
|
||||
private URI href;
|
||||
|
||||
public Link(URI href) {
|
||||
this.href = href;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,9 @@ package sonia.scm.api.rest.resources;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class UserDto {
|
||||
private boolean active;
|
||||
@@ -13,4 +16,7 @@ public class UserDto {
|
||||
private String name;
|
||||
private String password;
|
||||
private String type;
|
||||
|
||||
@XmlElement(name = "_links")
|
||||
private Map<String, Link> links;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,26 @@
|
||||
package sonia.scm.api.rest.resources;
|
||||
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Context;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import sonia.scm.user.User;
|
||||
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper
|
||||
public interface UserMapper {
|
||||
UserMapper INSTANCE = Mappers.getMapper( UserMapper.class );
|
||||
|
||||
@Mapping(source = "name", target = "name")
|
||||
UserDto userToUserDto(User user);
|
||||
public abstract class UserMapper {
|
||||
public static UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
|
||||
|
||||
abstract public UserDto userToUserDto(User user, @Context UriInfo uriInfo);
|
||||
|
||||
@AfterMapping
|
||||
public void appendLinks(User source, @MappingTarget UserDto target, @Context UriInfo uriInfo) {
|
||||
Map<String, Link> links = new LinkedHashMap<>();
|
||||
links.put("self", new Link(uriInfo.getAbsolutePath()));
|
||||
target.setLinks(links);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.webcohesion.enunciate.metadata.rs.ResponseCode;
|
||||
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
|
||||
import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import sonia.scm.Manager;
|
||||
import sonia.scm.security.Role;
|
||||
import sonia.scm.user.User;
|
||||
import sonia.scm.user.UserException;
|
||||
@@ -57,13 +56,12 @@ public class UserNewResource extends AbstractManagerResource<User, UserException
|
||||
@ResponseCode(code = 500, condition = "internal server error")
|
||||
})
|
||||
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Override
|
||||
public Response get(@Context Request request, @PathParam("id") String id)
|
||||
public Response get(@Context Request request, @Context UriInfo uriInfo, @PathParam("id") String id)
|
||||
{
|
||||
if (SecurityUtils.getSubject().hasRole(Role.ADMIN))
|
||||
{
|
||||
User user = manager.get(id);
|
||||
UserDto userDto = UserMapper.INSTANCE.userToUserDto(user);
|
||||
UserDto userDto = UserMapper.INSTANCE.userToUserDto(user, uriInfo);
|
||||
return Response.ok(userDto).build();
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user