/*
         * (non-Javadoc)
         *
         * @see
         * com.vaadin.server.DefaultUIProvider#getUIClass(com.vaadin.server.
         * UIClassSelectionEvent)
         */
        @Override
        public Class<? extends UI> getUIClass(UIClassSelectionEvent event) {

          VaadinRequest request = event.getRequest();

          String url = parseUIMapping(request);
          // If url is login, return LoginUI class
          if (url.contains("login")) {
            return LoginUI.class;
          }

          // If url is an empty url then return Secure if user is an
          // authenticated else return login UI
          if (url.isEmpty()) {
            Principal principal = request.getUserPrincipal();
            if (null == principal) {

              return LoginUI.class;
            }
            return SecureUI.class;
          }
          // Return the secured UI
          if (url.contains("secured")) {
            return SecureUI.class;
          }

          return null;
        }
Ejemplo n.º 2
0
  @Override
  protected void init(VaadinRequest request) {
    // setContent(new But-ton("Click me", e -> Notification.show("Hello
    // Spring+Vaadin user!")));

    System.out.println(request);
    String page = request.getParameter("page");
    String size = request.getParameter("size");
    Map<String, String[]> m = request.getParameterMap();
    for (Map.Entry<String, String[]> e : m.entrySet()) {
      System.out.println(e.getKey());
      for (String s : e.getValue()) {
        System.out.println(s);
      }
    }

    VerticalLayout actions = new VerticalLayout(addNewBtn, grid);
    HorizontalLayout mainLayout = new HorizontalLayout(actions, editor);

    // actions.setSpacing(true);
    mainLayout.setMargin(true);
    mainLayout.setSpacing(true);

    setContent(mainLayout);

    // setContent(grid);

    // Connect selected Customer to editor or hide if none is selected
    grid.addSelectionListener(
        e -> {
          if (e.getSelected().isEmpty()) {
            editor.setVisible(false);
          } else {
            editor.editTask((Task) e.getSelected().iterator().next());
          }
        });

    // Instantiate and edit new Customer the new button is clicked
    addNewBtn.addClickListener(e -> editor.editTask(new Task()));

    // Listen changes made by the editor, refresh data from backend
    editor.setChangeHandler(
        () -> {
          editor.setVisible(false);
          listTasks();
        });

    // Initialize listing
    listTasks();
  }
Ejemplo n.º 3
0
 private void addDetail(String name, String param, Object value) {
   Label requestLabel = new Label(r.getParameter(param));
   requestLabel.setId(param);
   Label browserLabel = new Label("" + value);
   browserLabel.setId(name);
   l.addComponents(new Label(name), requestLabel, browserLabel);
 }
Ejemplo n.º 4
0
  boolean isRoot(VaadinRequest request) {
    String pathInfo = request.getPathInfo();

    if (pathInfo == null) {
      return false;
    }

    return pathInfo.equals("/");
  }
Ejemplo n.º 5
0
  @SuppressWarnings("deprecation")
  private void prepAttach() {
    when(request.getParameter("v-loc")).thenReturn(baseUri + "/#home");
    ui.getPage().init(request);
    when(session.createConnectorId(Matchers.any(ClientConnector.class)))
        .thenAnswer(new ConnectorIdAnswer());
    when(session.getLocale()).thenReturn(Locale.FRANCE);

    when(session.hasLock()).thenReturn(true);
    ui.setSession(session);
  }
Ejemplo n.º 6
0
  @SuppressWarnings("serial")
  @Override
  public void init(VaadinRequest request) {
    GridLayout layout = new GridLayout();
    layout.setSizeFull();
    layout.setMargin(true);
    setContent(layout);

    handleURLParams(request.getParameterMap());

    initContent();
  }
Ejemplo n.º 7
0
  protected String getUIBeanName(VaadinRequest request) {
    String vaadinBeanName = "UI";

    Object uiBeanName =
        request
            .getService()
            .getDeploymentConfiguration()
            .getApplicationOrSystemProperty(BEAN_NAME_PARAMETER, null);
    if (uiBeanName != null && uiBeanName instanceof String) {
      vaadinBeanName = uiBeanName.toString();
    }

    return vaadinBeanName;
  }
  @Override
  protected void init(VaadinRequest request) {
    final PortletPreferences portletPrefs =
        ((PortletRequest) request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST))
            .getPreferences();

    VerticalLayout editLayout = new VerticalLayout();
    editLayout.setMargin(true);
    editLayout.setSpacing(true);

    OptionGroup langSelect = new OptionGroup("Choose application language");
    langSelect.setMultiSelect(false);
    langSelect.addItem(LanguageConst.getLocaleStrFromLocale(LanguageConst.LOCALE_FI));
    langSelect.addItem(LanguageConst.getLocaleStrFromLocale(LanguageConst.LOCALE_EN));
    editLayout.addComponent(langSelect);

    String localeStr = portletPrefs.getValue(TupaConst.PORTLET_PREFERENCE_KEY_LANGUAGE, null);
    if (localeStr != null) {
      langSelect.setValue(localeStr);
    }

    Button storeBtn = VaadinTools.createButton("Save", FontAwesome.SAVE, null, null);
    storeBtn.addClickListener(
        e -> {
          if (langSelect.getValue() == null) {
            VaadinTools.showWarning("Please select language", null);
          } else {
            try {
              portletPrefs.setValue(
                  TupaConst.PORTLET_PREFERENCE_KEY_LANGUAGE, langSelect.getValue().toString());
              portletPrefs.store();
              VaadinTools.showNotification("Language selection saved!", null);
            } catch (Exception e1) {
              VaadinTools.showError(
                  "Something went wrong when saving the language preference", null);
              e1.printStackTrace();
            }
          }
        });
    editLayout.addComponent(storeBtn);
    setContent(editLayout);
  }
Ejemplo n.º 9
0
  /**
   * Internal initialization method, should not be overridden. This method is not declared as final
   * because that would break compatibility with e.g. CDI.
   *
   * @param request the initialization request
   * @param uiId the id of the new ui
   */
  public void doInit(VaadinRequest request, int uiId) {
    if (this.uiId != -1) {
      throw new IllegalStateException("UI id has already been defined");
    }
    this.uiId = uiId;

    // Actual theme - used for finding CustomLayout templates
    theme = request.getParameter("theme");

    getPage().init(request);

    // Call the init overridden by the application developer
    init(request);

    Navigator navigator = getNavigator();
    if (navigator != null) {
      // Kickstart navigation if a navigator was attached in init()
      navigator.navigateTo(navigator.getState());
    }
  }
Ejemplo n.º 10
0
 @Override
 protected void init(VaadinRequest request) {
   // TODO: remove test-entry into contet
   context.put(CONTEXT_LOGIN_USER, "sebastian");
   // create
   NavigationManager m = new NavigationManager();
   m.setMaintainBreadcrumb(true);
   TimesheetChangePresenter pres =
       obtainPresenterFactory(request.getContextPath()).createTimesheetChangePresenter(null);
   // Load the july timesheet into the presenter
   CouchDbTimesheetService tsService = new CouchDbTimesheetService();
   List<Timesheet> tsList = tsService.listAllTimesheet(new HashMap<String, Object>(context));
   for (Timesheet ts : tsList) {
     if (ts.getMonth() == 7 && ts.getYear() == 2014) {
       pres.setTimesheet(ts);
       break;
     }
   }
   // TODO: have list presenter before (instead of one)
   m.setCurrentComponent((Component) pres.getView().getComponent());
   setContent(m);
   // and go
   pres.startPresenting();
 }
Ejemplo n.º 11
0
 String parseUIMapping(VaadinRequest request) {
   return parseUIMapping(request.getPathInfo());
 }
 private Cookie createLanguageCookie(VaadinRequest request) {
   Cookie langCookie =
       new Cookie(VWebCommonConstants.USER_LANGUAGE_APPCOOKIE, request.getLocale().toString());
   langCookie.setPath(request.getContextPath());
   return langCookie;
 }
  @Override
  public boolean handleRequest(
      VaadinSession session, VaadinRequest request, VaadinResponse response) throws IOException {

    if (data.isCallbackForMe(request)) {

      String verifier = request.getParameter(data.getVerifierParameterName());
      if (verifier != null) {
        // Got verifier!
        data.setVerifier(requestToken, new Verifier(verifier));
        finish(session, response);

        Token t = data.getAccessToken();

        OAuthRequest r = new OAuthRequest(Verb.GET, data.getRequestLink());
        data.signRequest(t, r);
        Response resp = r.send();

        FacebookAnswer answer = new Gson().fromJson(resp.getBody(), FacebookAnswer.class);

        String name = answer.name;
        String picUrl = answer.picture.data.url;
        String oauthId = "facebook" + answer.id;
        saveUser(oauthId, name, "", picUrl);

        VaadinSession.getCurrent().removeRequestHandler(this);
        ((VaadinServletResponse) response)
            .getHttpServletResponse()
            .sendRedirect(data.getRedirectUrl());

        return true;
      }

      // No verifier in the parameters. That's most likely because the user
      // denied the OAuth.

      // TODO: current error message reporting (below) is not very useful

      String error = null;
      for (String errorName : data.getErrorParameterNames()) {
        error = request.getParameter(errorName);
        if (error != null) {
          break;
        }
      }

      String errorMessage;
      if (error == null) {
        errorMessage = "OAuth failed.";
      } else {
        errorMessage = "OAuth denied: " + error;
      }

      data.setDenied(errorMessage);
      finish(session, response);
    } else if (request.getParameter("code") != null) {
      String code = request.getParameter("code");
      Verifier v = new Verifier(code);
      Token t = googleService.getAccessToken(null, v);

      OAuthRequest r = new OAuthRequest(Verb.GET, "https://www.googleapis.com/plus/v1/people/me");
      googleService.signRequest(t, r);
      Response resp = r.send();

      GooglePlusAnswer answer = new Gson().fromJson(resp.getBody(), GooglePlusAnswer.class);

      String name =
          (answer.displayName != null && !answer.displayName.equals(""))
              ? answer.displayName
              : answer.emails[0].value.substring(0, answer.emails[0].value.indexOf("@"));
      String picUrl = answer.image.url;
      String oauthId = "google" + answer.id;
      saveUser(oauthId, name, answer.emails[0].value, picUrl);

      VaadinSession.getCurrent().removeRequestHandler(this);
      ((VaadinServletResponse) response)
          .getHttpServletResponse()
          .sendRedirect(data.getRedirectUrl());
      return true;
    }
    return false;
  }
  @Override
  public void doRegistration(VaadinRequest request) throws UnauthorizedAccessAttemptException {
    String clientId =
        DataManagerSettings.getSingleton().getStringProperty(B2ACCESS_CLIENT_ID_PROPERTY, null);
    String clientSecret =
        DataManagerSettings.getSingleton().getStringProperty(B2ACCESS_CLIENT_SECRET_PROPERTY, null);

    UserData result = new UserData();
    if (request == null) {
      VaadinSession.getCurrent().setAttribute("registration_pending", getLoginIdentifier());
      Page.getCurrent()
          .setLocation(
              "https://unity.eudat-aai.fz-juelich.de:8443/oauth2-as/oauth2-authz?client_id="
                  + clientId
                  + "&response_type=code&scope=write&redirect_uri="
                  + UIHelper.getWebAppUrl().toString());
    } else {
      // delete auth_pending attribute as we'll finish now or never
      VaadinSession.getCurrent().setAttribute("registration_pending", null);
      // obtain remaining information and do redirect
      // do actual login
      LOGGER.debug("Obtaining OAuth2 code from URL parameter.");
      String code = request.getParameter("code");

      MultivaluedMap formData = new MultivaluedMapImpl();
      formData.putSingle("client_id", clientId);
      formData.putSingle("client_secret", clientSecret);
      formData.putSingle("grant_type", "authorization_code");
      formData.putSingle("redirect_uri", UIHelper.getWebAppUrl().toString());
      formData.putSingle("code", code);

      ClientConfig config = new DefaultClientConfig();
      IMetaDataManager mdm = MetaDataManagement.getMetaDataManagement().getMetaDataManager();
      mdm.setAuthorizationContext(AuthorizationContext.factorySystemContext());
      try {
        SSLContext ctx = SSLContext.getInstance("TLS");
        ctx.init(null, new TrustManager[] {TRUST_MANAGER}, new SecureRandom());
        config
            .getProperties()
            .put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(VERIFIER, ctx));
        Client client = Client.create(config);
        WebResource webResource =
            client.resource("https://unity.eudat-aai.fz-juelich.de:8443/oauth2/token");
        webResource.addFilter(new HTTPBasicAuthFilter("KITDM", "0kudH2O."));

        LOGGER.debug("Obtaining access token.");
        ClientResponse response =
            webResource
                .header("Content-Type", "application/x-www-form-urlencoded")
                .accept(MediaType.APPLICATION_JSON)
                .post(ClientResponse.class, formData);

        if (response.getStatus() == 200) {
          String responseData = response.getEntity(String.class);
          JSONObject responseObject = new JSONObject(responseData);
          String access_token = responseObject.getString("access_token");
          webResource =
              client.resource("https://unity.eudat-aai.fz-juelich.de:8443/oauth2/userinfo");

          LOGGER.debug("Accessing B2Access UserInfo at {}." + webResource.getURI());
          response =
              webResource
                  .header("Content-Type", "application/x-www-form-urlencoded")
                  .accept(MediaType.APPLICATION_JSON)
                  .header("Authorization", "Bearer " + access_token)
                  .get(ClientResponse.class);

          if (response.getStatus() == 200) {
            JSONObject userInfoResponse = new JSONObject(response.getEntity(String.class));
            try {
              String userId = userInfoResponse.getString("sub");
              List<UserData> existingUsers =
                  mdm.findResultList(
                      "Select u FROM UserData u WHERE u.distinguishedName=?1",
                      new Object[] {userId},
                      UserData.class);
              if (!existingUsers.isEmpty()) {
                // user for B2Access subject already exists...unable to continue
                throw new UnauthorizedAccessAttemptException(
                    "There is already a user registered for the obtained B2Access id '"
                        + userId
                        + "'.");
              }
              result.setDistinguishedName(userId);
            } catch (JSONException ex) {
              // failed, not enough information to proceed!
            }
          } else {
            // failed, not enough information to proceed!
          }
        } else {
          // failed, not enough information to proceed!
        }
      } catch (NoSuchAlgorithmException | KeyManagementException | JSONException ex) {
        LOGGER.error("Failed to collect information from B2Access service.", ex);
        throw new UnauthorizedAccessAttemptException(
            "Failed to collect information from B2Access service.", ex);
      } finally {
        mdm.close();
      }
      setup(AUTH_MODE.REGISTRATION, result);
    }
  }
  @Override
  public void doLogin(VaadinRequest request) throws UnauthorizedAccessAttemptException {
    String clientId =
        DataManagerSettings.getSingleton().getStringProperty(B2ACCESS_CLIENT_ID_PROPERTY, null);
    String clientSecret =
        DataManagerSettings.getSingleton().getStringProperty(B2ACCESS_CLIENT_SECRET_PROPERTY, null);

    if (request == null) {
      // set auth_pending attribute in order to be able to finish authentication later
      VaadinSession.getCurrent().setAttribute("auth_pending", getLoginIdentifier());
      Page.getCurrent()
          .setLocation(
              "https://unity.eudat-aai.fz-juelich.de:8443/oauth2-as/oauth2-authz?client_id="
                  + clientId
                  + "&response_type=code&scope=/authenticate&redirect_uri="
                  + UIHelper.getWebAppUrl().toString());
    } else {
      // delete auth_pending attribute as we'll finish now or never
      VaadinSession.getCurrent().setAttribute("auth_pending", null);
      // obtain remaining information and do redirect
      // do actual login
      LOGGER.debug("Obtaining OAuth2 code from URL parameter.");
      String code = request.getParameter("code");

      MultivaluedMap formData = new MultivaluedMapImpl();
      formData.putSingle("client_id", clientId);
      formData.putSingle("client_secret", clientSecret);
      formData.putSingle("grant_type", "authorization_code");
      formData.putSingle("redirect_uri", UIHelper.getWebAppUrl().toString());
      formData.putSingle("code", code);

      ClientConfig config = new DefaultClientConfig();
      IMetaDataManager mdm = MetaDataManagement.getMetaDataManagement().getMetaDataManager();
      mdm.setAuthorizationContext(AuthorizationContext.factorySystemContext());
      try {
        SSLContext ctx = SSLContext.getInstance("TLS");
        ctx.init(null, new TrustManager[] {TRUST_MANAGER}, new SecureRandom());

        config
            .getProperties()
            .put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(VERIFIER, ctx));
        Client client = Client.create(config);
        WebResource webResource =
            client.resource("https://unity.eudat-aai.fz-juelich.de:8443/oauth2/token");
        webResource.addFilter(new HTTPBasicAuthFilter("KITDM", "0kudH2O."));

        LOGGER.debug("Obtaining access token.");
        ClientResponse response =
            webResource
                .header("Content-Type", "application/x-www-form-urlencoded")
                .accept(MediaType.APPLICATION_JSON)
                .post(ClientResponse.class, formData);

        if (response.getStatus() == 200) {
          LOGGER.debug("Response status is HTTP 200. Parsing JSON response.");
          String responseData = response.getEntity(String.class);
          JSONObject responseObject = new JSONObject(responseData);
          String access_token = responseObject.getString("access_token");
          webResource =
              client.resource("https://unity.eudat-aai.fz-juelich.de:8443/oauth2/userinfo");
          LOGGER.debug("Accessing B2Access UserInfo at {}." + webResource.getURI());
          response =
              webResource
                  .header("Content-Type", "application/x-www-form-urlencoded")
                  .accept(MediaType.APPLICATION_JSON)
                  .header("Authorization", "Bearer " + access_token)
                  .get(ClientResponse.class);

          if (response.getStatus() == 200) {
            JSONObject userInfoResponse = new JSONObject(response.getEntity(String.class));
            String userId = userInfoResponse.getString("sub");
            UserData result =
                mdm.findSingleResult(
                    "Select u FROM UserData u WHERE u.distinguishedName=?1",
                    new Object[] {userId},
                    UserData.class);
            if (result != null) {
              LOGGER.debug(
                  "User with distinguished name {} found. Logging in and redirecting user.",
                  userId);
              UIHelper.login(
                  new UserId(result.getDistinguishedName()), new GroupId(Constants.USERS_GROUP_ID));
            } else {
              LOGGER.warn("No user found for ORCiD {}. Login denied.", userId);
              throw new UnauthorizedAccessAttemptException(
                  "No user found for ORCiD '" + userId + "'.");
            }
          } else {
            // failed, not enough information to proceed!
          }
        } else {
          throw new HttpException(
              "Failed to obtain access token from ORCiD service. Status is "
                  + response.getStatus()
                  + ", response data is: "
                  + response.getEntity(String.class));
        }

        // {"access_token":"84e8f8d0-1df6-43af-9456-6619ef514aed","token_type":"bearer","refresh_token":"2f5116b4-f046-4f69-99c5-097e6066a132","expires_in":631138518,"scope":"/authenticate","name":"Thomas Jejkal","orcid":"0000-0003-2804-688X"}
        // https://pub.orcid.org/v1.2/0000-0003-2804-688X/orcid-bio
      } catch (NoSuchAlgorithmException | KeyManagementException | HttpException ex) {
        LOGGER.error("Failed to access B2Access service.", ex);
        throw new UnauthorizedAccessAttemptException("Failed to login via B2Access.", ex);
      } finally {
        mdm.close();
      }

      String fromPage = (String) VaadinSession.getCurrent().getAttribute("from");
      if (fromPage != null) {
        VaadinSession.getCurrent().setAttribute("from", null);
        Page.getCurrent().setLocation(fromPage);
      } else {
        Page.getCurrent().setLocation(UIHelper.getWebAppUrl().toString());
      }
    }
  }