Search in sources :

Example 26 with User

use of io.gravitee.am.identityprovider.api.User in project gravitee-access-management by gravitee-io.

the class AlertTriggersResource method list.

@PATCH
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Update multiple alert triggers", notes = "Update multiple alert triggers in the same time" + "User must have DOMAIN_ALERT[UPDATE] permission on the specified domain, environment or organization.")
@ApiResponses({ @ApiResponse(code = 200, message = "Alert triggers successfully updated", response = AlertTrigger.class, responseContainer = "List"), @ApiResponse(code = 500, message = "Internal server error") })
public void list(@PathParam("organizationId") String organizationId, @PathParam("environmentId") String environmentId, @PathParam("domain") String domainId, @ApiParam(name = "alertTriggers", required = true) @Valid @NotNull List<PatchAlertTrigger> patchAlertTriggers, @Suspended final AsyncResponse response) {
    final User authenticatedUser = this.getAuthenticatedUser();
    checkAnyPermission(organizationId, environmentId, Permission.DOMAIN_ALERT, Acl.UPDATE).andThen(Flowable.fromIterable(patchAlertTriggers)).flatMapSingle(patchAlertTrigger -> alertTriggerService.createOrUpdate(ReferenceType.DOMAIN, domainId, patchAlertTrigger, authenticatedUser)).toList().subscribe(response::resume, response::resume);
}
Also used : User(io.gravitee.am.identityprovider.api.User)

Example 27 with User

use of io.gravitee.am.identityprovider.api.User in project gravitee-access-management by gravitee-io.

the class ScopeServiceImpl method delete.

@Override
public Completable delete(String scopeId, boolean force, User principal) {
    LOGGER.debug("Delete scope {}", scopeId);
    return scopeRepository.findById(scopeId).switchIfEmpty(Maybe.error(new ScopeNotFoundException(scopeId))).flatMapSingle(scope -> {
        if (scope.isSystem() && !force) {
            throw new SystemScopeDeleteException(scopeId);
        }
        return Single.just(scope);
    }).flatMapCompletable(scope -> Completable.fromSingle(// 1_ Remove permissions from role
    roleService.findByDomain(scope.getDomain()).flatMapObservable(roles -> Observable.fromIterable(roles.stream().filter(role -> role.getOauthScopes() != null && role.getOauthScopes().contains(scope.getKey())).collect(Collectors.toList()))).flatMapSingle(role -> {
        role.getOauthScopes().remove(scope.getKey());
        UpdateRole updatedRole = new UpdateRole();
        updatedRole.setName(role.getName());
        updatedRole.setDescription(role.getDescription());
        updatedRole.setPermissions(role.getOauthScopes());
        // Save role
        return roleService.update(scope.getDomain(), role.getId(), updatedRole);
    }).toList()).andThen(// 2_ Remove scopes from application
    applicationService.findByDomain(scope.getDomain()).flatMapObservable(applications -> Observable.fromIterable(applications.stream().filter(application -> {
        if (application.getSettings() == null) {
            return false;
        }
        if (application.getSettings().getOauth() == null) {
            return false;
        }
        ApplicationOAuthSettings oAuthSettings = application.getSettings().getOauth();
        return oAuthSettings.getScopeSettings() != null && !oAuthSettings.getScopeSettings().stream().filter(s -> s.getScope().equals(scope.getKey())).findFirst().isEmpty();
    }).collect(Collectors.toList()))).flatMapSingle(application -> {
        // Remove scope from application
        final List<ApplicationScopeSettings> cleanScopes = application.getSettings().getOauth().getScopeSettings().stream().filter(s -> !s.getScope().equals(scope.getKey())).collect(Collectors.toList());
        application.getSettings().getOauth().setScopeSettings(cleanScopes);
        // Then update
        return applicationService.update(application);
    }).toList()).toCompletable().andThen(scopeApprovalRepository.deleteByDomainAndScopeKey(scope.getDomain(), scope.getKey())).andThen(scopeRepository.delete(scopeId)).andThen(Completable.fromSingle(eventService.create(new Event(Type.SCOPE, new Payload(scope.getId(), ReferenceType.DOMAIN, scope.getDomain(), Action.DELETE))))).doOnComplete(() -> auditService.report(AuditBuilder.builder(ScopeAuditBuilder.class).principal(principal).type(EventType.SCOPE_DELETED).scope(scope))).doOnError(throwable -> auditService.report(AuditBuilder.builder(ScopeAuditBuilder.class).principal(principal).type(EventType.SCOPE_DELETED).throwable(throwable)))).onErrorResumeNext(ex -> {
        if (ex instanceof AbstractManagementException) {
            return Completable.error(ex);
        }
        LOGGER.error("An error occurs while trying to delete scope: {}", scopeId, ex);
        return Completable.error(new TechnicalManagementException(String.format("An error occurs while trying to delete scope: %s", scopeId), ex));
    });
}
Also used : java.util(java.util) Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Single(io.reactivex.Single) Event(io.gravitee.am.model.common.event.Event) Type(io.gravitee.am.common.event.Type) io.gravitee.am.service.exception(io.gravitee.am.service.exception) User(io.gravitee.am.identityprovider.api.User) AuditBuilder(io.gravitee.am.service.reporter.builder.AuditBuilder) ReferenceType(io.gravitee.am.model.ReferenceType) Observable(io.reactivex.Observable) URI(java.net.URI) Scope(io.gravitee.am.model.oauth2.Scope) io.gravitee.am.service(io.gravitee.am.service) Action(io.gravitee.am.common.event.Action) Page(io.gravitee.am.model.common.Page) Logger(org.slf4j.Logger) ApplicationOAuthSettings(io.gravitee.am.model.application.ApplicationOAuthSettings) MalformedURLException(java.net.MalformedURLException) ScopeRepository(io.gravitee.am.repository.management.api.ScopeRepository) EventType(io.gravitee.am.common.audit.EventType) Collectors(java.util.stream.Collectors) RandomString(io.gravitee.am.common.utils.RandomString) io.gravitee.am.service.model(io.gravitee.am.service.model) Component(org.springframework.stereotype.Component) Payload(io.gravitee.am.model.common.event.Payload) ApplicationScopeSettings(io.gravitee.am.model.application.ApplicationScopeSettings) ScopeAuditBuilder(io.gravitee.am.service.reporter.builder.management.ScopeAuditBuilder) Lazy(org.springframework.context.annotation.Lazy) ScopeApprovalRepository(io.gravitee.am.repository.oauth2.api.ScopeApprovalRepository) ApplicationOAuthSettings(io.gravitee.am.model.application.ApplicationOAuthSettings) ApplicationScopeSettings(io.gravitee.am.model.application.ApplicationScopeSettings) Event(io.gravitee.am.model.common.event.Event) Payload(io.gravitee.am.model.common.event.Payload) ScopeAuditBuilder(io.gravitee.am.service.reporter.builder.management.ScopeAuditBuilder)

Example 28 with User

use of io.gravitee.am.identityprovider.api.User in project gravitee-access-management by gravitee-io.

the class ServiceResourceServiceImpl method create.

@Override
public Single<ServiceResource> create(String domain, NewServiceResource newServiceResource, User principal) {
    LOGGER.debug("Create a new resource {} for domain {}", newServiceResource, domain);
    ServiceResource resource = new ServiceResource();
    resource.setId(newServiceResource.getId() == null ? RandomString.generate() : newServiceResource.getId());
    resource.setReferenceId(domain);
    resource.setReferenceType(ReferenceType.DOMAIN);
    resource.setName(newServiceResource.getName());
    resource.setType(newServiceResource.getType());
    resource.setConfiguration(newServiceResource.getConfiguration());
    resource.setCreatedAt(new Date());
    resource.setUpdatedAt(resource.getCreatedAt());
    return serviceResourceRepository.create(resource).flatMap(resource1 -> {
        // send sync event to refresh plugins that are using this resource
        Event event = new Event(Type.RESOURCE, new Payload(resource1.getId(), resource1.getReferenceType(), resource1.getReferenceId(), Action.CREATE));
        return eventService.create(event).flatMap(__ -> Single.just(resource1));
    }).onErrorResumeNext(ex -> {
        if (ex instanceof AbstractManagementException) {
            return Single.error(ex);
        }
        LOGGER.error("An error occurs while trying to create a resource", ex);
        return Single.error(new TechnicalManagementException("An error occurs while trying to create a resource", ex));
    });
}
Also used : Date(java.util.Date) NewServiceResource(io.gravitee.am.service.model.NewServiceResource) Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) AuditService(io.gravitee.am.service.AuditService) Single(io.reactivex.Single) Event(io.gravitee.am.model.common.event.Event) Type(io.gravitee.am.common.event.Type) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException) Flowable(io.reactivex.Flowable) User(io.gravitee.am.identityprovider.api.User) AuditBuilder(io.gravitee.am.service.reporter.builder.AuditBuilder) ReferenceType(io.gravitee.am.model.ReferenceType) EventService(io.gravitee.am.service.EventService) ServiceResourceAuditBuilder(io.gravitee.am.service.reporter.builder.management.ServiceResourceAuditBuilder) ServiceResourceNotFoundException(io.gravitee.am.service.exception.ServiceResourceNotFoundException) Action(io.gravitee.am.common.event.Action) ServiceResourceService(io.gravitee.am.service.ServiceResourceService) Logger(org.slf4j.Logger) ServiceResourceCurrentlyUsedException(io.gravitee.am.service.exception.ServiceResourceCurrentlyUsedException) ServiceResource(io.gravitee.am.model.resource.ServiceResource) EventType(io.gravitee.am.common.audit.EventType) FactorService(io.gravitee.am.service.FactorService) AbstractManagementException(io.gravitee.am.service.exception.AbstractManagementException) RandomString(io.gravitee.am.common.utils.RandomString) Component(org.springframework.stereotype.Component) Payload(io.gravitee.am.model.common.event.Payload) UpdateServiceResource(io.gravitee.am.service.model.UpdateServiceResource) Lazy(org.springframework.context.annotation.Lazy) ServiceResourceRepository(io.gravitee.am.repository.management.api.ServiceResourceRepository) AbstractManagementException(io.gravitee.am.service.exception.AbstractManagementException) Event(io.gravitee.am.model.common.event.Event) NewServiceResource(io.gravitee.am.service.model.NewServiceResource) ServiceResource(io.gravitee.am.model.resource.ServiceResource) UpdateServiceResource(io.gravitee.am.service.model.UpdateServiceResource) Payload(io.gravitee.am.model.common.event.Payload) Date(java.util.Date) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException)

Example 29 with User

use of io.gravitee.am.identityprovider.api.User in project gravitee-access-management by gravitee-io.

the class TagServiceImpl method create.

@Override
public Single<Tag> create(NewTag newTag, String organizationId, User principal) {
    LOGGER.debug("Create a new tag: {}", newTag);
    String id = humanReadableId(newTag.getName());
    return tagRepository.findById(id, organizationId).isEmpty().flatMap(empty -> {
        if (!empty) {
            throw new TagAlreadyExistsException(newTag.getName());
        } else {
            Tag tag = new Tag();
            tag.setId(id);
            tag.setOrganizationId(organizationId);
            tag.setName(newTag.getName());
            tag.setDescription(newTag.getDescription());
            tag.setCreatedAt(new Date());
            tag.setUpdatedAt(tag.getCreatedAt());
            return tagRepository.create(tag);
        }
    }).onErrorResumeNext(ex -> {
        if (ex instanceof AbstractManagementException) {
            return Single.error(ex);
        }
        LOGGER.error("An error occurs while trying to create a tag", ex);
        return Single.error(new TechnicalManagementException("An error occurs while trying to create a tag", ex));
    }).doOnSuccess(tag -> auditService.report(AuditBuilder.builder(TagAuditBuilder.class).tag(tag).principal(principal).type(EventType.TAG_CREATED))).doOnError(throwable -> auditService.report(AuditBuilder.builder(TagAuditBuilder.class).referenceId(organizationId).principal(principal).type(EventType.TAG_CREATED).throwable(throwable)));
}
Also used : Date(java.util.Date) LoggerFactory(org.slf4j.LoggerFactory) DomainService(io.gravitee.am.service.DomainService) Autowired(org.springframework.beans.factory.annotation.Autowired) AuditService(io.gravitee.am.service.AuditService) TagNotFoundException(io.gravitee.am.service.exception.TagNotFoundException) TagRepository(io.gravitee.am.repository.management.api.TagRepository) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException) TagAuditBuilder(io.gravitee.am.service.reporter.builder.management.TagAuditBuilder) User(io.gravitee.am.identityprovider.api.User) NewTag(io.gravitee.am.service.model.NewTag) AuditBuilder(io.gravitee.am.service.reporter.builder.AuditBuilder) TagAlreadyExistsException(io.gravitee.am.service.exception.TagAlreadyExistsException) io.reactivex(io.reactivex) TagService(io.gravitee.am.service.TagService) Tag(io.gravitee.am.model.Tag) Logger(org.slf4j.Logger) UpdateTag(io.gravitee.am.service.model.UpdateTag) Set(java.util.Set) EventType(io.gravitee.am.common.audit.EventType) AbstractManagementException(io.gravitee.am.service.exception.AbstractManagementException) Normalizer(java.text.Normalizer) Component(org.springframework.stereotype.Component) Lazy(org.springframework.context.annotation.Lazy) Pattern(java.util.regex.Pattern) TagAlreadyExistsException(io.gravitee.am.service.exception.TagAlreadyExistsException) AbstractManagementException(io.gravitee.am.service.exception.AbstractManagementException) NewTag(io.gravitee.am.service.model.NewTag) Tag(io.gravitee.am.model.Tag) UpdateTag(io.gravitee.am.service.model.UpdateTag) Date(java.util.Date) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException)

Example 30 with User

use of io.gravitee.am.identityprovider.api.User in project gravitee-access-management by gravitee-io.

the class IdentityProviderServiceImpl method create.

@Override
public Single<IdentityProvider> create(ReferenceType referenceType, String referenceId, NewIdentityProvider newIdentityProvider, User principal, boolean system) {
    LOGGER.debug("Create a new identity provider {} for {} {}", newIdentityProvider, referenceType, referenceId);
    var identityProvider = new IdentityProvider();
    identityProvider.setId(newIdentityProvider.getId() == null ? RandomString.generate() : newIdentityProvider.getId());
    identityProvider.setReferenceType(referenceType);
    identityProvider.setReferenceId(referenceId);
    identityProvider.setName(newIdentityProvider.getName());
    identityProvider.setType(newIdentityProvider.getType());
    identityProvider.setSystem(system);
    identityProvider.setConfiguration(newIdentityProvider.getConfiguration());
    identityProvider.setExternal(newIdentityProvider.isExternal());
    identityProvider.setDomainWhitelist(ofNullable(newIdentityProvider.getDomainWhitelist()).orElse(List.of()));
    identityProvider.setCreatedAt(new Date());
    identityProvider.setUpdatedAt(identityProvider.getCreatedAt());
    return identityProviderRepository.create(identityProvider).flatMap(identityProvider1 -> {
        // create event for sync process
        Event event = new Event(Type.IDENTITY_PROVIDER, new Payload(identityProvider1.getId(), identityProvider1.getReferenceType(), identityProvider1.getReferenceId(), Action.CREATE));
        return eventService.create(event).flatMap(__ -> Single.just(identityProvider1));
    }).onErrorResumeNext(ex -> {
        LOGGER.error("An error occurs while trying to create an identity provider", ex);
        return Single.error(new TechnicalManagementException("An error occurs while trying to create an identity provider", ex));
    });
}
Also used : ApplicationService(io.gravitee.am.service.ApplicationService) Primary(org.springframework.context.annotation.Primary) Date(java.util.Date) Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) IdentityProvider(io.gravitee.am.model.IdentityProvider) AuditService(io.gravitee.am.service.AuditService) Single(io.reactivex.Single) Event(io.gravitee.am.model.common.event.Event) Type(io.gravitee.am.common.event.Type) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException) Flowable(io.reactivex.Flowable) User(io.gravitee.am.identityprovider.api.User) IdentityProviderAuditBuilder(io.gravitee.am.service.reporter.builder.management.IdentityProviderAuditBuilder) AuditBuilder(io.gravitee.am.service.reporter.builder.AuditBuilder) NewIdentityProvider(io.gravitee.am.service.model.NewIdentityProvider) ReferenceType(io.gravitee.am.model.ReferenceType) EventService(io.gravitee.am.service.EventService) IdentityProviderRepository(io.gravitee.am.repository.management.api.IdentityProviderRepository) IdentityProviderNotFoundException(io.gravitee.am.service.exception.IdentityProviderNotFoundException) Action(io.gravitee.am.common.event.Action) IdentityProviderWithApplicationsException(io.gravitee.am.service.exception.IdentityProviderWithApplicationsException) Logger(org.slf4j.Logger) Optional.ofNullable(java.util.Optional.ofNullable) EventType(io.gravitee.am.common.audit.EventType) AbstractManagementException(io.gravitee.am.service.exception.AbstractManagementException) RandomString(io.gravitee.am.common.utils.RandomString) UpdateIdentityProvider(io.gravitee.am.service.model.UpdateIdentityProvider) Component(org.springframework.stereotype.Component) List(java.util.List) Payload(io.gravitee.am.model.common.event.Payload) Lazy(org.springframework.context.annotation.Lazy) IdentityProviderService(io.gravitee.am.service.IdentityProviderService) Event(io.gravitee.am.model.common.event.Event) IdentityProvider(io.gravitee.am.model.IdentityProvider) NewIdentityProvider(io.gravitee.am.service.model.NewIdentityProvider) UpdateIdentityProvider(io.gravitee.am.service.model.UpdateIdentityProvider) Payload(io.gravitee.am.model.common.event.Payload) Date(java.util.Date) TechnicalManagementException(io.gravitee.am.service.exception.TechnicalManagementException)

Aggregations

User (io.gravitee.am.identityprovider.api.User)157 ApiOperation (io.swagger.annotations.ApiOperation)68 ApiResponses (io.swagger.annotations.ApiResponses)68 Autowired (org.springframework.beans.factory.annotation.Autowired)66 Maybe (io.reactivex.Maybe)52 DomainNotFoundException (io.gravitee.am.service.exception.DomainNotFoundException)50 ReferenceType (io.gravitee.am.model.ReferenceType)49 Permission (io.gravitee.am.model.permissions.Permission)47 AsyncResponse (javax.ws.rs.container.AsyncResponse)44 Suspended (javax.ws.rs.container.Suspended)44 Acl (io.gravitee.am.model.Acl)43 MediaType (io.gravitee.common.http.MediaType)42 AbstractResource (io.gravitee.am.management.handlers.management.api.resources.AbstractResource)39 javax.ws.rs (javax.ws.rs)39 Valid (javax.validation.Valid)37 NotNull (javax.validation.constraints.NotNull)37 ResourceContext (javax.ws.rs.container.ResourceContext)37 Context (javax.ws.rs.core.Context)37 Response (javax.ws.rs.core.Response)37 DomainService (io.gravitee.am.service.DomainService)35