/** * 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; }
@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]; }
/** * 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; }
@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); } }
/** 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; } }