Repository: stratos Updated Branches: refs/heads/master 9ea2e1d0d -> 800120adc
Added user management mock operations for rest endpoint Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/56afc79f Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/56afc79f Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/56afc79f Branch: refs/heads/master Commit: 56afc79f4b599ec8c684515ac482ace60d191f17 Parents: f010309 Author: Shiro <[email protected]> Authored: Fri Sep 26 17:18:51 2014 +0530 Committer: Shiro <[email protected]> Committed: Fri Sep 26 17:18:51 2014 +0530 ---------------------------------------------------------------------- .../endpoint/handlers/StratosMockHandler.java | 41 --------------- .../stratos/rest/endpoint/mock/MockContext.java | 55 +++++++++++++++++++- .../rest/endpoint/mock/StratosTestAdmin.java | 47 +++++++++++++++++ 3 files changed, 101 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java index 6c04de1..f4994fe 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java @@ -94,47 +94,6 @@ public class StratosMockHandler extends AbstractAuthenticationAuthorizationHandl carbonContext.setUsername(username); return null; - /*RealmService realmService = ServiceHolder.getRealmService(); - RegistryService registryService = ServiceHolder.getRegistryService(); - String tenantDomain = MultitenantUtils.getTenantDomain(username); - int tenantId = realmService.getTenantManager().getTenantId(tenantDomain); - - UserRealm userRealm = null; - if (certObject == null) { - userRealm = AnonymousSessionUtil.getRealmByTenantDomain(registryService, realmService, tenantDomain); - if (userRealm == null) { - log .error("Invalid domain or unactivated tenant login"); - // is this the correct HTTP code for this scenario ? (401) - return Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", "Basic"). - type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Tenant not found")).build(); - } - } - username = MultitenantUtils.getTenantAwareUsername(username); - if (certObject != null || userRealm.getUserStoreManager().authenticate(username, password)) { // if authenticated - - // setting the correct tenant info for downstream code.. - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - carbonContext.setTenantDomain(tenantDomain); - carbonContext.setTenantId(tenantId); - carbonContext.setUsername(username); - //populate the secuirtyContext of authenticated user - SecurityContext securityContext = new StratosSecurityContext(username); - message.put(SecurityContext.class, securityContext); - - // set the authenticated flag and let the request to continue - AuthenticationContext.setAuthenticated(true); - if (log.isDebugEnabled()) { - log.debug("authenticated using the " + CookieBasedAuthenticationHandler.class.getName() + "for username :" + - username + "tenantDomain : " + tenantDomain + " tenantId : " + tenantId); - } - return null; - } else { - log.warn("unable to authenticate the request"); - // authentication failed, request the authetication, add the realm name if needed to the value of WWW-Authenticate - return Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", "Basic"). - type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Authentication failed. Please " + - "check your username/password")).build(); - }*/ } catch (Exception exception) { log.error("Authentication failed",exception); // server error in the eyes of the client. Hence 5xx HTTP code. http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java index c6d355f..d8d75cc 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java @@ -22,6 +22,7 @@ import org.apache.stratos.common.beans.TenantInfoBean; import org.apache.stratos.manager.dto.Cartridge; import org.apache.stratos.manager.dto.SubscriptionInfo; import org.apache.stratos.manager.subscription.SubscriptionDomain; +import org.apache.stratos.manager.user.mgt.beans.UserInfoBean; import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean; import org.apache.stratos.rest.endpoint.bean.StratosAdminResponse; import org.apache.stratos.rest.endpoint.bean.SubscriptionDomainRequest; @@ -50,6 +51,7 @@ public class MockContext { private Map<Integer, Map<String,Cartridge>> availableMultiTenantCartridges = new HashMap<Integer, Map<String,Cartridge>>(); private Map<Integer, Map<String,Cartridge>> subscribedCartridges = new HashMap<Integer, Map<String,Cartridge>>(); private Map<String,TenantInfoBean> tenantMap = new HashMap<String, TenantInfoBean>(); + private Map<Integer, Map<String, UserInfoBean>> tenantUserMap= new HashMap<Integer, Map<String, UserInfoBean>>(); private Map<String, Integer> tenantIdMap = new HashMap<String, Integer>(); private Map<Integer, Map<String,Partition>> partitionMap = new HashMap<Integer, Map<String, Partition>>(); private Map<Integer, Map<String,AutoscalePolicy>> autoscalePolicyMap = new HashMap<Integer, Map<String, AutoscalePolicy>>(); @@ -420,7 +422,7 @@ public class MockContext { } public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) throws RestAPIException{ - try{ + try{ tenantMap.put(tenantInfoBean.getTenantDomain(),tenantInfoBean); tenantInfoBean.setTenantId(tenantIdCount); tenantIdMap.put(tenantInfoBean.getAdmin(), tenantIdCount++); @@ -918,6 +920,57 @@ public class MockContext { return stratosAdminResponse; } + public void addUser(UserInfoBean user) { + int tenantId = getTenantId(); + Map<String, UserInfoBean> users; + + if(tenantUserMap.containsKey(tenantId)) { + users = tenantUserMap.get(tenantId); + } + else { + users = new HashMap<String, UserInfoBean>(); + tenantUserMap.put(tenantId, users); + } + + users.put(user.getUserName(), user); + } + + public void deleteUser(String userName) { + int tenantId = getTenantId(); + Map<String, UserInfoBean> users; + + if(!tenantUserMap.containsKey(tenantId)) { + return; + } + + users = tenantUserMap.get(tenantId); + users.remove(userName); + } + + public void updateUser(UserInfoBean user) { + int tenantId = getTenantId(); + Map<String, UserInfoBean> users; + + if(!tenantUserMap.containsKey(tenantId)) { + return; + } + + users = tenantUserMap.get(tenantId); + if(users.containsKey(user.getUserName())) { + users.put(user.getUserName(), user); + } + } + + public List<UserInfoBean> getAllUsers() { + int tenantId = getTenantId(); + List<UserInfoBean> userList = new ArrayList<UserInfoBean>(); + + if(tenantUserMap.containsKey(tenantId)) { + userList.addAll(tenantUserMap.get(tenantId).values()); + } + return userList; + } + private int getTenantId() { String userName = CarbonContext.getThreadLocalCarbonContext().getUsername(); if (tenantIdMap.containsKey(userName)){ http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java index 5e878e1..0b94641 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java @@ -32,6 +32,7 @@ import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.ServiceDoesNotExistException; import org.apache.stratos.manager.subscription.CartridgeSubscription; import org.apache.stratos.manager.subscription.SubscriptionDomain; +import org.apache.stratos.manager.user.mgt.beans.UserInfoBean; import org.apache.stratos.rest.endpoint.ServiceHolder; import org.apache.stratos.rest.endpoint.Utils; import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction; @@ -58,6 +59,8 @@ import org.wso2.carbon.registry.core.session.UserRegistry; import org.wso2.carbon.user.core.tenant.Tenant; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.ws.rs.*; @@ -71,6 +74,8 @@ public class StratosTestAdmin { private static Log log = LogFactory.getLog(StratosTestAdmin.class); @Context HttpServletRequest httpServletRequest; + @Context + UriInfo uriInfo; @POST @Path("/init") @@ -542,5 +547,47 @@ public class StratosTestAdmin { public Response synchronizeRepository(String alias) throws RestAPIException { return Response.noContent().build(); } + + @POST + @Path("/user") + @Consumes("application/json") + @Produces("application/json") + @AuthorizationAction("/permission/admin/manage/add/users") + public Response addUser(UserInfoBean userInfoBean) throws RestAPIException { + MockContext.getInstance().addUser(userInfoBean); + URI url = uriInfo.getAbsolutePathBuilder().path(userInfoBean.getUserName()).build(); + return Response.created(url).build(); + } + + @DELETE + @Path("/user/{userName}") + @Consumes("application/json") + @Produces("application/json") + @AuthorizationAction("/permission/admin/manage/add/users") + public Response deleteUser(@PathParam("userName") String userName) throws RestAPIException { + MockContext.getInstance().deleteUser(userName); + return Response.noContent().build(); + } + + @PUT + @Path("/user") + @Consumes("application/json") + @Produces("application/json") + @AuthorizationAction("/permission/admin/manage/add/users") + public Response updateUser(UserInfoBean userInfoBean) throws RestAPIException { + MockContext.getInstance().updateUser(userInfoBean); + URI url = uriInfo.getAbsolutePathBuilder().path(userInfoBean.getUserName()).build(); + return Response.created(url).build(); + } + + @GET + @Path("/user/list") + @Produces("application/json") + @AuthorizationAction("/permission/admin/manage/add/users") + public UserInfoBean[] retrieveUsers() throws RestAPIException { + List<UserInfoBean> userList = null; + userList = MockContext.getInstance().getAllUsers(); + return userList.toArray(new UserInfoBean[userList.size()]); + } }
