Search in sources :

Example 1 with PermissionBean

use of io.apiman.manager.api.beans.idm.PermissionBean in project apiman by apiman.

the class UserResourceImpl method getInfo.

// TODO(msavy): refactor and move to service
/**
 * {@inheritDoc}
 */
@Override
public CurrentUserBean getInfo() {
    String userId = securityContext.getCurrentUser();
    return tryAction(() -> {
        CurrentUserBean currentUser = new CurrentUserBean();
        UserBean user = userService.getUserById(userId);
        if (user == null) {
            user = new UserBean();
            user.setUsername(userId);
            if (securityContext.getFullName() != null) {
                user.setFullName(securityContext.getFullName());
            } else {
                user.setFullName(userId);
            }
            if (securityContext.getEmail() != null) {
                user.setEmail(securityContext.getEmail());
            } else {
                // $NON-NLS-1$
                user.setEmail("");
            }
            user.setJoinedOn(new Date());
            if (securityContext.getLocale() != null) {
                user.setLocale(securityContext.getLocale());
            }
            storage.createUser(user);
            userBootstrapper.bootstrapUser(user, storage);
            currentUser.setPermissions(new HashSet<>());
        } else {
            LOGGER.debug("Got existing user: {0}", user);
            Set<PermissionBean> permissions = query.getPermissions(userId);
            currentUser.setPermissions(permissions);
            updateMutableFields(user);
        }
        currentUser.initFromUser(user);
        currentUser.setAdmin(securityContext.isAdmin());
        return currentUser;
    });
}
Also used : UpdateUserBean(io.apiman.manager.api.beans.idm.UpdateUserBean) UserBean(io.apiman.manager.api.beans.idm.UserBean) CurrentUserBean(io.apiman.manager.api.beans.idm.CurrentUserBean) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean) CurrentUserBean(io.apiman.manager.api.beans.idm.CurrentUserBean) Date(java.util.Date)

Example 2 with PermissionBean

use of io.apiman.manager.api.beans.idm.PermissionBean in project apiman by apiman.

the class IndexedPermissions method index.

/**
 * Index the permissions.
 * @param bean
 */
private void index(Set<PermissionBean> permissions) {
    for (PermissionBean permissionBean : permissions) {
        PermissionType permissionName = permissionBean.getName();
        String orgQualifier = permissionBean.getOrganizationId();
        String qualifiedPermission = createQualifiedPermissionKey(permissionName, orgQualifier);
        organizations.add(orgQualifier);
        qualifiedPermissions.add(qualifiedPermission);
        Set<String> orgs = permissionToOrgsMap.computeIfAbsent(permissionName, k -> new HashSet<>());
        orgs.add(orgQualifier);
    }
}
Also used : PermissionType(io.apiman.manager.api.beans.idm.PermissionType) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean)

Example 3 with PermissionBean

use of io.apiman.manager.api.beans.idm.PermissionBean in project apiman by apiman.

the class JpaStorage method getPermissions.

/**
 * {@inheritDoc}
 */
@Override
public Set<PermissionBean> getPermissions(String userId) throws StorageException {
    try {
        List<RoleMembershipBean> resultList = getCriteriaBuilderFactory().create(getActiveEntityManager(), RoleMembershipBean.class).where("userId").eq(userId).setMaxResults(// I think this is set arbitrarily?
        500).getResultList();
        List<String> roleIds = resultList.stream().map(RoleMembershipBean::getRoleId).collect(Collectors.toList());
        Map<String, RoleBean> roleMap = getRolesById(roleIds).stream().collect(Collectors.toMap(e -> e.getId(), e -> e));
        Set<PermissionBean> permissions = new HashSet<>(resultList.size());
        for (RoleMembershipBean membership : resultList) {
            String qualifier = membership.getOrganizationId();
            for (PermissionType permission : roleMap.get(membership.getRoleId()).getPermissions()) {
                PermissionBean p = new PermissionBean();
                p.setName(permission);
                p.setOrganizationId(qualifier);
                permissions.add(p);
            }
        }
        return permissions;
    } catch (Throwable t) {
        LOGGER.error(t.getMessage(), t);
        throw new StorageException(t);
    }
}
Also used : PermissionConstraint(io.apiman.manager.api.beans.idm.PermissionConstraint) RoleBean_(io.apiman.manager.api.beans.idm.RoleBean_) ApiGatewayBean(io.apiman.manager.api.beans.apis.ApiGatewayBean) ApiPlanSummaryBean(io.apiman.manager.api.beans.summary.ApiPlanSummaryBean) StorageException(io.apiman.manager.api.core.exceptions.StorageException) ApiVersionBean(io.apiman.manager.api.beans.apis.ApiVersionBean) NoResultException(javax.persistence.NoResultException) IDataEncrypter(io.apiman.common.util.crypt.IDataEncrypter) ApiDefinitionBean(io.apiman.manager.api.beans.apis.ApiDefinitionBean) UserBean(io.apiman.manager.api.beans.idm.UserBean) SearchCriteriaFilterOperator(io.apiman.manager.api.beans.search.SearchCriteriaFilterOperator) ApiBean(io.apiman.manager.api.beans.apis.ApiBean) DeveloperBean(io.apiman.manager.api.beans.developers.DeveloperBean) ByteArrayInputStream(java.io.ByteArrayInputStream) Locale(java.util.Locale) CriteriaBuilder(com.blazebit.persistence.CriteriaBuilder) PagingBean(io.apiman.manager.api.beans.search.PagingBean) Map(java.util.Map) DiscoverabilityEntity(io.apiman.manager.api.beans.idm.DiscoverabilityEntity) ApimanLoggerFactory(io.apiman.common.logging.ApimanLoggerFactory) OrganizationBean(io.apiman.manager.api.beans.orgs.OrganizationBean) GatewayType(io.apiman.manager.api.beans.gateways.GatewayType) ApiEntryBean(io.apiman.manager.api.beans.summary.ApiEntryBean) Transactional(javax.transaction.Transactional) Set(java.util.Set) UserBean_(io.apiman.manager.api.beans.idm.UserBean_) GatewaySummaryBean(io.apiman.manager.api.beans.summary.GatewaySummaryBean) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean) PluginSummaryBean(io.apiman.manager.api.beans.summary.PluginSummaryBean) Collectors(java.util.stream.Collectors) ApiVersionSummaryBean(io.apiman.manager.api.beans.summary.ApiVersionSummaryBean) ApiSummaryBean(io.apiman.manager.api.beans.summary.ApiSummaryBean) ClientSummaryBean(io.apiman.manager.api.beans.summary.ClientSummaryBean) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) Query(javax.persistence.Query) IApimanLogger(io.apiman.common.logging.IApimanLogger) ApiPlanBean(io.apiman.manager.api.beans.apis.ApiPlanBean) PolicySummaryBean(io.apiman.manager.api.beans.summary.PolicySummaryBean) OrganizationBean_(io.apiman.manager.api.beans.orgs.OrganizationBean_) AuditEntryBean(io.apiman.manager.api.beans.audit.AuditEntryBean) RoleMembershipBean(io.apiman.manager.api.beans.idm.RoleMembershipBean) PostConstruct(javax.annotation.PostConstruct) SearchCriteriaBean(io.apiman.manager.api.beans.search.SearchCriteriaBean) ApplicationScoped(javax.enterprise.context.ApplicationScoped) ClientBean_(io.apiman.manager.api.beans.clients.ClientBean_) PermissionType(io.apiman.manager.api.beans.idm.PermissionType) OrganizationSummaryBean(io.apiman.manager.api.beans.summary.OrganizationSummaryBean) PlanVersionSummaryBean(io.apiman.manager.api.beans.summary.PlanVersionSummaryBean) DiscoverabilityLevel(io.apiman.manager.api.beans.idm.DiscoverabilityLevel) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) Alternative(javax.enterprise.inject.Alternative) PlanBean(io.apiman.manager.api.beans.plans.PlanBean) PlanSummaryBean(io.apiman.manager.api.beans.summary.PlanSummaryBean) ApiStatus(io.apiman.manager.api.beans.apis.ApiStatus) PolicyBean(io.apiman.manager.api.beans.policies.PolicyBean) TypedQuery(javax.persistence.TypedQuery) AuditEntryBean_(io.apiman.manager.api.beans.audit.AuditEntryBean_) ArrayList(java.util.ArrayList) AuditEntityType(io.apiman.manager.api.beans.audit.AuditEntityType) ContractBean(io.apiman.manager.api.beans.contracts.ContractBean) HashSet(java.util.HashSet) Inject(javax.inject.Inject) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) DataEncryptionContext(io.apiman.common.util.crypt.DataEncryptionContext) PlanBean_(io.apiman.manager.api.beans.plans.PlanBean_) DeleteCriteriaBuilder(com.blazebit.persistence.DeleteCriteriaBuilder) RoleBean(io.apiman.manager.api.beans.idm.RoleBean) IStorageQuery(io.apiman.manager.api.core.IStorageQuery) QualifiedType(org.jdbi.v3.core.qualifier.QualifiedType) PolicyTemplateUtil(io.apiman.manager.api.core.util.PolicyTemplateUtil) OrderByBean(io.apiman.manager.api.beans.search.OrderByBean) PlanVersionBean(io.apiman.manager.api.beans.plans.PlanVersionBean) MetadataBean(io.apiman.manager.api.beans.system.MetadataBean) ClientVersionSummaryBean(io.apiman.manager.api.beans.summary.ClientVersionSummaryBean) Iterator(java.util.Iterator) GatewayBean(io.apiman.manager.api.beans.gateways.GatewayBean) ClientStatus(io.apiman.manager.api.beans.clients.ClientStatus) SearchResultsBean(io.apiman.manager.api.beans.search.SearchResultsBean) ContractSummaryBean(io.apiman.manager.api.beans.summary.ContractSummaryBean) ApiMapper(io.apiman.manager.api.beans.summary.mappers.ApiMapper) PolicyDefinitionBean(io.apiman.manager.api.beans.policies.PolicyDefinitionBean) IStorage(io.apiman.manager.api.core.IStorage) ClientVersionBean(io.apiman.manager.api.beans.clients.ClientVersionBean) IOException(java.io.IOException) EntityManager(javax.persistence.EntityManager) ApiRegistryBean(io.apiman.manager.api.beans.summary.ApiRegistryBean) PolicyBean_(io.apiman.manager.api.beans.policies.PolicyBean_) Consumer(java.util.function.Consumer) DownloadBean(io.apiman.manager.api.beans.download.DownloadBean) PolicyType(io.apiman.manager.api.beans.policies.PolicyType) PolicyDefinitionSummaryBean(io.apiman.manager.api.beans.summary.PolicyDefinitionSummaryBean) PlanStatus(io.apiman.manager.api.beans.plans.PlanStatus) Collections(java.util.Collections) InputStream(java.io.InputStream) PermissionType(io.apiman.manager.api.beans.idm.PermissionType) RoleBean(io.apiman.manager.api.beans.idm.RoleBean) RoleMembershipBean(io.apiman.manager.api.beans.idm.RoleMembershipBean) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean) StorageException(io.apiman.manager.api.core.exceptions.StorageException) HashSet(java.util.HashSet)

Example 4 with PermissionBean

use of io.apiman.manager.api.beans.idm.PermissionBean in project apiman by apiman.

the class EsStorage method getPermissions.

/**
 * @see io.apiman.manager.api.core.IStorageQuery#getPermissions(java.lang.String)
 */
@Override
public Set<PermissionBean> getPermissions(String userId) throws StorageException {
    try {
        @SuppressWarnings("nls") QueryBuilder qb = QueryBuilders.termQuery("userId", userId);
        SearchSourceBuilder builder = new SearchSourceBuilder().query(qb).size(500);
        // $NON-NLS-1$
        List<SearchHit> hits = listEntities(INDEX_MANAGER_POSTFIX_ROLE_MEMBERSHIP, builder);
        Set<PermissionBean> rval = new HashSet<>(hits.size());
        if (!hits.isEmpty()) {
            for (SearchHit hit : hits) {
                Map<String, Object> source = hit.getSourceAsMap();
                // $NON-NLS-1$
                String roleId = String.valueOf(source.get("roleId"));
                // $NON-NLS-1$
                String qualifier = String.valueOf(source.get("organizationId"));
                RoleBean role = getRole(roleId);
                if (role != null) {
                    for (PermissionType permission : role.getPermissions()) {
                        PermissionBean p = new PermissionBean();
                        p.setName(permission);
                        p.setOrganizationId(qualifier);
                        rval.add(p);
                    }
                }
            }
        }
        return rval;
    } catch (Exception e) {
        throw new StorageException(e);
    }
}
Also used : SearchHit(org.elasticsearch.search.SearchHit) PermissionType(io.apiman.manager.api.beans.idm.PermissionType) RoleBean(io.apiman.manager.api.beans.idm.RoleBean) TermsQueryBuilder(org.elasticsearch.index.query.TermsQueryBuilder) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) BoolQueryBuilder(org.elasticsearch.index.query.BoolQueryBuilder) IOException(java.io.IOException) StorageException(io.apiman.manager.api.core.exceptions.StorageException) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean) StorageException(io.apiman.manager.api.core.exceptions.StorageException) HashSet(java.util.HashSet)

Aggregations

PermissionBean (io.apiman.manager.api.beans.idm.PermissionBean)4 PermissionType (io.apiman.manager.api.beans.idm.PermissionType)3 RoleBean (io.apiman.manager.api.beans.idm.RoleBean)2 UserBean (io.apiman.manager.api.beans.idm.UserBean)2 StorageException (io.apiman.manager.api.core.exceptions.StorageException)2 IOException (java.io.IOException)2 HashSet (java.util.HashSet)2 CriteriaBuilder (com.blazebit.persistence.CriteriaBuilder)1 DeleteCriteriaBuilder (com.blazebit.persistence.DeleteCriteriaBuilder)1 ApimanLoggerFactory (io.apiman.common.logging.ApimanLoggerFactory)1 IApimanLogger (io.apiman.common.logging.IApimanLogger)1 DataEncryptionContext (io.apiman.common.util.crypt.DataEncryptionContext)1 IDataEncrypter (io.apiman.common.util.crypt.IDataEncrypter)1 ApiBean (io.apiman.manager.api.beans.apis.ApiBean)1 ApiDefinitionBean (io.apiman.manager.api.beans.apis.ApiDefinitionBean)1 ApiGatewayBean (io.apiman.manager.api.beans.apis.ApiGatewayBean)1 ApiPlanBean (io.apiman.manager.api.beans.apis.ApiPlanBean)1 ApiStatus (io.apiman.manager.api.beans.apis.ApiStatus)1 ApiVersionBean (io.apiman.manager.api.beans.apis.ApiVersionBean)1 AuditEntityType (io.apiman.manager.api.beans.audit.AuditEntityType)1