*/
package org.opendaylight.controller.usermanager.northbound;
+import java.net.URI;
+
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
-import javax.ws.rs.PUT;
+import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
import org.codehaus.enunciate.jaxrs.ResponseCode;
import org.codehaus.enunciate.jaxrs.StatusCodes;
@Path("/")
public class UserManagerNorthbound {
+
protected static final Logger logger = LoggerFactory.getLogger(UserManagerNorthbound.class);
private String username;
+ @Context
+ UriInfo uriInfo;
@Context
public void setSecurityContext(SecurityContext context) {
/**
* Add a user
*
- * @param userName
- * name of new user to be added
* @param userConfigData
- * the {@link UserConfig} user config structure in request body
+ * the {@link UserConfig} user config structure in request body
*
* @return Response as dictated by the HTTP Response Status code
*
* Example:
*
* Request URL:
- * https://localhost/controller/nb/v2/usermanager/user/testuser
+ * https://localhost/controller/nb/v2/usermanager/users
*
* Request body in XML:
* <userConfig>
- * <name>testuser</name>
+ * <user>testuser</user>
* <roles>Network-Admin</roles>
* <password>pass!23</password>
* </userConfig>
*
* Request body in JSON:
* {
- * "name":"testuser",
+ * "user":"testuser",
* "password":"pass!23",
* "roles":[
* "Network-Admin"
* </pre>
*/
- @Path("/user/{userName}")
- @PUT
+ @Path("/users")
+ @POST
@StatusCodes({ @ResponseCode(code = 201, condition = "User created successfully"),
@ResponseCode(code = 400, condition = "Invalid data passed"),
@ResponseCode(code = 401, condition = "User not authorized to perform this operation"),
@ResponseCode(code = 500, condition = "Internal Server Error: Addition of user failed"),
@ResponseCode(code = 503, condition = "Service unavailable") })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public Response addLocalUser(@PathParam("userName") String newUserName,@TypeHint(UserConfig.class) UserConfig userConfigData) {
+ public Response addLocalUser(@TypeHint(UserConfig.class) UserConfig userConfigData) {
if (!isAdminUser()) {
throw new UnauthorizedException("User is not authorized to perform user management operations ");
UserConfig userCfgObject = new UserConfig(userConfigData.getUser(),userConfigData.getPassword(),
userConfigData.getRoles());
- handleNameMismatch(userCfgObject.getUser(), newUserName);
-
IUserManager userManager = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, this);
if (userManager == null) {
throw new ServiceUnavailableException("UserManager " + RestMessages.SERVICEUNAVAILABLE.toString());
Status status = userManager.addLocalUser(userCfgObject);
if (status.isSuccess()) {
- NorthboundUtils.auditlog("User", username, "added", newUserName);
- return Response.status(Response.Status.CREATED).build();
+ NorthboundUtils.auditlog("User", username, "added", userCfgObject.getUser());
+ URI uri = uriInfo.getAbsolutePathBuilder().path("/"+userCfgObject.getUser()).build();
+ return Response.created(uri).build();
}
return NorthboundUtils.getResponse(status);
}
* Example:
*
* Request URL:
- * https://localhost/controller/nb/v2/usermanager/user/testuser
+ * https://localhost/controller/nb/v2/usermanager/users/testuser
*
* </pre>
*/
- @Path("/user/{userName}")
+ @Path("/users/{userName}")
@DELETE
@StatusCodes({ @ResponseCode(code = 204, condition = "User Deleted Successfully"),
@ResponseCode(code = 401, condition = "User not authorized to perform this operation"),