X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fusermanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fusermanager%2Fnorthbound%2FUserManagerNorthbound.java;fp=opendaylight%2Fnorthbound%2Fusermanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fusermanager%2Fnorthbound%2FUserManagerNorthbound.java;h=0000000000000000000000000000000000000000;hb=42c32160bfd41de57189bb246fec5ffb48ed8e9e;hp=3f384f47724d49e90996f6e62f714cfa43e7167b;hpb=edf5bfcee83c750853253ccfd991ba7000f5f65b;p=controller.git diff --git a/opendaylight/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java b/opendaylight/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java deleted file mode 100644 index 3f384f4772..0000000000 --- a/opendaylight/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.usermanager.northbound; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -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; -import org.codehaus.enunciate.jaxrs.TypeHint; -import org.opendaylight.controller.northbound.commons.RestMessages; -import org.opendaylight.controller.northbound.commons.exception.BadRequestException; -import org.opendaylight.controller.northbound.commons.exception.ResourceConflictException; -import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailableException; -import org.opendaylight.controller.northbound.commons.exception.UnauthorizedException; -import org.opendaylight.controller.northbound.commons.utils.NorthboundUtils; -import org.opendaylight.controller.sal.authorization.UserLevel; -import org.opendaylight.controller.sal.utils.ServiceHelper; -import org.opendaylight.controller.sal.utils.Status; -import org.opendaylight.controller.usermanager.IUserManager; -import org.opendaylight.controller.usermanager.UserConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * This class provides REST APIs to manage users. - * This API will only be availalbe via HTTPS. - *
- *
- * Authentication scheme : HTTP Basic
- * Authentication realm : opendaylight
- * Transport : HTTPS
- *
- * HTTPS Authentication is disabled by default so to - * use UserManager APIs turn on HTTPS on Web Server - */ - -@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) { - if (context != null && context.getUserPrincipal() != null) { - username = context.getUserPrincipal().getName(); - } - } - - protected String getUserName() { - return username; - } - - private void handleNameMismatch(String name, String nameinURL) { - if (name == null || nameinURL == null) { - throw new BadRequestException(RestMessages.INVALIDDATA.toString() + " : Name is null"); - } - - if (name.equals(nameinURL)) { - return; - } - throw new ResourceConflictException(RestMessages.INVALIDDATA.toString() - + " : Name in URL does not match the name in request body"); - } - - /** - * Add a user - * - * @param userConfigData - * 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/users
-     *
-     * Request body in XML:
-     *  <userConfig>
-     *      <user>testuser</user>
-     *      <roles>Network-Admin</roles>
-     *      <password>pass!23</password>
-     *  </userConfig>
-     *
-     * Request body in JSON:
-     * {
-     *  "user":"testuser",
-     *  "password":"pass!23",
-     *  "roles":[
-     *       "Network-Admin"
-     *       ]
-     * }
-     * 
- */ - - @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 = 409, condition = "User name in url conflicts with name in request body"), - @ResponseCode(code = 404, condition = "User config is null"), - @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(@TypeHint(UserConfig.class) UserConfig userConfigData) { - - if (!isAdminUser()) { - throw new UnauthorizedException("User is not authorized to perform user management operations "); - } - - // Reconstructing the object so password can be hashed in userConfig - UserConfig userCfgObject = new UserConfig(userConfigData.getUser(),userConfigData.getPassword(), - userConfigData.getRoles()); - - 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", userCfgObject.getUser()); - URI uri = uriInfo.getAbsolutePathBuilder().path("/"+userCfgObject.getUser()).build(); - return Response.created(uri).build(); - } - return NorthboundUtils.getResponse(status); - } - - /** - * Delete a user - * - * @param userName - * name of user to be deleted - * @return Response as dictated by the HTTP Response Status code - * - *
-     * Example:
-     *
-     * Request URL:
-     * https://localhost/controller/nb/v2/usermanager/users/testuser
-     *
-     * 
- */ - @Path("/users/{userName}") - @DELETE - @StatusCodes({ @ResponseCode(code = 204, condition = "User Deleted Successfully"), - @ResponseCode(code = 401, condition = "User not authorized to perform this operation"), - @ResponseCode(code = 404, condition = "The userName passed was not found"), - @ResponseCode(code = 500, condition = "Internal Server Error : Removal of user failed"), - @ResponseCode(code = 503, condition = "Service unavailable") }) - public Response removeLocalUser(@PathParam("userName") String userToBeRemoved) { - - if (!isAdminUser()) { - throw new UnauthorizedException("User is not authorized to perform user management operations "); - } - - IUserManager userManager = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, this); - if (userManager == null) { - throw new ServiceUnavailableException("UserManager " + RestMessages.SERVICEUNAVAILABLE.toString()); - } - Status status = userManager.removeLocalUser(userToBeRemoved); - if (status.isSuccess()) { - NorthboundUtils.auditlog("User", username, "removed", userToBeRemoved); - return Response.noContent().build(); - } - return NorthboundUtils.getResponse(status); - } - - private boolean isAdminUser(){ - // get UserManager's instance - IUserManager auth = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, this); - // check if logged in user has privileges of NETWORK_ADMIN or SYSTEM_ADMIN, if so return true - return auth.getUserLevel(getUserName()).ordinal() <= UserLevel.NETWORKADMIN.ordinal(); - } - -}