List of usage examples for io.vertx.core.http HttpServerRequest setExpectMultipart
@Fluent
HttpServerRequest setExpectMultipart(boolean expect);
From source file:fr.wseduc.rack.controllers.RackController.java
License:Open Source License
/** * Post a new document to other people's rack folder. * @param request Client request containing a list of user ids belonging to the receivers and the file. */// w ww .j av a 2s. c om @Post("") @SecuredAction(send) public void postRack(final HttpServerRequest request) { UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() { @Override public void handle(final UserInfos userInfos) { if (userInfos == null) { badRequest(request); return; } request.setExpectMultipart(true); final Buffer fileBuffer = Buffer.buffer(); final JsonObject metadata = new JsonObject(); /* Upload file */ request.uploadHandler(getUploadHandler(fileBuffer, metadata, request)); /* After upload */ request.endHandler(new Handler<Void>() { @Override public void handle(Void v) { String users = request.formAttributes().get("users"); if (users == null) { badRequest(request); return; } String[] userIds = users.split(","); final AtomicInteger countdown = new AtomicInteger(userIds.length); final AtomicInteger success = new AtomicInteger(0); final AtomicInteger failure = new AtomicInteger(0); /* Final handler - called after each attempt */ final Handler<Boolean> finalHandler = new Handler<Boolean>() { @Override public void handle(Boolean event) { if (event == null || !event) failure.addAndGet(1); else success.addAndGet(1); if (countdown.decrementAndGet() == 0) { JsonObject result = new JsonObject(); result.put("success", success.get()); result.put("failure", failure.get()); renderJson(request, result); } } }; for (final String to : userIds) { /* Query user and check existence */ String query = "MATCH (n:User) " + "WHERE n.id = {id} " + "RETURN count(n) as nb, n.displayName as username"; Map<String, Object> params = new HashMap<>(); params.put("id", to); Handler<Message<JsonObject>> existenceHandler = new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { JsonArray result = res.body().getJsonArray("result"); if (!"ok".equals(res.body().getString("status")) || 1 != result.size() || 1 != result.getJsonObject(0).getInteger("nb")) { finalHandler.handle(false); return; } /* Pre write rack document fields */ final JsonObject doc = new JsonObject(); doc.put("to", to); doc.put("toName", result.getJsonObject(0).getString("username")); doc.put("from", userInfos.getUserId()); doc.put("fromName", userInfos.getUsername()); String now = dateFormat.format(new Date()); doc.put("sent", now); /* Rack collection saving */ final Handler<JsonObject> rackSaveHandler = new Handler<JsonObject>() { @Override public void handle(JsonObject uploaded) { if (uploaded == null || !"ok".equals(uploaded.getString("status"))) { finalHandler.handle(false); } else { addAfterUpload(uploaded.put("metadata", metadata), doc, request.params().get("name"), request.params().get("application"), request.params().getAll("thumbnail"), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { if ("ok".equals(res.body().getString("status"))) { JsonObject params = new JsonObject() .put("uri", "/userbook/annuaire#" + doc.getString("from")) .put("resourceUri", pathPrefix) .put("username", doc.getString("fromName")) .put("documentName", doc.getString("name")); List<String> receivers = new ArrayList<>(); receivers.add(doc.getString("to")); JsonObject pushNotif = new JsonObject() .put("title", "rack.push.notif.rack-post") .put("body", I18n.getInstance().translate( "rack.push.notif.rack-post.body", getHost(request), I18n.acceptLanguage( request), doc.getString( "fromName"), doc.getString("name"))); params.put("pushNotif", pushNotif); timelineHelper.notifyTimeline(request, "rack.rack-post", userInfos, receivers, userInfos.getUserId() + System.currentTimeMillis() + "postrack", null, params, true); finalHandler.handle(true); } else { finalHandler.handle(false); } } }); } } }; /* Get user quota & check */ getUserQuota(to, new Handler<JsonObject>() { @Override public void handle(JsonObject j) { if (j == null || "error".equals(j.getString("status"))) { finalHandler.handle(false); return; } long emptySize = 0l; long quota = j.getLong("quota", 0l); long storage = j.getLong("storage", 0l); emptySize = quota - storage; if (emptySize < metadata.getLong("size", 0l)) { finalHandler.handle(false); return; } //Save file RackController.this.storage.writeBuffer(fileBuffer, metadata.getString("content-type"), metadata.getString("name"), rackSaveHandler); } }); } }; Neo4j.getInstance().execute(query, params, existenceHandler); } } }); } }); }
From source file:io.advantageous.qbit.vertx.http.server.HttpServerVertx.java
License:Apache License
private void handleRequestWithBody(HttpServerRequest request) { final String contentType = request.headers().get("Content-Type"); if (HttpContentTypes.isFormContentType(contentType)) { request.setExpectMultipart(true); }//w w w .j a v a 2 s. c o m final Buffer[] bufferHolder = new Buffer[1]; final HttpRequest bodyHttpRequest = vertxUtils.createRequest(request, () -> bufferHolder[0], new HashMap<>(), simpleHttpServer.getDecorators(), simpleHttpServer.getHttpResponseCreator()); if (simpleHttpServer.getShouldContinueReadingRequestBody().test(bodyHttpRequest)) { request.bodyHandler((buffer) -> { bufferHolder[0] = buffer; simpleHttpServer.handleRequest(bodyHttpRequest); }); } else { logger.info("Request body rejected {} {}", request.method(), request.absoluteURI()); } }
From source file:org.entcore.auth.controllers.AuthController.java
License:Open Source License
@Post("/oauth2/token") public void token(final HttpServerRequest request) { request.setExpectMultipart(true); request.endHandler(new io.vertx.core.Handler<Void>() { @Override/*from w w w .j a v a 2s. co m*/ public void handle(Void v) { Request req = new HttpServerRequestAdapter(request); token.handleRequest(req, new Handler<Response>() { @Override public void handle(Response response) { renderJson(request, new JsonObject(response.getBody()), response.getCode()); } }); } }); }
From source file:org.entcore.auth.controllers.AuthController.java
License:Open Source License
@Post("/login") public void loginSubmit(final HttpServerRequest request) { request.setExpectMultipart(true); request.endHandler(new io.vertx.core.Handler<Void>() { @Override/* w w w.j a va 2s . com*/ public void handle(Void v) { String c = request.formAttributes().get("callBack"); final StringBuilder callBack = new StringBuilder(); if (c != null && !c.trim().isEmpty()) { try { callBack.append(URLDecoder.decode(c, "UTF-8")); } catch (UnsupportedEncodingException ex) { log.error(ex.getMessage(), ex); callBack.append(config.getJsonObject("authenticationServer").getString("loginCallback")); } } else { callBack.append(config.getJsonObject("authenticationServer").getString("loginCallback")); } DataHandler data = oauthDataFactory.create(new HttpServerRequestAdapter(request)); final String login = request.formAttributes().get("email"); final String password = request.formAttributes().get("password"); data.getUserId(login, password, new Handler<String>() { @Override public void handle(final String userId) { final String c = callBack.toString(); if (userId != null && !userId.trim().isEmpty()) { handleGetUserId(login, userId, request, c); } else { // try activation with login userAuthAccount.matchActivationCode(login, password, new io.vertx.core.Handler<Boolean>() { @Override public void handle(Boolean passIsActivationCode) { if (passIsActivationCode) { handleMatchActivationCode(login, password, request); } else { // try activation with loginAlias userAuthAccount.matchActivationCodeByLoginAlias(login, password, new io.vertx.core.Handler<Boolean>() { @Override public void handle(Boolean passIsActivationCode) { if (passIsActivationCode) { handleMatchActivationCode(login, password, request); } else { // try reset with login userAuthAccount.matchResetCode(login, password, new io.vertx.core.Handler<Boolean>() { @Override public void handle( Boolean passIsResetCode) { if (passIsResetCode) { handleMatchResetCode(login, password, request); } else { // try reset with loginAlias userAuthAccount .matchResetCodeByLoginAlias( login, password, new io.vertx.core.Handler<Boolean>() { @Override public void handle( Boolean passIsResetCode) { if (passIsResetCode) { handleMatchResetCode( login, password, request); } else { trace.info( "Erreur de connexion pour l'utilisateur " + login); loginResult( request, "auth.error.authenticationFailed", c); } } }); } } }); } } }); } } }); } } }); } }); }
From source file:org.entcore.auth.controllers.AuthController.java
License:Open Source License
@Post("/activation") public void activeAccountSubmit(final HttpServerRequest request) { request.setExpectMultipart(true); request.endHandler(new io.vertx.core.Handler<Void>() { @Override/*from w w w . j av a 2 s.co m*/ public void handle(Void v) { final String login = request.formAttributes().get("login"); final String activationCode = request.formAttributes().get("activationCode"); final String email = request.formAttributes().get("mail"); final String phone = request.formAttributes().get("phone"); final String theme = request.formAttributes().get("theme"); String password = request.formAttributes().get("password"); String confirmPassword = request.formAttributes().get("confirmPassword"); if (config.getBoolean("cgu", true) && !"true".equals(request.formAttributes().get("acceptCGU"))) { trace.info("Invalid cgu " + login); JsonObject error = new JsonObject().put("error", new JsonObject().put("message", "invalid.cgu")) .put("cgu", true); if (activationCode != null) { error.put("activationCode", activationCode); } if (login != null) { error.put("login", login); } renderJson(request, error); } else if (login == null || activationCode == null || password == null || login.trim().isEmpty() || activationCode.trim().isEmpty() || password.trim().isEmpty() || !password.equals(confirmPassword) || !passwordPattern.matcher(password).matches() || (config.getJsonObject("mandatory", new JsonObject()).getBoolean("mail", false) && (email == null || email.trim().isEmpty() || invalidEmails.containsKey(email))) || (config.getJsonObject("mandatory", new JsonObject()).getBoolean("phone", false) && (phone == null || phone.trim().isEmpty())) || (email != null && !email.trim().isEmpty() && !StringValidation.isEmail(email)) || (phone != null && !phone.trim().isEmpty() && !StringValidation.isPhone(phone))) { trace.info("Echec de l'activation du compte utilisateur " + login); JsonObject error = new JsonObject().put("error", new JsonObject().put("message", I18n.getInstance().translate("auth.activation.invalid.argument", getHost(request), I18n.acceptLanguage(request)))); if (activationCode != null) { error.put("activationCode", activationCode); } if (login != null) { error.put("login", login); } if (config.getBoolean("cgu", true)) { error.put("cgu", true); } renderJson(request, error); } else { userAuthAccount.activateAccount(login, activationCode, password, email, phone, theme, request, new io.vertx.core.Handler<Either<String, String>>() { @Override public void handle(Either<String, String> activated) { if (activated.isRight() && activated.right().getValue() != null) { handleActivation(login, request, activated); } else { // if failed because duplicated user if (activated.isLeft() && "activation.error.duplicated" .equals(activated.left().getValue())) { trace.info("Echec de l'activation : utilisateur " + login + " en doublon."); JsonObject error = new JsonObject().put("error", new JsonObject().put("message", I18n.getInstance().translate( activated.left().getValue(), getHost(request), I18n.acceptLanguage(request)))); error.put("activationCode", activationCode); renderJson(request, error); } else { // else try activation with loginAlias userAuthAccount.activateAccountByLoginAlias(login, activationCode, password, email, phone, theme, request, new io.vertx.core.Handler<Either<String, String>>() { @Override public void handle(Either<String, String> activated) { if (activated.isRight() && activated.right().getValue() != null) { handleActivation(login, request, activated); } else { trace.info( "Echec de l'activation : compte utilisateur " + login + " introuvable ou dj activ."); JsonObject error = new JsonObject().put("error", new JsonObject().put("message", I18n.getInstance().translate( activated.left().getValue(), getHost(request), I18n.acceptLanguage( request)))); error.put("activationCode", activationCode); renderJson(request, error); } } }); } } } }); } } }); }
From source file:org.entcore.auth.controllers.AuthController.java
License:Open Source License
@Post("/reset") public void resetPasswordSubmit(final HttpServerRequest request) { request.setExpectMultipart(true); request.endHandler(new io.vertx.core.Handler<Void>() { @Override//from ww w.j a v a2 s .c om public void handle(Void v) { final String login = request.formAttributes().get("login"); final String resetCode = request.formAttributes().get("resetCode"); final String oldPassword = request.formAttributes().get("oldPassword"); final String password = request.formAttributes().get("password"); String confirmPassword = request.formAttributes().get("confirmPassword"); final String callback = Utils.getOrElse(request.formAttributes().get("callback"), "/auth/login", false); if (login == null || ((resetCode == null || resetCode.trim().isEmpty()) && (oldPassword == null || oldPassword.trim().isEmpty())) || password == null || login.trim().isEmpty() || password.trim().isEmpty() || !password.equals(confirmPassword) || !passwordPattern.matcher(password).matches()) { trace.info( "Erreur lors de la rinitialisation " + "du mot de passe de l'utilisateur " + login); JsonObject error = new JsonObject().put("error", new JsonObject().put("message", I18n.getInstance().translate("auth.reset.invalid.argument", getHost(request), I18n.acceptLanguage(request)))); if (resetCode != null) { error.put("resetCode", resetCode); } renderJson(request, error); } else { final io.vertx.core.Handler<Boolean> resultHandler = new io.vertx.core.Handler<Boolean>() { @Override public void handle(Boolean reseted) { if (Boolean.TRUE.equals(reseted)) { trace.info("Rinitialisation russie du mot de passe de l'utilisateur " + login); redirect(request, callback); } else { trace.info("Erreur lors de la rinitialisation " + "du mot de passe de l'utilisateur " + login); error(request, resetCode); } } }; if (resetCode != null && !resetCode.trim().isEmpty()) { userAuthAccount.resetPassword(login, resetCode, password, resultHandler); } else { DataHandler data = oauthDataFactory.create(new HttpServerRequestAdapter(request)); data.getUserId(login, oldPassword, new Handler<String>() { @Override public void handle(String userId) { if (userId != null && !userId.trim().isEmpty()) { userAuthAccount.changePassword(login, password, resultHandler); } else { error(request, null); } } }); } } } private void error(final HttpServerRequest request, final String resetCode) { JsonObject error = new JsonObject().put("error", new JsonObject().put("message", I18n.getInstance() .translate("reset.error", getHost(request), I18n.acceptLanguage(request)))); if (resetCode != null) { error.put("resetCode", resetCode); } renderJson(request, error); } }); }
From source file:org.entcore.auth.controllers.OpenIdConnectController.java
License:Open Source License
@Post("/openid/mappingUser") public void mappingUser(final HttpServerRequest request) { final OpenIdConnectServiceProvider openIdConnectServiceProvider = openIdConnectServiceProviderFactory .serviceProvider(request);/*from w w w. j a v a 2 s . c o m*/ if (openIdConnectServiceProvider == null) return; if (!subMapping) { forbidden(request, "unauthorized.sub.mapping"); return; } request.setExpectMultipart(true); request.endHandler(new Handler<Void>() { @Override public void handle(Void v) { final String login = request.formAttributes().get("login"); final String password = request.formAttributes().get("password"); final String payload = request.formAttributes().get("payload"); final String key = request.formAttributes().get("key"); try { if (isEmpty(login) || isEmpty(password) || isEmpty(payload) || isEmpty(key) || !key.equals(HmacSha1.sign(payload, signKey))) { badRequest(request, "invalid.attribute"); return; } final JsonObject p = new JsonObject(payload); openIdConnectServiceProvider.mappingUser(login, password, p, new Handler<Either<String, Object>>() { @Override public void handle(Either<String, Object> event) { if (event.isRight()) { authenticate((JsonObject) event.right().getValue(), "_", p.getString("id_token_hint"), request); } else { forbidden(request, "invalid.sub.mapping"); } } }); } catch (Exception e) { log.error("Error mapping OpenId Connect user.", e); badRequest(request, "invalid.attribute"); } } }); }
From source file:org.entcore.auth.controllers.SamlController.java
License:Open Source License
@Post("/saml/post/sso/") public void ssoredirectPost(final HttpServerRequest request) { log.info("ssoredirect POST called"); request.setExpectMultipart(true); request.pause();//from w ww . j a v a 2 s .c om request.endHandler(new Handler<Void>() { @Override public void handle(Void v) { ssoRedirect(request.formAttributes().get("SAMLRequest"), request); } }); request.resume(); }
From source file:org.entcore.auth.controllers.SamlController.java
License:Open Source License
@Post("/saml/selectUser") public void selectUser(final HttpServerRequest request) { request.setExpectMultipart(true); request.endHandler(new Handler<Void>() { @Override//from w w w .j a v a 2 s. c om public void handle(Void v) { final JsonObject j = new JsonObject(); for (String attr : request.formAttributes().names()) { if (isNotEmpty(request.formAttributes().get(attr))) { j.put(attr, request.formAttributes().get(attr)); } } final String nameId = j.getString("nameId", "").replaceAll("\\r", ""); final String sessionIndex = j.getString("sessionIndex"); try { if (j.getString("key", "").equals(HmacSha1 .sign(sessionIndex + nameId + j.getString("login") + j.getString("id"), signKey))) { authenticate(j, sessionIndex, nameId, request); } else { log.error("Invalid signature for federated user."); redirect(request, LOGIN_PAGE); } } catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) { log.error("Error validating signature of federated user.", e); redirect(request, LOGIN_PAGE); } } }); }
From source file:org.entcore.auth.controllers.SamlController.java
License:Open Source License
private void getSamlResponse(final HttpServerRequest request, final Handler<String> handler) { if (log.isDebugEnabled()) { log.debug("getSamlResponse"); }/* w ww . java2 s.co m*/ request.setExpectMultipart(true); request.endHandler(new Handler<Void>() { @Override public void handle(Void v) { if (samlWayfParams != null) { final String state = CookieHelper.getInstance().getSigned("relaystate", request); if (isEmpty(state) || (!state.equals(request.formAttributes().get("RelayState")) && !state.equals(SamlUtils.SIMPLE_RS))) { forbidden(request, "invalid_state"); return; } } String samlResponse = request.formAttributes().get("SAMLResponse"); log.debug("samlResponse=" + samlResponse); if (samlResponse != null && !samlResponse.trim().isEmpty()) { handler.handle(new String(Base64.getDecoder().decode(samlResponse))); } else { badRequest(request); // TODO replace by error page } } }); }