Search in sources :

Example 11 with ModelToRepresentation

use of org.keycloak.models.utils.ModelToRepresentation in project keycloak by keycloak.

the class RealmAdminResource method getEvents.

/**
 * Get admin events
 *
 * Returns all admin events, or filters events based on URL query parameters listed here
 *
 * @param operationTypes
 * @param authRealm
 * @param authClient
 * @param authUser user id
 * @param authIpAddress
 * @param resourcePath
 * @param dateTo
 * @param dateFrom
 * @param firstResult
 * @param maxResults Maximum results size (defaults to 100)
 * @return
 */
@Path("admin-events")
@GET
@NoCache
@Produces(MediaType.APPLICATION_JSON)
public Stream<AdminEventRepresentation> getEvents(@QueryParam("operationTypes") List<String> operationTypes, @QueryParam("authRealm") String authRealm, @QueryParam("authClient") String authClient, @QueryParam("authUser") String authUser, @QueryParam("authIpAddress") String authIpAddress, @QueryParam("resourcePath") String resourcePath, @QueryParam("dateFrom") String dateFrom, @QueryParam("dateTo") String dateTo, @QueryParam("first") Integer firstResult, @QueryParam("max") Integer maxResults, @QueryParam("resourceTypes") List<String> resourceTypes) {
    auth.realm().requireViewEvents();
    EventStoreProvider eventStore = session.getProvider(EventStoreProvider.class);
    AdminEventQuery query = eventStore.createAdminQuery().realm(realm.getId());
    ;
    if (authRealm != null) {
        query.authRealm(authRealm);
    }
    if (authClient != null) {
        query.authClient(authClient);
    }
    if (authUser != null) {
        query.authUser(authUser);
    }
    if (authIpAddress != null) {
        query.authIpAddress(authIpAddress);
    }
    if (resourcePath != null) {
        query.resourcePath(resourcePath);
    }
    if (operationTypes != null && !operationTypes.isEmpty()) {
        OperationType[] t = new OperationType[operationTypes.size()];
        for (int i = 0; i < t.length; i++) {
            t[i] = OperationType.valueOf(operationTypes.get(i));
        }
        query.operation(t);
    }
    if (resourceTypes != null && !resourceTypes.isEmpty()) {
        ResourceType[] t = new ResourceType[resourceTypes.size()];
        for (int i = 0; i < t.length; i++) {
            t[i] = ResourceType.valueOf(resourceTypes.get(i));
        }
        query.resourceType(t);
    }
    if (dateFrom != null) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date from = null;
        try {
            from = df.parse(dateFrom);
        } catch (ParseException e) {
            throw new BadRequestException("Invalid value for 'Date(From)', expected format is yyyy-MM-dd");
        }
        query.fromTime(from);
    }
    if (dateTo != null) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date to = null;
        try {
            to = df.parse(dateTo);
        } catch (ParseException e) {
            throw new BadRequestException("Invalid value for 'Date(To)', expected format is yyyy-MM-dd");
        }
        query.toTime(to);
    }
    if (firstResult != null) {
        query.firstResult(firstResult);
    }
    if (maxResults != null) {
        query.maxResults(maxResults);
    } else {
        query.maxResults(Constants.DEFAULT_MAX_RESULTS);
    }
    return query.getResultStream().map(ModelToRepresentation::toRepresentation);
}
Also used : AdminEventQuery(org.keycloak.events.admin.AdminEventQuery) BadRequestException(javax.ws.rs.BadRequestException) ResourceType(org.keycloak.events.admin.ResourceType) OperationType(org.keycloak.events.admin.OperationType) ParseException(java.text.ParseException) ModelToRepresentation(org.keycloak.models.utils.ModelToRepresentation) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date) EventStoreProvider(org.keycloak.events.EventStoreProvider) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) NoCache(org.jboss.resteasy.annotations.cache.NoCache)

Example 12 with ModelToRepresentation

use of org.keycloak.models.utils.ModelToRepresentation in project keycloak by keycloak.

the class RoleContainerResource method getRoleComposites.

/**
 * Get composites of the role
 *
 * @param roleName role's name (not id!)
 * @return
 */
@Path("{role-name}/composites")
@GET
@NoCache
@Produces(MediaType.APPLICATION_JSON)
public Stream<RoleRepresentation> getRoleComposites(@PathParam("role-name") final String roleName) {
    auth.roles().requireView(roleContainer);
    RoleModel role = roleContainer.getRole(roleName);
    if (role == null) {
        throw new NotFoundException("Could not find role");
    }
    return role.getCompositesStream().map(ModelToRepresentation::toBriefRepresentation);
}
Also used : NotFoundException(javax.ws.rs.NotFoundException) RoleModel(org.keycloak.models.RoleModel) ModelToRepresentation(org.keycloak.models.utils.ModelToRepresentation) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) NoCache(org.jboss.resteasy.annotations.cache.NoCache)

Aggregations

ModelToRepresentation (org.keycloak.models.utils.ModelToRepresentation)12 Path (javax.ws.rs.Path)9 GET (javax.ws.rs.GET)8 Produces (javax.ws.rs.Produces)8 NoCache (org.jboss.resteasy.annotations.cache.NoCache)8 RoleModel (org.keycloak.models.RoleModel)8 NotFoundException (javax.ws.rs.NotFoundException)6 Collectors (java.util.stream.Collectors)5 Stream (java.util.stream.Stream)5 Consumes (javax.ws.rs.Consumes)5 DELETE (javax.ws.rs.DELETE)5 OperationType (org.keycloak.events.admin.OperationType)5 KeycloakSession (org.keycloak.models.KeycloakSession)5 RealmModel (org.keycloak.models.RealmModel)5 RoleRepresentation (org.keycloak.representations.idm.RoleRepresentation)5 ResourceType (org.keycloak.events.admin.ResourceType)4 Date (java.util.Date)3 List (java.util.List)3 Map (java.util.Map)3 Predicate (java.util.function.Predicate)3