Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

From source file:io.flowly.auth.manager.UserManager.java

License:Open Source License

/**
 * Verify the authenticity of the provided user credentials.
 *
 * @param user JSON object representing the user credentials.
 *             Ex: {/*from  w  w w . ja  v  a 2 s  .c om*/
 *                 "userId": "aragorn",
 *                 "password": "!234aCbbJk_#3"
 *             }
 * @return JSON object representing the authenticated user attributes and effective permissions.
 *         Ex: {
 *             "userId": "aragorn",
 *             "firstName": "First",
 *             "lastName": "Last",
 *             "middleName": "M",
 *             "fullName": "First M Last",
 *             "isInternal": true,
 *             "authenticated": true,
 *             "effectivePermissions": [
 *                 {
 *                     "resourceVertexId": 54113,
 *                     "resourceId": "Studio"
 *                     "rwx": 7
 *                 }
 *             ]
 *         }
 */
public JsonObject authenticate(JsonObject user) {
    user.put(User.AUTHENTICATED, false);
    String password = (String) user.remove(User.PASSWORD);
    String userId = user.getString(User.USER_ID);

    try {
        if (StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(password)) {

            Traversal<Vertex, Vertex> traversal = graph.traversal().V().has(Schema.V_USER, Schema.V_P_USER_ID,
                    userId);

            if (traversal.hasNext()) {
                Vertex userVertex = traversal.next();
                String hash = getPropertyValue(userVertex, Schema.V_P_PASSWORD).toString();
                boolean authenticated = PasswordHash.validatePassword(password, hash);

                if (authenticated) {
                    user = get(userVertex, true, false, false, true);
                    user.put(User.AUTHENTICATED, true);
                }
            }

            commit();
        }
    } catch (Exception ex) {
        rollback();
        logger.error("Unable to authenticate user.", ex);
    }

    return user;
}

From source file:io.flowly.auth.manager.UserManager.java

License:Open Source License

@Override
public Handler<Message<JsonObject>> getHandler() {
    return message -> {
        JsonObject args = message.body();
        message.reply(get(args.getString(User.USER_ID), args.getBoolean("includeDirectMemberships"),
                args.getBoolean("includeEffectiveMemberships"), args.getBoolean("includeDirectPermissions"),
                args.getBoolean("includeEffectivePermissions")));
    };/* w  ww  .j av a  2 s .co  m*/
}

From source file:io.flowly.auth.manager.UserManager.java

License:Open Source License

/**
 * Goes through the list of permissions that are to be considered and based on whether the given permission
 * is higher than the previously defined one, adds the new permission to the map.
 *
 * @param permissionsToConsider the list of new permissions to consider to add to the map.
 * @param definedPermissions the existing map of permissions added thus far.
 *//* w  ww .j  a  v a 2s. c o  m*/
private void getEffectivePermissions(JsonArray permissionsToConsider,
        Map<String, JsonObject> definedPermissions) {
    if (permissionsToConsider == null) {
        return;
    }

    for (Object prm : permissionsToConsider) {
        JsonObject permission = (JsonObject) prm;
        String resourceId = permission.getString(Resource.RESOURCE_ID);

        if (!definedPermissions.containsKey(resourceId)) {
            definedPermissions.put(resourceId, permission);
        } else {
            JsonObject definedPermission = definedPermissions.get(resourceId);
            definedPermissions.put(resourceId, Permission.merge(definedPermission, permission));
        }
    }
}

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;
    }/* ww w .j a v a  2 s. 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.flowly.engine.App.java

License:Open Source License

public static App toApp(JsonObject jsonObject) {
    App app = new App(jsonObject.getString(JsonKeys.APP_ID), jsonObject.getString(JsonKeys.APPS_DIRECTORY));
    app.setLocked(jsonObject.getBoolean(JsonKeys.APP_LOCKED, false));
    return app;//from  w w w.  j av  a  2  s. c o  m
}

From source file:io.flowly.engine.data.manager.FlowInstanceReadManager.java

License:Open Source License

public Handler<Message<Object>> getInboxHandler() {
    return message -> {
        JsonObject args = (JsonObject) message.body();
        // TODO: Configure default values.
        message.reply(getInbox(args.getString(JsonKeys.SUBJECT_ID), args.getInteger(JsonKeys.PAGE_NUMBER, 1),
                args.getInteger(JsonKeys.PAGE_SIZE, 50)));
    };//from ww w .  j  a  v  a 2 s .co  m
}

From source file:io.flowly.engine.data.manager.FlowlyGraph.java

License:Open Source License

public FlowlyGraph(JsonObject config) {
    TitanFactory.Builder titanConfig = TitanFactory.build();
    titanConfig.set(JsonKeys.DB_STORAGE_BACKEND, "berkeleyje");
    titanConfig.set(JsonKeys.DB_STORAGE_DIRECTORY, config.getString(JsonKeys.DB_STORAGE_DIRECTORY));

    graph = titanConfig.open();/*from  w  ww  .j  a  v a  2  s . c  om*/
    configureSchema(graph);
}

From source file:io.flowly.engine.data.manager.UserManager.java

License:Open Source License

public Handler<Message<Object>> assignTaskHandler() {
    return message -> {
        JsonObject args = (JsonObject) message.body();
        message.reply(assignTask(args.getString(JsonKeys.SUBJECT_ID), args.getLong(JsonKeys.TASK_ID)));
    };//from www .  j  av a 2s .c  o  m
}

From source file:io.flowly.engine.data.manager.UserManager.java

License:Open Source License

public Handler<Message<Object>> updateTaskHandler() {
    return message -> {
        JsonObject args = (JsonObject) message.body();
        message.reply(updateTask(null, args.getLong(JsonKeys.TASK_ID), args.getString(JsonKeys.STATUS)));
    };//from   w  w w . j  av a  2 s .com
}

From source file:io.flowly.engine.verticles.services.Email.java

License:Open Source License

private void registerEmailHandler() {
    vertx.eventBus().consumer(EngineAddresses.SEND_EMAIL, request -> {
        JsonObject mail = (JsonObject) request.body();
        MailMessage email = new MailMessage();

        try {//from w  w w . ja v  a  2 s  . co  m
            // TODO: Should "from" variable be configured per app or per call?
            email.setFrom("test@flowly.io");

            // TODO: Test multiple send to issue.
            // If emailTo is a string, create an array.
            Object emailTo = mail.getValue(JsonKeys.EMAIL_TO);

            if (emailTo instanceof String) {
                email.setTo((String) emailTo);
            } else {
                email.setTo(mail.getJsonArray(JsonKeys.EMAIL_TO).getList());
            }

            email.setSubject(mail.getString(JsonKeys.EMAIL_SUBJECT));
            email.setHtml(mail.getString(JsonKeys.EMAIL_BODY));

            mailClient.sendMail(email, result -> {
                if (result.succeeded()) {
                    if (logger.isInfoEnabled()) {
                        logger.info("Email: " + email.getSubject() + ", sent to: " + email.getTo());
                    }

                    JsonObject message = new JsonObject();
                    message.put(JsonKeys.RESULT, true);
                    request.reply(message);
                } else {
                    Failure failure = new Failure(6000, "Failed to send email.", result.cause());
                    logger.error(failure.getError(), failure.getCause());
                    request.fail(failure.getCode(), failure.getMessage());
                }
            });
        } catch (Exception ex) {
            Failure failure = new Failure(6001, "Unable to parse email message.", ex);
            logger.error(failure.getError(), failure.getCause());
            request.fail(failure.getCode(), failure.getMessage());
        }
    });
}