public async Task <bool> TryAutoSignInAsync() { try { ProcessLoginResponse processResponse = null; if (!_settingsManager.AutoSignIn || _settingsManager.Email.IsNullOrWhiteSpace()) { Log.Debug("no AutoSignIn or Email is missing"); return(false); } var token = await _credentialsService.LoadJsonAsync(_settingsManager.ServerUrl.ToUri(), _settingsManager.Email); if (token != null) { Log.Debug("Attempting to AutoSignIn"); try { var teamId = _webviewUserSettingsService?.TryGetTeamId(_sessionService.SolutionName); var loginResponse = await _codeStreamAgent.LoginViaTokenAsync(token, _settingsManager.Team, teamId); processResponse = ProcessLoginError(loginResponse); Log.Debug($"{nameof(processResponse)} Success={processResponse?.Success}"); if (!processResponse.Success) { if (!processResponse.ErrorMessage.IsNullOrWhiteSpace() && Enum.TryParse(processResponse.ErrorMessage, out LoginResult loginResult) && loginResult != LoginResult.VERSION_UNSUPPORTED) { await _credentialsService.DeleteAsync(_settingsManager.ServerUrl.ToUri(), _settingsManager.Email); } return(false); } else { return(true); } } catch (Exception ex) { Log.Warning(ex, $"{nameof(TryAutoSignInAsync)}"); } } else { Log.Debug("Missing token"); } return(false); } catch (Exception ex) { Log.Error(ex, nameof(TryAutoSignInAsync)); } return(false); }
private ProcessLoginResponse ProcessLoginError(JToken loginResponse) { var response = new ProcessLoginResponse(); var error = GetError(loginResponse); if (error != null) { response.ErrorMessage = error?.Value <string>(); } else if (loginResponse != null) { response.Success = true; } return(response); }
private ProcessLoginResponse ProcessLogin(JToken loginResponse) { var response = new ProcessLoginResponse(); var error = GetError(loginResponse); if (error != null) { //string errorResponse; //if (Enum.TryParse(error.ToString(), out LoginResult loginResult)) { // // this is now handled in the webview // //if (loginResult == LoginResult.VERSION_UNSUPPORTED) { // // await Microsoft.VisualStudio.Shell.ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); // // InfoBarProvider.Instance.ShowInfoBar($"This version of {Application.Name} is no longer supported. Please upgrade to the latest version."); // //} // errorResponse = loginResult.ToString(); //} //else { // errorResponse = error.ToString(); //} //Log.Warning(errorResponse); response.ErrorMessage = error?.Value <string>(); } else if (loginResponse != null) { response.Email = GetEmail(loginResponse).ToString(); // don't want all the data in state -- some is sensitive var state = GetState(loginResponse); var stateLite = JObject.FromObject(new { }); stateLite["capabilities"] = state["capabilities"]; stateLite["teamId"] = state["teamId"]; stateLite["userId"] = state["userId"]; stateLite["email"] = state["email"]; _sessionService.SetUser(CreateUser(loginResponse), stateLite); response.Success = true; } return(response); }
public bool CompleteSigninAsync(JToken loginResponse) { ProcessLoginResponse processResponse = null; try { try { processResponse = ProcessLogin(loginResponse); } catch (Exception ex) { Log.Error(ex, $"{nameof(CompleteSigninAsync)}"); } if (processResponse?.Success == true) { OnSuccessAsync(loginResponse, processResponse.Email); } } catch (Exception ex) { Log.Error(ex, nameof(CompleteSigninAsync)); } return(processResponse?.Success == true); }