Search in sources :

Example 1 with AdminEventQuery

use of org.keycloak.events.admin.AdminEventQuery in project keycloak by keycloak.

the class TestingResourceProvider method getAdminEvents.

/**
 * Get admin events
 *
 * Returns all admin events, or filters events based on URL query parameters listed here
 *
 * @param realmId
 * @param operationTypes
 * @param authRealm
 * @param authClient
 * @param authUser user id
 * @param authIpAddress
 * @param resourcePath
 * @param dateFrom
 * @param dateTo
 * @param firstResult
 * @param maxResults
 * @return
 */
@Path("query-admin-events")
@GET
@NoCache
@Produces(MediaType.APPLICATION_JSON)
public Stream<AdminEventRepresentation> getAdminEvents(@QueryParam("realmId") String realmId, @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) {
    EventStoreProvider eventStore = session.getProvider(EventStoreProvider.class);
    AdminEventQuery query = eventStore.createAdminQuery();
    if (realmId != null) {
        query.realm(realmId);
    }
    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 (dateFrom != null) {
        Date from = formatDate(dateFrom, "Date(From)");
        query.fromTime(from);
    }
    if (dateTo != null) {
        Date to = formatDate(dateTo, "Date(To)");
        query.toTime(to);
    }
    if (firstResult != null || maxResults != null) {
        if (firstResult == null) {
            firstResult = 0;
        }
        if (maxResults == null) {
            maxResults = 100;
        }
        query.firstResult(firstResult);
        query.maxResults(maxResults);
    }
    return query.getResultStream().map(ModelToRepresentation::toRepresentation);
}
Also used : AdminEventQuery(org.keycloak.events.admin.AdminEventQuery) OperationType(org.keycloak.events.admin.OperationType) ModelToRepresentation(org.keycloak.models.utils.ModelToRepresentation) 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 2 with AdminEventQuery

use of org.keycloak.events.admin.AdminEventQuery 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)

Aggregations

Date (java.util.Date)2 GET (javax.ws.rs.GET)2 Path (javax.ws.rs.Path)2 Produces (javax.ws.rs.Produces)2 NoCache (org.jboss.resteasy.annotations.cache.NoCache)2 EventStoreProvider (org.keycloak.events.EventStoreProvider)2 AdminEventQuery (org.keycloak.events.admin.AdminEventQuery)2 OperationType (org.keycloak.events.admin.OperationType)2 ModelToRepresentation (org.keycloak.models.utils.ModelToRepresentation)2 ParseException (java.text.ParseException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 BadRequestException (javax.ws.rs.BadRequestException)1 ResourceType (org.keycloak.events.admin.ResourceType)1