コード例 #1
0
ファイル: LoginService.java プロジェクト: eclipse/egit
 /**
  * The method shows a change credentials dialog for a given URI. The user field is taken from the
  * URI if a user is present in the URI. In this case the user is not editable.
  *
  * @param parent
  * @param uri
  * @return credentials, <code>null</code> if the user canceled the dialog.
  */
 public static UserPasswordCredentials changeCredentials(Shell parent, URIish uri) {
   LoginDialog dialog = new LoginDialog(parent, uri);
   dialog.setChangeCredentials(true);
   UserPasswordCredentials oldCredentials = SecureStoreUtils.getCredentials(uri);
   if (oldCredentials != null) dialog.setOldUser(oldCredentials.getUser());
   if (dialog.open() == Window.OK) {
     UserPasswordCredentials credentials = dialog.getCredentials();
     if (credentials != null) SecureStoreUtils.storeCredentials(credentials, uri);
     return credentials;
   }
   return null;
 }
コード例 #2
0
  @Override
  public boolean get(final URIish uri, final CredentialItem... items)
      throws UnsupportedCredentialItem {

    if (items.length == 0) {
      return true;
    }

    CredentialItem.Username userItem = null;
    CredentialItem.Password passwordItem = null;
    boolean isSpecial = false;

    for (CredentialItem item : items) {
      if (item instanceof CredentialItem.Username) userItem = (CredentialItem.Username) item;
      else if (item instanceof CredentialItem.Password)
        passwordItem = (CredentialItem.Password) item;
      else isSpecial = true;
    }

    if (!isSpecial && (userItem != null || passwordItem != null)) {
      UserPasswordCredentials credentials = null;
      if ((user != null) && (password != null))
        credentials = new UserPasswordCredentials(user, password);
      else credentials = SecureStoreUtils.getCredentialsQuietly(uri);

      if (credentials == null) {
        credentials = getCredentialsFromUser(uri);
        if (credentials == null) return false;
      }
      if (userItem != null) userItem.setValue(credentials.getUser());
      if (passwordItem != null) passwordItem.setValue(credentials.getPassword().toCharArray());
      return true;
    }

    // special handling for non-user,non-password type items
    final boolean[] result = new boolean[1];

    PlatformUI.getWorkbench()
        .getDisplay()
        .syncExec(
            new Runnable() {
              @Override
              public void run() {
                Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();

                if (items.length == 1) {
                  CredentialItem item = items[0];
                  result[0] = getSingleSpecial(shell, uri, item);
                } else {
                  result[0] = getMultiSpecial(shell, uri, items);
                }
              }
            });

    return result[0];
  }
コード例 #3
0
ファイル: LoginService.java プロジェクト: eclipse/egit
 /**
  * The method shows a login dialog for a given URI. The user field is taken from the URI if a user
  * is present in the URI. In this case the user is not editable.
  *
  * @param parent
  * @param uri
  * @return credentials, <code>null</code> if the user canceled the dialog.
  */
 public static UserPasswordCredentials login(Shell parent, URIish uri) {
   LoginDialog dialog = new LoginDialog(parent, uri);
   if (dialog.open() == Window.OK) {
     UserPasswordCredentials credentials = dialog.getCredentials();
     if (credentials != null && dialog.getStoreInSecureStore())
       SecureStoreUtils.storeCredentials(credentials, uri);
     return credentials;
   }
   return null;
 }
コード例 #4
0
ファイル: GitCloneWizard.java プロジェクト: abhishekbh/egit
 @Override
 public boolean performFinish() {
   try {
     if (cloneSource.getStoreInSecureStore()) {
       if (!SecureStoreUtils.storeCredentials(
           cloneSource.getCredentials(), cloneSource.getSelection().getURI())) return false;
     }
     return performClone();
   } finally {
     setWindowTitle(UIText.GitCloneWizard_title);
   }
 }
コード例 #5
0
  /** Check the user input and set messages in case of invalid input. */
  protected void checkPage() {
    if (isURISelected()) {
      assert uri != null;
      if (uriText.getText().length() == 0) {
        selectionIncomplete(null);
        return;
      } else if (uriText.getText().endsWith(" ")) { // $NON-NLS-1$
        selectionIncomplete(UIText.RepositorySelectionPage_UriMustNotHaveTrailingSpacesMessage);
        return;
      }

      try {
        final URIish finalURI = new URIish(stripGitCloneCommand(uriText.getText()));
        String proto = finalURI.getScheme();
        if (proto == null && scheme.getSelectionIndex() >= 0)
          proto = scheme.getItem(scheme.getSelectionIndex());

        if (uri.getPath() == null) {
          selectionIncomplete(
              NLS.bind(
                  UIText.RepositorySelectionPage_fieldRequired,
                  unamp(UIText.RepositorySelectionPage_promptPath),
                  proto));
          return;
        }

        if (Protocol.FILE.handles(finalURI)) {
          String badField = null;
          if (uri.getHost() != null) badField = UIText.RepositorySelectionPage_promptHost;
          else if (uri.getUser() != null) badField = UIText.RepositorySelectionPage_promptUser;
          else if (uri.getPass() != null) badField = UIText.RepositorySelectionPage_promptPassword;
          if (badField != null) {
            selectionIncomplete(
                NLS.bind(UIText.RepositorySelectionPage_fieldNotSupported, unamp(badField), proto));
            return;
          }

          final File d = FS.DETECTED.resolve(new File("."), uri.getPath()); // $NON-NLS-1$
          if (!d.exists()) {
            selectionIncomplete(
                NLS.bind(UIText.RepositorySelectionPage_fileNotFound, d.getAbsolutePath()));
            return;
          }

          selectionComplete(finalURI, null);
          return;
        }

        if (uri.getHost() == null) {
          selectionIncomplete(
              NLS.bind(
                  UIText.RepositorySelectionPage_fieldRequired,
                  unamp(UIText.RepositorySelectionPage_promptHost),
                  proto));
          return;
        }

        if (Protocol.GIT.handles(finalURI)) {
          String badField = null;
          if (uri.getUser() != null) badField = UIText.RepositorySelectionPage_promptUser;
          else if (uri.getPass() != null) badField = UIText.RepositorySelectionPage_promptPassword;
          if (badField != null) {
            selectionIncomplete(
                NLS.bind(UIText.RepositorySelectionPage_fieldNotSupported, unamp(badField), proto));
            return;
          }
        }

        if (Protocol.HTTP.handles(finalURI) || Protocol.HTTPS.handles(finalURI)) {
          UserPasswordCredentials credentials = SecureStoreUtils.getCredentials(finalURI);
          if (credentials != null) {
            String u = credentials.getUser();
            String p = credentials.getPassword();
            String uriUser = finalURI.getUser();
            if (uriUser == null) {
              if (setSafeUser(u) && setSafePassword(p)) setStoreInSecureStore(true);
            } else if (uriUser.length() != 0 && uriUser.equals(u)) {
              if (setSafePassword(p)) setStoreInSecureStore(true);
            }
          }
        }

        selectionComplete(finalURI, null);
        return;
      } catch (URISyntaxException e) {
        selectionIncomplete(e.getReason());
        return;
      } catch (Exception e) {
        Activator.logError(
            NLS.bind(UIText.RepositorySelectionPage_errorValidating, getClass().getName()), e);
        selectionIncomplete(UIText.RepositorySelectionPage_internalError);
        return;
      }
    } else {
      assert remoteButton.getSelection();
      selectionComplete(null, remoteConfig);
      return;
    }
  }