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);
}
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));
});
}
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));
});
}
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)));
}
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));
});
}
Aggregations