Search in sources :

Example 16 with Tenant

use of org.wso2.carbon.user.core.tenant.Tenant in project carbon-apimgt by wso2.

the class APIUtil method getTenantBasedStoreDomainMapping.

public static Map getTenantBasedStoreDomainMapping(String tenantDomain) throws APIManagementException {
    try {
        Registry registry = ServiceReferenceHolder.getInstance().getRegistryService().getGovernanceSystemRegistry();
        String resourcePath = APIConstants.API_DOMAIN_MAPPINGS.replace(APIConstants.API_DOMAIN_MAPPING_TENANT_ID_IDENTIFIER, tenantDomain);
        if (registry.resourceExists(resourcePath)) {
            Resource resource = registry.get(resourcePath);
            String content = new String((byte[]) resource.getContent(), Charset.defaultCharset());
            JSONParser parser = new JSONParser();
            JSONObject mappings = (JSONObject) parser.parse(content);
            if (mappings.containsKey(APIConstants.API_DOMAIN_MAPPINGS_STORE)) {
                return (Map) mappings.get(APIConstants.API_DOMAIN_MAPPINGS_STORE);
            }
        }
    } catch (RegistryException e) {
        String msg = "Error while retrieving gateway domain mappings from registry";
        throw new APIManagementException(msg, e);
    } catch (ClassCastException e) {
        String msg = "Invalid JSON found in the gateway tenant domain mappings";
        throw new APIManagementException(msg, e);
    } catch (ParseException e) {
        String msg = "Malformed JSON found in the gateway tenant domain mappings";
        throw new APIManagementException(msg, e);
    }
    return null;
}
Also used : JSONObject(org.json.simple.JSONObject) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) Resource(org.wso2.carbon.registry.core.Resource) APIProductResource(org.wso2.carbon.apimgt.api.model.APIProductResource) APIResource(org.wso2.carbon.apimgt.api.doc.model.APIResource) JSONParser(org.json.simple.parser.JSONParser) UserRegistry(org.wso2.carbon.registry.core.session.UserRegistry) Registry(org.wso2.carbon.registry.core.Registry) ParseException(org.json.simple.parser.ParseException) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) TreeMap(java.util.TreeMap) EnumMap(java.util.EnumMap) SortedMap(java.util.SortedMap) HashMap(java.util.HashMap) RegistryException(org.wso2.carbon.registry.core.exceptions.RegistryException)

Example 17 with Tenant

use of org.wso2.carbon.user.core.tenant.Tenant in project carbon-apimgt by wso2.

the class APIUtil method getOAuthConfigurationFromAPIMConfig.

/**
 * This method is used to get the authorization configurations from the api manager configurations
 *
 * @param property The configuration to get from api-manager.xml
 * @return The configuration read from api-manager.xml or else null
 * @throws APIManagementException Throws if the registry resource doesn't exist
 *                                or the content cannot be parsed to JSON
 */
public static String getOAuthConfigurationFromAPIMConfig(String property) throws APIManagementException {
    // If tenant registry doesn't have the configuration, then read it from api-manager.xml
    APIManagerConfiguration apimConfig = ServiceReferenceHolder.getInstance().getAPIManagerConfigurationService().getAPIManagerConfiguration();
    String oAuthConfiguration = apimConfig.getFirstProperty(APIConstants.OAUTH_CONFIGS + property);
    if (!StringUtils.isBlank(oAuthConfiguration)) {
        return oAuthConfiguration;
    }
    return null;
}
Also used : APIManagerConfiguration(org.wso2.carbon.apimgt.impl.APIManagerConfiguration)

Example 18 with Tenant

use of org.wso2.carbon.user.core.tenant.Tenant in project carbon-apimgt by wso2.

the class SystemScopeUtils method loadTenantConfigBlockingMode.

/**
 * load tenant axis configurations.
 *
 * @param tenantDomain
 */
public static void loadTenantConfigBlockingMode(String tenantDomain) {
    try {
        ConfigurationContext ctx = ServiceReferenceHolder.getContextService().getServerConfigContext();
        TenantAxisUtils.getTenantAxisConfiguration(tenantDomain, ctx);
    } catch (Exception e) {
        log.error("Error while creating axis configuration for tenant " + tenantDomain, e);
    }
}
Also used : ConfigurationContext(org.apache.axis2.context.ConfigurationContext) UserStoreException(org.wso2.carbon.user.api.UserStoreException) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException)

Example 19 with Tenant

use of org.wso2.carbon.user.core.tenant.Tenant in project carbon-apimgt by wso2.

the class RegistryPersistenceImpl method searchPaginatedDevPortalAPIsByDoc.

private DevPortalAPISearchResult searchPaginatedDevPortalAPIsByDoc(Registry registry, int tenantID, String searchQuery, String username, int start, int offset) throws APIPersistenceException {
    DevPortalAPISearchResult searchResults = new DevPortalAPISearchResult();
    try {
        PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(username);
        GenericArtifactManager artifactManager = RegistryPersistenceUtil.getArtifactManager(registry, APIConstants.API_KEY);
        if (artifactManager == null) {
            String errorMessage = "Artifact manager is null when searching APIs by docs in tenant ID " + tenantID;
            log.error(errorMessage);
            throw new APIPersistenceException(errorMessage);
        }
        GenericArtifactManager docArtifactManager = RegistryPersistenceUtil.getArtifactManager(registry, APIConstants.DOCUMENTATION_KEY);
        if (docArtifactManager == null) {
            String errorMessage = "Doc artifact manager is null when searching APIs by docs in tenant ID " + tenantID;
            log.error(errorMessage);
            throw new APIPersistenceException(errorMessage);
        }
        SolrClient client = SolrClient.getInstance();
        Map<String, String> fields = new HashMap<String, String>();
        fields.put(APIConstants.DOCUMENTATION_SEARCH_PATH_FIELD, "*" + APIConstants.API_ROOT_LOCATION + "*");
        fields.put(APIConstants.DOCUMENTATION_SEARCH_MEDIA_TYPE_FIELD, "*");
        if (tenantID == -1) {
            tenantID = MultitenantConstants.SUPER_TENANT_ID;
        }
        // PaginationContext.init(0, 10000, "ASC", APIConstants.DOCUMENTATION_SEARCH_PATH_FIELD, Integer.MAX_VALUE);
        SolrDocumentList documentList = client.query(searchQuery, tenantID, fields);
        org.wso2.carbon.user.api.AuthorizationManager manager = ServiceReferenceHolder.getInstance().getRealmService().getTenantUserRealm(tenantID).getAuthorizationManager();
        username = MultitenantUtils.getTenantAwareUsername(username);
        List<DevPortalAPIInfo> devPortalAPIInfoList = new ArrayList<DevPortalAPIInfo>();
        for (SolrDocument document : documentList) {
            DevPortalAPIInfo apiInfo = new DevPortalAPIInfo();
            String filePath = (String) document.getFieldValue("path_s");
            String fileName = (String) document.getFieldValue("resourceName_s");
            int index = filePath.indexOf(APIConstants.APIMGT_REGISTRY_LOCATION);
            filePath = filePath.substring(index);
            boolean isAuthorized;
            int indexOfContents = filePath.indexOf(APIConstants.INLINE_DOCUMENT_CONTENT_DIR);
            String documentationPath = filePath.substring(0, indexOfContents) + fileName;
            String path = RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), RegistryPersistenceUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + documentationPath);
            if (CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equalsIgnoreCase(username)) {
                isAuthorized = manager.isRoleAuthorized(APIConstants.ANONYMOUS_ROLE, path, ActionConstants.GET);
            } else {
                isAuthorized = manager.isUserAuthorized(username, path, ActionConstants.GET);
            }
            if (isAuthorized) {
                int indexOfDocumentation = filePath.indexOf(APIConstants.DOCUMENTATION_KEY);
                String apiPath = documentationPath.substring(0, indexOfDocumentation) + APIConstants.API_KEY;
                path = RegistryUtils.getAbsolutePath(RegistryContext.getBaseInstance(), RegistryPersistenceUtil.getMountedPath(RegistryContext.getBaseInstance(), RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH) + apiPath);
                if (CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equalsIgnoreCase(username)) {
                    isAuthorized = manager.isRoleAuthorized(APIConstants.ANONYMOUS_ROLE, path, ActionConstants.GET);
                } else {
                    isAuthorized = manager.isUserAuthorized(username, path, ActionConstants.GET);
                }
                if (isAuthorized) {
                    Resource resource = registry.get(apiPath);
                    String apiArtifactId = resource.getUUID();
                    if (apiArtifactId != null) {
                        GenericArtifact artifact = artifactManager.getGenericArtifact(apiArtifactId);
                        String status = artifact.getAttribute(APIConstants.API_OVERVIEW_STATUS);
                        if (APIConstants.PUBLISHED.equals(status) || APIConstants.PROTOTYPED.equals(status)) {
                            apiInfo.setType(artifact.getAttribute(APIConstants.API_OVERVIEW_TYPE));
                            apiInfo.setId(artifact.getId());
                            apiInfo.setApiName(artifact.getAttribute(APIConstants.API_OVERVIEW_NAME));
                            apiInfo.setDescription(artifact.getAttribute(APIConstants.API_OVERVIEW_DESCRIPTION));
                            apiInfo.setContext(artifact.getAttribute(APIConstants.API_OVERVIEW_CONTEXT_TEMPLATE));
                            apiInfo.setProviderName(artifact.getAttribute(APIConstants.API_OVERVIEW_PROVIDER));
                            apiInfo.setStatus(status);
                            apiInfo.setThumbnail(artifact.getAttribute(APIConstants.API_OVERVIEW_THUMBNAIL_URL));
                            apiInfo.setBusinessOwner(artifact.getAttribute(APIConstants.API_OVERVIEW_BUSS_OWNER));
                            apiInfo.setVersion(artifact.getAttribute(APIConstants.API_OVERVIEW_VERSION));
                            apiInfo.setSubscriptionAvailability(artifact.getAttribute(APIConstants.API_OVERVIEW_SUBSCRIPTION_AVAILABILITY));
                            apiInfo.setSubscriptionAvailableOrgs(artifact.getAttribute(APIConstants.API_OVERVIEW_SUBSCRIPTION_AVAILABLE_TENANTS));
                            apiInfo.setGatewayVendor(artifact.getAttribute(APIConstants.API_GATEWAY_VENDOR));
                            devPortalAPIInfoList.add(apiInfo);
                        }
                    } else {
                        throw new GovernanceException("artifact id is null of " + apiPath);
                    }
                }
            }
        }
        searchResults.setDevPortalAPIInfoList(devPortalAPIInfoList);
        searchResults.setTotalAPIsCount(devPortalAPIInfoList.size());
        searchResults.setReturnedAPIsCount(devPortalAPIInfoList.size());
    } catch (RegistryException | UserStoreException | APIPersistenceException | IndexerException e) {
        String msg = "Failed to search APIs with type";
        throw new APIPersistenceException(msg, e);
    } finally {
        PaginationContext.destroy();
    }
    return searchResults;
}
Also used : HashMap(java.util.HashMap) DevPortalAPIInfo(org.wso2.carbon.apimgt.persistence.dto.DevPortalAPIInfo) ArrayList(java.util.ArrayList) SolrDocument(org.apache.solr.common.SolrDocument) DevPortalAPISearchResult(org.wso2.carbon.apimgt.persistence.dto.DevPortalAPISearchResult) SolrClient(org.wso2.carbon.registry.indexing.solr.SolrClient) UserStoreException(org.wso2.carbon.user.api.UserStoreException) IndexerException(org.wso2.carbon.registry.indexing.indexer.IndexerException) GenericArtifact(org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact) APIPersistenceException(org.wso2.carbon.apimgt.persistence.exceptions.APIPersistenceException) GenericArtifactManager(org.wso2.carbon.governance.api.generic.GenericArtifactManager) Resource(org.wso2.carbon.registry.core.Resource) GovernanceException(org.wso2.carbon.governance.api.exception.GovernanceException) SolrDocumentList(org.apache.solr.common.SolrDocumentList) RegistryException(org.wso2.carbon.registry.core.exceptions.RegistryException)

Example 20 with Tenant

use of org.wso2.carbon.user.core.tenant.Tenant in project carbon-apimgt by wso2.

the class RegistryPersistenceImpl method getRegistry.

protected RegistryHolder getRegistry(String requestedTenantDomain) throws APIPersistenceException {
    String userTenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain();
    int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
    log.debug("Accessing system registry in tenant domain " + userTenantDomain + ". Requested tenant domain: " + requestedTenantDomain);
    boolean tenantFlowStarted = false;
    Registry registry;
    RegistryHolder holder = new RegistryHolder();
    try {
        if (requestedTenantDomain != null) {
            int id = getTenantManager().getTenantId(requestedTenantDomain);
            RegistryPersistenceUtil.startTenantFlow(requestedTenantDomain);
            tenantFlowStarted = true;
            if (userTenantDomain != null && !userTenantDomain.equals(requestedTenantDomain)) {
                // cross tenant
                log.debug("Cross tenant user from tenant " + userTenantDomain + " accessing " + requestedTenantDomain + " registry");
                loadTenantRegistry(id);
                registry = getRegistryService().getGovernanceSystemRegistry(id);
                holder.setTenantId(id);
                ServiceReferenceHolder.setUserRealm((ServiceReferenceHolder.getInstance().getRealmService().getBootstrapRealm()));
            } else {
                log.debug("Same tenant accessing registry of tenant " + userTenantDomain + ":" + tenantId);
                loadTenantRegistry(tenantId);
                registry = getRegistryService().getGovernanceSystemRegistry(tenantId);
                RegistryPersistenceUtil.loadloadTenantAPIRXT(null, tenantId);
                holder.setTenantId(tenantId);
                ServiceReferenceHolder.setUserRealm((UserRealm) (ServiceReferenceHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)));
            }
        } else {
            log.debug("Same tenant user accessing registry of tenant " + userTenantDomain + ":" + tenantId);
            loadTenantRegistry(tenantId);
            registry = getRegistryService().getGovernanceSystemRegistry(tenantId);
            RegistryPersistenceUtil.loadloadTenantAPIRXT(null, tenantId);
            ServiceReferenceHolder.setUserRealm((UserRealm) (ServiceReferenceHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)));
            holder.setTenantId(tenantId);
        }
    } catch (RegistryException | UserStoreException | APIManagementException e) {
        String msg = "Failed to get API";
        throw new APIPersistenceException(msg, e);
    }
    holder.setRegistry(registry);
    holder.setTenantFlowStarted(tenantFlowStarted);
    return holder;
}
Also used : APIPersistenceException(org.wso2.carbon.apimgt.persistence.exceptions.APIPersistenceException) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) UserStoreException(org.wso2.carbon.user.api.UserStoreException) UserRegistry(org.wso2.carbon.registry.core.session.UserRegistry) Registry(org.wso2.carbon.registry.core.Registry) RegistryException(org.wso2.carbon.registry.core.exceptions.RegistryException)

Aggregations

UserStoreException (org.wso2.carbon.user.api.UserStoreException)194 APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)180 ArrayList (java.util.ArrayList)177 SQLException (java.sql.SQLException)170 PreparedStatement (java.sql.PreparedStatement)156 Connection (java.sql.Connection)155 HashMap (java.util.HashMap)128 RegistryException (org.wso2.carbon.registry.core.exceptions.RegistryException)110 ResultSet (java.sql.ResultSet)107 IOException (java.io.IOException)98 Map (java.util.Map)78 UserRegistry (org.wso2.carbon.registry.core.session.UserRegistry)77 IdentityOAuth2Exception (org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception)71 RealmService (org.wso2.carbon.user.core.service.RealmService)64 IdentityProvider (org.wso2.carbon.identity.application.common.model.IdentityProvider)55 Test (org.testng.annotations.Test)54 List (java.util.List)50 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)48 PrivilegedCarbonContext (org.wso2.carbon.context.PrivilegedCarbonContext)48 IdentityApplicationManagementException (org.wso2.carbon.identity.application.common.IdentityApplicationManagementException)48