Example usage for io.vertx.core.json JsonArray stream

List of usage examples for io.vertx.core.json JsonArray stream

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray stream.

Prototype

public Stream<Object> stream() 

Source Link

Document

Get a Stream over the entries in the JSON array

Usage

From source file:io.flowly.auth.router.UserRouter.java

License:Open Source License

private JsonObject getAuthenticatedUser(JsonObject user) {
    if (!user.getBoolean(User.AUTHENTICATED)) {
        return user;
    }//from   w  w w  . j a  va2s  . c o m

    JsonObject claims = new JsonObject().put("sub", user.getString(User.USER_ID)).put("permissions",
            user.remove(Permission.EFFECTIVE_PERMISSIONS));

    JsonArray directMemberships = (JsonArray) user.remove(User.DIRECT_MEMBERSHIPS);
    if (directMemberships != null) {
        claims.put(ObjectKeys.GURU, directMemberships.stream().anyMatch(m -> {
            JsonObject group = (JsonObject) m;
            String groupId = group.getString(Group.GROUP_ID);

            return groupId != null && groupId.equals(ObjectKeys.ADMIN_GROUP_ID);
        }));
    }

    return user.put("token", authProvider.generateToken(claims, new JWTOptions()));
}

From source file:io.nitor.api.backend.auth.SetupAzureAdConnectAuth.java

License:Apache License

public static void setupAzureAd(JsonObject adAuth, Router router, String publicURI, boolean virtualHost,
        CookieSessionHandler sessionHandler, HttpClient httpClient) {
    final String callbackPath = adAuth.getString("callbackPath", "/oidc/callback");
    String redirectUri = publicURI + callbackPath;
    adAuth.put("redirectUri", redirectUri);

    String path = adAuth.getString("route", "/*");

    List<GraphQuery> graphQueries = new ArrayList<>();
    JsonArray queryNodes = adAuth.getJsonArray("graphQueries");
    if (queryNodes == null) {
        graphQueries.add(new GraphQuery(adAuth, "https://graph.microsoft.com/beta/me?$expand=memberOf"));
    } else {/*from  w w  w  . ja v  a2 s  . c om*/
        queryNodes.stream().map(JsonObject.class::cast).map(GraphQuery::new).forEach(graphQueries::add);
    }
    Set<String> forbiddenHeaders = graphQueries.stream().flatMap(gq -> gq.headerMappings.keySet().stream())
            .collect(toSet());
    logger.info("Graph queries: "
            + graphQueries.stream().map(gq -> gq.graphQueryURI).collect(Collectors.joining(", ")));
    logger.info("Headers: " + forbiddenHeaders);

    HashMap<String, Pattern> requiredHeaderMatchers = new HashMap<>();
    adAuth.getJsonObject("requiredHeaders", new JsonObject()).forEach(mapping -> requiredHeaderMatchers
            .put(mapping.getKey(), Pattern.compile(mapping.getValue().toString())));

    RedirectTokenService redirectTokenService = new RedirectTokenService(sessionHandler.getCookieConverter());

    Handler<RoutingContext> securityHandler = authHandler(adAuth, forbiddenHeaders, requiredHeaderMatchers,
            publicURI, virtualHost, sessionHandler, redirectUri, redirectTokenService);

    router.get(FORBIDDEN_PATH).handler(ctx -> errorWithLogoutLink(ctx, FORBIDDEN));
    router.get(UNAUTHORIZED_PATH).handler(ctx -> errorWithLogoutLink(ctx, UNAUTHORIZED));

    router.get(callbackPath).handler(validateAuthCallback(adAuth, httpClient, sessionHandler, graphQueries,
            redirectUri, redirectTokenService));

    if (virtualHost) {
        router.options(PROXY_AUTH_REDIRECT_AFTER).handler(SetupAzureAdConnectAuth::optionsHandler);
        router.route(PROXY_AUTH_REDIRECT_AFTER).handler(ctx -> {
            // phase 3: executed when returning to virtual domain with cookie and original url inside token
            // -> jump to original locatin and set the cookie
            String token = ctx.request().getParam("t");
            Map<String, String> params = redirectTokenService.getParameters(ctx, token);
            if (params == null) {
                ctx.reroute(GET, UNAUTHORIZED_PATH);
                logger.warn("phase3: Could not decrypt parameters from 't'");
                return;
            }
            String originalUrl = params.get("u");
            String originalHost = getUriHostName(originalUrl);
            String host = getUriHostName(ctx.request().host());
            if (originalHost != null && originalHost.equals(host)) {
                ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, originalUrl)
                        .putHeader(SET_COOKIE, params.get("c")).end();
            } else {
                logger.warn("phase3: original host from cookie " + originalHost
                        + " does not match request host " + host);
                ctx.reroute(GET, FORBIDDEN_PATH);
            }
        });
    }

    router.route(path).handler(securityHandler);

    if (virtualHost) {
        router.options(PROXY_AUTH_REDIRECT_BEFORE).handler(SetupAzureAdConnectAuth::optionsHandler);
        router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(securityHandler);
        router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(ctx -> {
            // phase 2: executed when returning from authentication server with valid cookie
            // -> jump to original virtual host domain and pass the original url and auth cookie inside token
            String token = ctx.request().getParam("t");
            Map<String, String> params = redirectTokenService.getParameters(ctx, token);
            if (params == null) {
                ctx.reroute(GET, UNAUTHORIZED_PATH);
                logger.warn("phase2: Could not decrypt parameters from 't'");
                return;
            }
            String originalUrl = params.get("u");
            String originalHost = getUriHostNamePort(originalUrl);
            if (originalUrl == null || !originalUrl.startsWith("https://")) {
                ctx.reroute(GET, FORBIDDEN_PATH);
                logger.warn(
                        "phase2: original url from cookie " + originalUrl + " does not start with https://");
                return;
            }
            Cookie cookie = sessionHandler.getAuthCookie(ctx.cookies());
            params.put("c", cookie.encode());
            String newToken = redirectTokenService.createToken(ctx, params);
            StringBuilder sb = new StringBuilder();
            sb.append("https://").append(originalHost).append(PROXY_AUTH_REDIRECT_AFTER).append("?t=")
                    .append(urlEncode(newToken));
            ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, sb).end();
        });
    }
}

From source file:io.nitor.api.backend.session.Encryptor.java

License:Apache License

private byte[] generateSecret(JsonArray secretGenerator) {
    try {/*from  w  w w .  j  a  v  a2  s.  c o  m*/
        Process p = new ProcessBuilder()
                .command(secretGenerator.stream().map(Object::toString).collect(toList()))
                .redirectErrorStream(true).start();
        byte[] inputData;
        try (InputStream in = p.getInputStream()) {
            inputData = toBytes(in);
        }
        p.destroy();
        MessageDigest digest = MessageDigest.getInstance("SHA-512");
        return digest.digest(inputData);
    } catch (IOException | NoSuchAlgorithmException e) {
        throw new RuntimeException("Failed to execute secret generator", e);
    }
}

From source file:org.eclipse.hono.authorization.impl.InMemoryAuthorizationService.java

License:Open Source License

private Set<Permission> toSet(final JsonArray array) {
    return array.stream().filter(element -> element instanceof String).map(element -> (String) element)
            .map(Permission::valueOf).collect(Collectors.<Permission>toSet());
}

From source file:org.eclipse.hono.service.auth.device.AbstractDeviceCredentials.java

License:Open Source License

private boolean validate(final JsonArray secretsOnRecord) {

    return secretsOnRecord.stream().filter(obj -> obj instanceof JsonObject).anyMatch(obj -> {
        final JsonObject candidateSecret = (JsonObject) obj;
        return isInValidityPeriod(candidateSecret, Instant.now()) && matchesCredentials(candidateSecret);
    });/*from w  ww  .ja  v a 2 s .  co  m*/
}

From source file:org.eclipse.hono.service.tenant.BaseTenantService.java

License:Open Source License

/**
 * Check the request payload for validity.
 *
 * @param payload The payload to check./*from  w w  w  . j  ava 2  s. c  o  m*/
 * @return boolean The result of the check : {@link Boolean#TRUE} if the payload is valid, {@link Boolean#FALSE} otherwise.
 * @throws NullPointerException If the payload is {@code null}.
 */
private boolean isValidRequestPayload(final JsonObject payload) {

    final Object adaptersObj = payload.getValue(TenantConstants.FIELD_ADAPTERS);
    if (adaptersObj == null) {
        // all adapters enabled with default config
        return true;
    } else if (adaptersObj instanceof JsonArray) {

        final JsonArray adapters = (JsonArray) adaptersObj;
        if (adapters.size() == 0) {
            // if given, adapters config array must not be empty
            return false;
        } else {
            return !adapters.stream().anyMatch(obj -> {
                return !(obj instanceof JsonObject)
                        || !((JsonObject) obj).containsKey(TenantConstants.FIELD_ADAPTERS_TYPE);
            });
        }
    } else {
        // malformed payload
        return false;
    }
}

From source file:org.eclipse.hono.util.TenantObject.java

License:Open Source License

/**
 * Sets the configuration information for this tenant's
 * configured adapters.//from w  ww  .j  av a2s .c  om
 * 
 * @param configurations The configuration properties for this tenant's
 *                       configured adapters or {@code null} in order to
 *                       remove any existing configuration.
 * @return This tenant for command chaining.
 */
@JsonIgnore
public TenantObject setAdapterConfigurations(final JsonArray configurations) {
    if (configurations == null) {
        this.adapterConfigurations = null;
    } else {
        this.adapterConfigurations = new HashMap<>();
        configurations.stream().filter(obj -> JsonObject.class.isInstance(obj)).forEach(config -> {
            addAdapterConfiguration((JsonObject) config);
        });
    }
    return this;
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void getNotifyMembers(Handler<Either<String, JsonObject>> handler, JsonArray oldShared,
        JsonArray members, Function<Object, String> f) {
    JsonArray notifyMembers;//w w w.  jav a2 s  . c o m
    if (oldShared != null && oldShared.size() > 0 && members != null && members.size() > 0) {
        final Set<String> oldMembersIds = oldShared.stream().map(f).collect(Collectors.toSet());
        notifyMembers = new JsonArray();
        for (Object o : members) {
            final JsonObject j = (JsonObject) o;
            final String memberId = getOrElse(j.getString("groupId"), j.getString("userId"));
            if (!oldMembersIds.contains(memberId)) {
                notifyMembers.add(j);
            }
        }
    } else {
        notifyMembers = members;
    }
    handler.handle(new Either.Right<>(new JsonObject().put("notify-timeline-array", notifyMembers)));
}

From source file:org.entcore.directory.services.impl.UserbookRepositoryEvents.java

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    String query = "MATCH (u:UserBook)-[r]-(n) " + "WHERE (n:Hobby OR n:UserBook) AND NOT(u<--(:User)) "
            + "DETACH DELETE u, r, n";
    StatementsBuilder b = new StatementsBuilder().add(query);
    query = "MATCH (p:UserAppConf) " + "WHERE NOT(p<--(:User)) " + "DETACH DELETE p";
    b.add(query);//  w ww  .jav a  2s .  co m
    b.add("MATCH (sb:ShareBookmark) WHERE NOT(sb<--(:User)) DELETE sb");
    Neo4j.getInstance().executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if (!"ok".equals(event.body().getString("status"))) {
                log.error("Error deleting userbook data : " + event.body().encode());
            }
        }
    });
    List<String> userIds = users.stream().filter(u -> u instanceof JsonObject)
            .map(u -> ((JsonObject) u).getString("id")).collect(Collectors.toList());
    userBookService.cleanAvatarCache(userIds, res -> {
        if (!res) {
            log.error("Error cleaning avatars for ids : " + StringUtils.join(userIds, " "));
        }
    });
}

From source file:org.etourdot.vertx.marklogic.http.impl.response.BulkResponse.java

License:Open Source License

@Override
public void process() {
    response.bodyHandler(buffer -> {/*from w  w w  .  j a  va  2  s.com*/
        final JsonObject jsonResponse = buffer.toJsonObject();
        if (jsonResponse.containsKey("documents")) {
            JsonArray docs = jsonResponse.getJsonArray("documents");
            docs.stream().forEach(doc -> documents.add(Document.create((JsonObject) doc)));
        }
        this.endHandler.handle(this);
    });
}