/* * Copyright (c) 2008-2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.api.service.impl.resource; import java.net.URI; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.SecurityContext; import com.emc.storageos.model.tenant.TenantResponse; import com.emc.storageos.security.authentication.StorageOSUser; import com.emc.storageos.svcs.errorhandling.resources.APIException; import com.emc.storageos.svcs.errorhandling.resources.ServiceCode; import com.emc.storageos.svcs.errorhandling.resources.ServiceCodeException; import com.emc.storageos.db.client.model.TenantOrg; import com.emc.storageos.model.RestLinkRep; /** * class for resource to get current logged in tenant information */ @Path("/tenant") public class TenantService extends ResourceService { @Context SecurityContext sc; /** * Get ID for caller's tenant. * The caller's ID is determined based on their token presented to the system during session initialization. * This is useful as a bootstrapping function to determine the ID to use for API calls such as creating a project or listing projects. * * @prereq none * @brief Show tenant id * @return Tenant Identifier */ @GET @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public TenantResponse getTenant() { StorageOSUser user = getUserFromContext(); if (user.getTenantId() != null) { final TenantResponse resp = new TenantResponse(); resp.setTenant(URI.create(user.getTenantId())); resp.setName(findTenantOrgName(resp.getTenant())); resp.setSelfLink(getSelfLink(resp.getTenant())); return resp; } throw APIException.badRequests.noTenantDefinedForUser(user == null ? "unknown" : user.getName()); } private String findTenantOrgName(URI tenantId) { TenantOrg org = _permissionsHelper.getObjectById(tenantId, TenantOrg.class); if (org != null) { return org.getLabel(); } throw new ServiceCodeException(ServiceCode.DBSVC_ENTITY_NOT_FOUND, "No Tenant Org defined for " + tenantId, null); } private RestLinkRep getSelfLink(URI tenantId) { try { return new RestLinkRep("self", new URI("/tenants/" + tenantId.toString())); } catch (Exception ex) { return new RestLinkRep("self", null); } } }