List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key)
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()); } }); }