private static boolean needsToSignIn() { Map<String, CredentialedUser> users = Services.getLoginService().getAllUsers(); return users == null || users.isEmpty(); }
@Override public void actionPerformed(ActionEvent event) { Services.getLoginService().logIn(); } });
@Override public void actionPerformed(ActionEvent e) { Services.getLoginService().logIn(); } }
@Override public void actionPerformed(ActionEvent event) { Services.getLoginService().logOut(true); } });
private static boolean needsToSignIn() { Map<String, CredentialedUser> users = Services.getLoginService().getAllUsers(); return users.isEmpty(); }
protected void doLogin() { Services.getLoginService().logIn(); }
@Override protected void doLogin() { Services.getLoginService() .logIn( null, new IGoogleLoginCompletedCallback() { @Override public void onLoginCompleted() { SwingUtilities.invokeLater( new Runnable() { @SuppressWarnings("ConstantConditions") // This suppresses a nullref warning for // GoogleLogin.getInstance().getActiveUser(). @Override public void run() { if (Services.getLoginService().getActiveUser() != null) { UserSelector.this.setText( Services.getLoginService().getActiveUser().getEmail()); } } }); } }); }
@Override public Optional<Path> stageCredentials(String googleUserName) { if (Services.getLoginService().ensureLoggedIn(googleUserName)) { return doStageCredentials(googleUserName); } return Optional.empty(); }
@Nullable private static CredentialedUser getUserFromEmail(@Nullable String email) { if (Strings.isNullOrEmpty(email)) { return null; } for (CredentialedUser user : Services.getLoginService().getAllUsers().values()) { if (email != null && email.equalsIgnoreCase(user.getEmail())) { return user; } } return null; }
@VisibleForTesting void setSelectedProject(CloudProject cloudProject) { if (cloudProject != null && !Strings.isNullOrEmpty(cloudProject.googleUsername())) { Optional<CredentialedUser> loggedInUser = Services.getLoginService().getLoggedInUser(cloudProject.googleUsername()); if (loggedInUser.isPresent()) { selectedProjectsByAccount.put(loggedInUser.get(), cloudProject.projectName()); accountComboBox.setSelectedItem(loggedInUser.get()); } } else { // no project set, show active user projects by default. accountComboBox.setSelectedItem(Services.getLoginService().getActiveUser()); } }
private static String getCustomUserKey(String key) { CredentialedUser activeUser = Services.getLoginService().getActiveUser(); if (activeUser == null) { return key; } return key + "_" + activeUser.getEmail(); }
@VisibleForTesting void loadAllProjects() { Collection<CredentialedUser> credentialedUsers = Services.getLoginService().getAllUsers().values(); if (credentialedUsers.isEmpty()) { showSignInRequest(); } else { hideSignInRequest(); cachedProjectList.clear(); accountComboBox.removeAllItems(); for (CredentialedUser user : credentialedUsers) { accountComboBox.addItem(user); loadProjectList(user); } } }
@Override public void connect(@NotNull ConnectionCallback<AppEngineDeploymentConfiguration> callback) { Services.getLoginService().logInIfNot(); if (!Services.getLoginService().isLoggedIn()) { callback.errorOccurred( AppEngineMessageBundle.message("appengine.deployment.error.not.logged.in")); return; } callback.connected(new AppEngineRuntimeInstance()); } }
private void loadRepositories(@Nullable Runnable onComplete) { if (cloudProject == null) { return; } Optional<CredentialedUser> user = Services.getLoginService().getLoggedInUser(cloudProject.googleUsername()); if (!user.isPresent()) { return; } if (repositories == null) { repositories = new ProjectRepositoriesModelItem(); } repositories.loadRepositories(cloudProject.projectId(), user.get(), onComplete); }
private Optional<Path> doStageCredentials(String googleUsername) { Optional<CredentialedUser> projectUser = Services.getLoginService().getLoggedInUser(googleUsername); GoogleLoginState googleLoginState; if (projectUser.isPresent()) { googleLoginState = projectUser.get().getGoogleLoginState(); } else { return Optional.empty(); } String clientId = googleLoginState.fetchOAuth2ClientId(); String clientSecret = googleLoginState.fetchOAuth2ClientSecret(); String refreshToken = googleLoginState.fetchOAuth2RefreshToken(); Map<String, String> credentialMap = ImmutableMap.of( CLIENT_ID_LABEL, clientId, CLIENT_SECRET_LABEL, clientSecret, REFRESH_TOKEN_LABEL, refreshToken, GCLOUD_USER_TYPE_LABEL, GCLOUD_USER_TYPE); String jsonCredential = new Gson().toJson(credentialMap); try { credentialsPath = FileUtil.createTempFile( "tmp_google_application_default_credential", "json", true /* deleteOnExit */) .toPath(); Files.write(credentialsPath, jsonCredential.getBytes(Charsets.UTF_8)); return Optional.of(credentialsPath); } catch (IOException ex) { throw new RuntimeException(ex); } }
/** * Retrieves the persistently stored {@link OAuthData} object for the active user, if any. * * @return the persistently stored {@code OAuthData} object for the active user if it exists or an * {@code OAuthData} object all of whose getters return {@code null} . */ public static OAuthData loadOAuthData() { String refreshToken = null; String storedEmail = null; SortedSet<String> storedScopes = new TreeSet<String>(); if (Services.getLoginService().getActiveUser() != null) { Preferences prefs = getPrefs(); refreshToken = prefs.get(getCustomUserKey(OAUTH_DATA_REFRESH_TOKEN_KEY), null); storedEmail = prefs.get(getCustomUserKey(OAUTH_DATA_EMAIL_KEY), null); String storedScopesString = prefs.get(getCustomUserKey(OAUTH_SCOPES_KEY), ""); // Use a set to ensure uniqueness. for (String scope : Splitter.on(DELIMITER).split(storedScopesString)) { storedScopes.add(scope); } } return new OAuthData(null, refreshToken, storedEmail, storedScopes, 0); }
private void mockLoggedInUser() { when(Services.getLoginService().isLoggedIn()).thenReturn(true); }
private void mockLoggedOutUser() { when(Services.getLoginService().isLoggedIn()).thenReturn(false); }
/** * Loads active {@link CloudProject}, if IDE {@link Project} has been specified. This should be * called when project selector and the related UI are completely initialized. Calls listeners to * notify on new project selection. */ public void loadActiveCloudProject() { Optional<CloudProject> projectOptional = Optional.ofNullable(ideProject) .map(p -> ActiveCloudProjectManager.getInstance().getActiveCloudProject(p)); projectOptional.ifPresent( activeCloudProject -> { // do not preset and notify on active project if not signed in to avoid misleading client // code to assume project selection is made with an active account. if (Services.getLoginService().isLoggedIn()) { setSelectedProject(activeCloudProject); notifyProjectSelectionListeners(); } }); }
@Nullable private Debugger getCloudDebuggerClient() { CloudProject cloudProject = projectSelector.getSelectedProject(); CredentialedUser credentialedUser = cloudProject == null ? null : Services.getLoginService() .getLoggedInUser(cloudProject.googleUsername()) .orElse(null); if (this.credentialedUser == credentialedUser) { return cloudDebuggerClient; } this.credentialedUser = credentialedUser; cloudDebuggerClient = this.credentialedUser != null ? CloudDebuggerClient.getLongTimeoutClient(this.credentialedUser.getEmail()) : null; return cloudDebuggerClient; }