[New] Implemented Rest API for user management

This commit is contained in:
Robert von Burg 2015-03-08 20:51:46 +01:00
parent 3136049bda
commit 86895c7aa5
5 changed files with 39 additions and 86 deletions

@ -1 +1 @@
Subproject commit eeb3356372500e6413af613079c7ec71bb1f6e4c
Subproject commit 5ef43eaebe670b0cf3f8ea1ccbc251b2c48f3dca

View File

@ -9,6 +9,7 @@ import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import li.strolch.exception.StrolchAccessDeniedException;
import li.strolch.rest.model.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -44,8 +45,6 @@ public class StrolchRestfulExceptionMapper implements ExceptionMapper<Exception>
return Response.status(Status.FORBIDDEN).entity(sb.toString()).type(MediaType.TEXT_PLAIN).build();
}
String exceptionMessage = StringHelper.formatExceptionMessage(ex);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(exceptionMessage).type(MediaType.TEXT_PLAIN)
.build();
return Response.serverError().entity(new Result(ex)).type(MediaType.APPLICATION_JSON).build();
}
}

View File

@ -96,8 +96,8 @@ public class PrivilegeRolesService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.addRole(cert, newRole);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
RoleRep role = privilegeHandler.addRole(cert, newRole);
return Response.ok(role, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -107,9 +107,6 @@ public class PrivilegeRolesService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -127,8 +124,8 @@ public class PrivilegeRolesService {
.type(MediaType.APPLICATION_JSON).build();
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.replaceRole(cert, updatedRole);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
RoleRep role = privilegeHandler.replaceRole(cert, updatedRole);
return Response.ok(role, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -138,9 +135,6 @@ public class PrivilegeRolesService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -153,8 +147,8 @@ public class PrivilegeRolesService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.removeRole(cert, rolename);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
RoleRep role = privilegeHandler.removeRole(cert, rolename);
return Response.ok(role, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -164,9 +158,6 @@ public class PrivilegeRolesService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -180,8 +171,8 @@ public class PrivilegeRolesService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.addOrReplacePrivilegeOnRole(cert, rolename, privilegeRep);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
RoleRep updatedRole = privilegeHandler.addOrReplacePrivilegeOnRole(cert, rolename, privilegeRep);
return Response.ok(updatedRole, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -191,9 +182,6 @@ public class PrivilegeRolesService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -207,8 +195,8 @@ public class PrivilegeRolesService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.removePrivilegeFromRole(cert, rolename, privilege);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
RoleRep updatedRole = privilegeHandler.removePrivilegeFromRole(cert, rolename, privilege);
return Response.ok(updatedRole, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -218,41 +206,6 @@ public class PrivilegeRolesService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("{rolename}/privileges/{privilege}")
public Response addOrReplacePrivilegeOnRole(@PathParam("rolename") String rolename,
@PathParam("privilege") String privilege, PrivilegeRep privilegeRep, @Context HttpServletRequest request) {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
try {
if (!privilege.equals(privilegeRep.getName()))
return Response.serverError()
.entity(new Result("Path privilege and data do not have same privilege name!"))
.type(MediaType.APPLICATION_JSON).build();
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.addOrReplacePrivilegeOnRole(cert, rolename, privilegeRep);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
return Response.status(Status.UNAUTHORIZED).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (PrivilegeException e) {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
}

View File

@ -109,8 +109,8 @@ public class PrivilegeUsersService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.addUser(cert, newUser, null);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
UserRep user = privilegeHandler.addUser(cert, newUser, null);
return Response.ok(user, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -120,9 +120,6 @@ public class PrivilegeUsersService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -135,8 +132,8 @@ public class PrivilegeUsersService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.removeUser(cert, username);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
UserRep user = privilegeHandler.removeUser(cert, username);
return Response.ok(user, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -146,9 +143,6 @@ public class PrivilegeUsersService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -166,8 +160,8 @@ public class PrivilegeUsersService {
.type(MediaType.APPLICATION_JSON).build();
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.updateUser(cert, updatedFields);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
UserRep updatedUser = privilegeHandler.updateUser(cert, updatedFields);
return Response.ok(updatedUser, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -177,9 +171,6 @@ public class PrivilegeUsersService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -193,8 +184,8 @@ public class PrivilegeUsersService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.addRoleToUser(cert, username, rolename);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
UserRep updatedUser = privilegeHandler.addRoleToUser(cert, username, rolename);
return Response.ok(updatedUser, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -204,9 +195,6 @@ public class PrivilegeUsersService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}
@ -220,8 +208,8 @@ public class PrivilegeUsersService {
try {
PrivilegeHandler privilegeHandler = getPrivilegeHandler(cert, true);
privilegeHandler.removeRoleFromUser(cert, username, rolename);
return Response.ok(new Result(), MediaType.APPLICATION_JSON).build();
UserRep updatedUser = privilegeHandler.removeRoleFromUser(cert, username, rolename);
return Response.ok(updatedUser, MediaType.APPLICATION_JSON).build();
} catch (AccessDeniedException e) {
logger.error(e.getMessage(), e);
@ -231,9 +219,6 @@ public class PrivilegeUsersService {
logger.error(e.getMessage(), e);
return Response.status(Status.FORBIDDEN).entity(new Result(e.getMessage()))
.type(MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return Response.serverError().entity(new Result(e.getMessage())).type(MediaType.APPLICATION_JSON).build();
}
}

View File

@ -32,10 +32,18 @@ public class Result {
@XmlAttribute(name = "msg")
private String msg;
@XmlAttribute(name = "exceptionMsg")
private String exceptionMsg;
public Result(String msg) {
this.msg = msg;
}
public Result(Exception e) {
this.msg = StringHelper.isEmpty(e.getMessage()) ? e.getClass().getName() : e.getMessage();
this.exceptionMsg = StringHelper.formatExceptionMessage(e);
}
public Result() {
this.msg = StringHelper.DASH;
}
@ -47,4 +55,12 @@ public class Result {
public void setMsg(String msg) {
this.msg = msg;
}
public String getExceptionMsg() {
return exceptionMsg;
}
public void setExceptionMsg(String exceptionMsg) {
this.exceptionMsg = exceptionMsg;
}
}