Search in sources :

Example 16 with User

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

the class NewsletterResource method subscribeNewsletter.

@POST
@Path("/_subscribe")
@ApiOperation(value = "Subscribe to the newsletter the authenticated user")
@ApiResponses({ @ApiResponse(code = 200, message = "Updated user", response = User.class), @ApiResponse(code = 400, message = "Invalid user profile"), @ApiResponse(code = 404, message = "User not found"), @ApiResponse(code = 500, message = "Internal server error") })
public void subscribeNewsletter(@ApiParam(name = "email", required = true) @Valid @NotNull final EmailValue emailValue, @Suspended final AsyncResponse response) {
    final User authenticatedUser = getAuthenticatedUser();
    // Get the organization the current user is logged on.
    String organizationId = (String) authenticatedUser.getAdditionalInformation().getOrDefault(Claims.organization, Organization.DEFAULT);
    userService.findById(ReferenceType.ORGANIZATION, organizationId, authenticatedUser.getId()).flatMap(user -> {
        user.setEmail(emailValue.getEmail());
        user.setNewsletter(true);
        return userService.update(user);
    }).doOnSuccess(endUser -> {
        Map<String, Object> object = new HashMap<>();
        object.put("email", endUser.getEmail());
        newsletterService.subscribe(object);
    }).subscribe(response::resume, response::resume);
}
Also used : Logger(org.slf4j.Logger) POST(javax.ws.rs.POST) GET(javax.ws.rs.GET) AsyncResponse(javax.ws.rs.container.AsyncResponse) UserService(io.gravitee.am.service.UserService) LoggerFactory(org.slf4j.LoggerFactory) Path(javax.ws.rs.Path) Autowired(org.springframework.beans.factory.annotation.Autowired) HashMap(java.util.HashMap) AbstractResource(io.gravitee.am.management.handlers.management.api.resources.AbstractResource) NotNull(javax.validation.constraints.NotNull) Suspended(javax.ws.rs.container.Suspended) NewsletterService(io.gravitee.am.management.service.NewsletterService) Valid(javax.validation.Valid) Organization(io.gravitee.am.model.Organization) List(java.util.List) User(io.gravitee.am.identityprovider.api.User) EmailValue(io.gravitee.am.management.handlers.management.api.model.EmailValue) Map(java.util.Map) Claims(io.gravitee.am.common.jwt.Claims) OrganizationUserService(io.gravitee.am.service.OrganizationUserService) ReferenceType(io.gravitee.am.model.ReferenceType) io.swagger.annotations(io.swagger.annotations) Collections(java.util.Collections) User(io.gravitee.am.identityprovider.api.User) HashMap(java.util.HashMap) Map(java.util.Map) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST)

Example 17 with User

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

the class UserNotificationsResource method markAsRead.

@POST
@Path("/{notificationId}/acknowledge")
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Mark User notification as read")
@ApiResponses({ @ApiResponse(code = 204, message = "User notification has been marked as read"), @ApiResponse(code = 500, message = "Internal server error") })
public void markAsRead(@PathParam("notificationId") String notificationId, @Suspended final AsyncResponse response) {
    // All users have rights to read notifications
    if (!isAuthenticated()) {
        response.resume(new ForbiddenException());
        return;
    }
    final User authenticatedUser = getAuthenticatedUser();
    notificationService.markAsRead(authenticatedUser, notificationId).subscribe(() -> response.resume(Response.noContent()), response::resume);
}
Also used : User(io.gravitee.am.identityprovider.api.User) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 18 with User

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

the class AuditsResource method list.

@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List audit logs for the organization", notes = "User must have the ORGANIZATION_AUDIT[LIST] permission on the specified organization. " + "Except if user has ORGANIZATION_AUDIT[READ] permission on the organization, each returned audit is filtered and contains only basic information such as id, date, event, actor, target and status.")
@ApiResponses({ @ApiResponse(code = 200, message = "List audit logs for the platform", response = Audit.class, responseContainer = "List"), @ApiResponse(code = 500, message = "Internal server error") })
public void list(@PathParam("organizationId") String organizationId, @BeanParam AuditParam param, @Suspended final AsyncResponse response) {
    AuditReportableCriteria.Builder queryBuilder = new AuditReportableCriteria.Builder().from(param.getFrom()).to(param.getTo()).status(param.getStatus()).user(param.getUser());
    if (param.getType() != null) {
        queryBuilder.types(Collections.singletonList(param.getType()));
    }
    User authenticatedUser = getAuthenticatedUser();
    checkPermission(ReferenceType.ORGANIZATION, organizationId, Permission.ORGANIZATION_AUDIT, Acl.LIST).andThen(auditService.search(ReferenceType.ORGANIZATION, organizationId, queryBuilder.build(), param.getPage(), param.getSize()).flatMap(auditPage -> hasPermission(authenticatedUser, ReferenceType.ORGANIZATION, organizationId, Permission.ORGANIZATION_AUDIT, Acl.READ).map(hasPermission -> {
        if (hasPermission) {
            return auditPage;
        } else {
            return new Page<>(auditPage.getData().stream().map(FilterUtils::filterAuditInfos).collect(Collectors.toList()), auditPage.getCurrentPage(), auditPage.getTotalCount());
        }
    }))).subscribe(response::resume, response::resume);
}
Also used : Permission(io.gravitee.am.model.permissions.Permission) DomainService(io.gravitee.am.service.DomainService) Autowired(org.springframework.beans.factory.annotation.Autowired) AbstractResource(io.gravitee.am.management.handlers.management.api.resources.AbstractResource) ApiResponses(io.swagger.annotations.ApiResponses) Single(io.reactivex.Single) Acl(io.gravitee.am.model.Acl) ApiOperation(io.swagger.annotations.ApiOperation) User(io.gravitee.am.identityprovider.api.User) ReferenceType(io.gravitee.am.model.ReferenceType) Api(io.swagger.annotations.Api) AuditService(io.gravitee.am.management.service.AuditService) Page(io.gravitee.am.model.common.Page) Context(javax.ws.rs.core.Context) AsyncResponse(javax.ws.rs.container.AsyncResponse) EventType(io.gravitee.am.common.audit.EventType) AuditOutcome(io.gravitee.am.reporter.api.audit.model.AuditOutcome) Suspended(javax.ws.rs.container.Suspended) Collectors(java.util.stream.Collectors) AuditReportableCriteria(io.gravitee.am.reporter.api.audit.AuditReportableCriteria) MediaType(io.gravitee.common.http.MediaType) javax.ws.rs(javax.ws.rs) Response(javax.ws.rs.core.Response) AuditParam(io.gravitee.am.management.handlers.management.api.model.AuditParam) ApiResponse(io.swagger.annotations.ApiResponse) ResourceContext(javax.ws.rs.container.ResourceContext) FilterUtils(io.gravitee.am.management.handlers.management.api.resources.utils.FilterUtils) AuditEntity(io.gravitee.am.reporter.api.audit.model.AuditEntity) Collections(java.util.Collections) Audit(io.gravitee.am.reporter.api.audit.model.Audit) User(io.gravitee.am.identityprovider.api.User) AuditReportableCriteria(io.gravitee.am.reporter.api.audit.AuditReportableCriteria) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 19 with User

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

the class EntrypointResource method delete.

@DELETE
@ApiOperation(value = "Delete the sharding entrypoint", notes = "User must have the ORGANIZATION_ENTRYPOINT[DELETE] permission on the specified organization")
@ApiResponses({ @ApiResponse(code = 204, message = "Sharding entrypoint successfully deleted"), @ApiResponse(code = 500, message = "Internal server error") })
public void delete(@PathParam("organizationId") String organizationId, @PathParam("entrypointId") String entrypointId, @Suspended final AsyncResponse response) {
    final User authenticatedUser = getAuthenticatedUser();
    checkPermission(ReferenceType.ORGANIZATION, organizationId, Permission.ORGANIZATION_ENTRYPOINT, Acl.DELETE).andThen(entrypointService.delete(entrypointId, organizationId, authenticatedUser)).subscribe(() -> response.resume(Response.noContent().build()), response::resume);
}
Also used : User(io.gravitee.am.identityprovider.api.User) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 20 with User

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

the class EnvironmentsResource method list.

@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "List all the environments", notes = "User must have the ENVIRONMENT[LIST] permission on the specified organization " + "AND either ENVIRONMENT[READ] permission on each environment " + "or ENVIRONMENT[READ] permission on the specified organization." + "Each returned environment is filtered and contains only basic information such as id and name.")
@ApiResponses({ @ApiResponse(code = 200, message = "List all the environments of the organization", response = Environment.class, responseContainer = "List"), @ApiResponse(code = 500, message = "Internal server error") })
public void list(@PathParam("organizationId") String organizationId, @Suspended final AsyncResponse response) {
    User authenticatedUser = getAuthenticatedUser();
    checkPermission(ReferenceType.ORGANIZATION, organizationId, Permission.ENVIRONMENT, Acl.LIST).andThen(environmentService.findAll(organizationId)).flatMapMaybe(environment -> hasPermission(authenticatedUser, or(of(ReferenceType.ENVIRONMENT, environment.getId(), Permission.ENVIRONMENT, Acl.READ), of(ReferenceType.ORGANIZATION, organizationId, Permission.ENVIRONMENT, Acl.READ))).filter(Boolean::booleanValue).map(permit -> environment)).map(this::filterEnvironmentInfos).sorted((o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getName(), o2.getName())).toList().subscribe(response::resume, response::resume);
}
Also used : EnvironmentService(io.gravitee.am.service.EnvironmentService) Context(javax.ws.rs.core.Context) Permissions.of(io.gravitee.am.management.service.permissions.Permissions.of) AsyncResponse(javax.ws.rs.container.AsyncResponse) Permission(io.gravitee.am.model.permissions.Permission) Autowired(org.springframework.beans.factory.annotation.Autowired) Environment(io.gravitee.am.model.Environment) AbstractResource(io.gravitee.am.management.handlers.management.api.resources.AbstractResource) ApiResponses(io.swagger.annotations.ApiResponses) Suspended(javax.ws.rs.container.Suspended) Acl(io.gravitee.am.model.Acl) ApiOperation(io.swagger.annotations.ApiOperation) MediaType(io.gravitee.common.http.MediaType) javax.ws.rs(javax.ws.rs) User(io.gravitee.am.identityprovider.api.User) ApiResponse(io.swagger.annotations.ApiResponse) ResourceContext(javax.ws.rs.container.ResourceContext) Permissions.or(io.gravitee.am.management.service.permissions.Permissions.or) ReferenceType(io.gravitee.am.model.ReferenceType) User(io.gravitee.am.identityprovider.api.User) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

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