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

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

Introduction

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

Prototype

public JsonObject put(String key, Object value) 

Source Link

Document

Put an Object into the JSON object with the specified key.

Usage

From source file:io.fabric8.devops.apps.elasticsearch.helper.service.ElasticSearchOptionsConverter.java

License:Apache License

public static void toJson(ElasticSearchOptions obj, JsonObject json) {
    if (obj.getConfigMap() != null) {
        json.put("configMap", obj.getConfigMap());
    }/*from  www  . jav a2s  .c om*/
    json.put("configMapScanPeriod", obj.getConfigMapScanPeriod());
    if (obj.getHost() != null) {
        json.put("host", obj.getHost());
    }
    if (obj.getIndexes() != null) {
        JsonArray array = new JsonArray();
        obj.getIndexes().forEach(item -> array.add(item));
        json.put("indexes", array);
    }
    if (obj.getKubernetesNamespace() != null) {
        json.put("kubernetesNamespace", obj.getKubernetesNamespace());
    }
    json.put("port", obj.getPort());
    json.put("ssl", obj.isSsl());
}

From source file:io.flowly.auth.ExtJwtAuthProvider.java

License:Open Source License

@Override
public String generateToken(JsonObject claims, final JWTOptions options) {
    final JsonObject jsonOptions = options.toJSON();

    // we do some "enhancement" of the claims to support roles and permissions
    if (jsonOptions.containsKey("permissions") && !claims.containsKey(permissionsClaimKey)) {
        claims.put(permissionsClaimKey, jsonOptions.getJsonArray("permissions"));
    }//from w w  w . j  a va  2  s.  c  om

    return jwt.sign(claims, options.toJSON());
}

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

License:Open Source License

/**
 * Retrieves direct and indirect memberships that a user or group holds.
 *
 * @param vertex vertex in the auth graph representing a user or group.
 * @param jsonObject JSON object representing the user or group to which retrieved memberships are added.
 * @param includeEffectiveMemberships indicates if all the user or group memberships are to be retrieved.
 * @param includeDirectMemberships indicates if the user's direct memberships are to be retrieved.
 * @param includePermissions indicates if the permissions granted to each group are to be retrieved.
 */// www . j  av  a2  s .  c  o  m
protected void getMemberships(Vertex vertex, JsonObject jsonObject, boolean includeEffectiveMemberships,
        boolean includeDirectMemberships, boolean includePermissions) {
    boolean isUserVertex = jsonObject.containsKey(User.USER_ID);
    String uniqueId = isUserVertex ? jsonObject.getString(User.USER_ID) : jsonObject.getString(Group.GROUP_ID);

    if (includeEffectiveMemberships || includePermissions) {
        JsonArray effectiveMemberships = new JsonArray();
        jsonObject.put(User.EFFECTIVE_MEMBERSHIPS, effectiveMemberships);

        List<Vertex> groupVertices = graph.traversal().V(vertex).repeat(__.outE(Schema.E_MEMBER_OF).inV())
                .emit().toList();
        getDistinctMemberships(groupVertices, effectiveMemberships, uniqueId, isUserVertex, includePermissions);
    }

    if (includeDirectMemberships) {
        JsonArray directMemberships = new JsonArray();
        jsonObject.put(User.DIRECT_MEMBERSHIPS, directMemberships);

        getDistinctMemberships(graph.traversal().V(vertex).outE(Schema.E_MEMBER_OF).inV().toList(),
                directMemberships, null, false, false);
    }
}

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

License:Open Source License

/**
 * Get the permissions directly granted on the given user or group vertex.
 *
 * @param vertex represents a user or group vertex in the auth graph.
 * @param jsonObject JSON object representing the user or group.
 *//*from w w w  .j  a va 2 s.  c  om*/
protected void getDirectPermissions(Vertex vertex, JsonObject jsonObject) {
    jsonObject.put(Permission.DIRECT_PERMISSIONS, new JsonArray(graph.traversal().V(vertex)
            .outE(Schema.E_HAS_PERMISSION).map(m -> makePermissionObject(m.get())).toList()));
}

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

License:Open Source License

private void getMembers(Vertex groupVertex, JsonObject group, boolean includeDirectMembers,
        boolean includeEffectiveUsers) {
    if (includeDirectMembers) {
        JsonArray directMembers = new JsonArray();
        group.put(Group.DIRECT_MEMBERS, directMembers);

        graph.traversal().V(groupVertex).outE(Schema.E_MEMBER).inV().sideEffect(m -> {
            Vertex vertex = m.get();//from   w  w  w .j a va 2 s  . co  m
            if (vertex.label().equals(Schema.V_USER)) {
                directMembers.add(makeUserObject(vertex));
            } else {
                directMembers.add(makeGroupObject(vertex, null, false));
            }

        }).toList();
    }

    // Recursively retrieve all unique users.
    if (includeEffectiveUsers) {
        JsonArray allUsers = new JsonArray();
        group.put(Group.ALL_USERS, allUsers);

        getUsers(groupVertex, allUsers, new HashSet<>());
    }
}

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 .j ava 2s.  c o  m*/
 *                 "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

/**
 * Calculate the effective permissions granted to the given user.
 * The effective permission on each resource is the cumulative grants
 * given to the user either directly or indirectly.
 *
 * @param user JSON object representing the user in the auth graph.
 *//* ww w  .ja  v  a  2  s.c  om*/
private void getEffectivePermissions(JsonObject user) {
    JsonArray effectivePermissions = new JsonArray();

    // Holds the resource Ids and their respective permissions that have the cumulative
    // grant value (simple integer - rwx).
    Map<String, JsonObject> definedPermissions = new HashMap<>();

    // Start with direct permissions.
    getEffectivePermissions(user.getJsonArray(Permission.DIRECT_PERMISSIONS), definedPermissions);

    // Check permissions defined on groups.
    JsonArray effectiveMemberships = user.getJsonArray(User.EFFECTIVE_MEMBERSHIPS);

    if (effectiveMemberships != null) {
        for (Object mbr : effectiveMemberships) {
            JsonObject membership = (JsonObject) mbr;

            getEffectivePermissions(membership.getJsonArray(Permission.DIRECT_PERMISSIONS), definedPermissions);
        }
    }

    for (JsonObject permission : definedPermissions.values()) {
        effectivePermissions.add(permission);
    }

    user.put(Permission.EFFECTIVE_PERMISSIONS, effectivePermissions);
}

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 . ja v a2  s  .  com

    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.core.router.BaseRouter.java

License:Open Source License

protected JsonObject getSearchArgs(RoutingContext routingContext) {
    JsonObject args = new JsonObject();
    args.put(ObjectKeys.PAGE_NUMBER,
            Integer.parseInt(routingContext.request().getParam(ObjectKeys.PAGE_NUMBER)));
    args.put(ObjectKeys.PAGE_SIZE, Integer.parseInt(routingContext.request().getParam(ObjectKeys.PAGE_SIZE)));

    return args;//from   w  w w. j a va2 s  . com
}

From source file:io.flowly.engine.App.java

License:Open Source License

public JsonObject toJson() {
    JsonObject jsonObject = new JsonObject();
    jsonObject.put(JsonKeys.APP_ID, getId());
    jsonObject.put(JsonKeys.APPS_DIRECTORY, getAppRootFolder());
    jsonObject.put(JsonKeys.APP_LOCKED, isLocked());

    return jsonObject;
}