public async void Update() { IsUpdatingPassword = true; try { if (string.IsNullOrWhiteSpace(Password)) { SetError(PowerPlannerResources.GetString("Settings_ChangePasswordPage_Errors_MustEnterPassword")); return; } if (Password.Length < 5) { SetError(PowerPlannerResources.GetString("String_InvalidPasswordTooShortExplanation")); return; } if (!Password.Equals(ConfirmPassword)) { ActionPasswordsDidNotMatch?.Invoke(this, PowerPlannerResources.GetString("Settings_ChangePasswordPage_Errors_PasswordsDidNotMatch")); return; } if (Account.IsOnlineAccount) { try { var resp = await PowerPlannerAuth.ChangeOnlineAccountPasswordAsync( accountId : Account.AccountId, username : Account.Username, newPassword : Password, currentToken : Account.Token); if (resp.Error != null) { SetError(resp.Error); return; } await updateToken(Account, resp.LocalToken, resp.Token); GoBack(); } catch { SetError(PowerPlannerResources.GetString("Settings_ChangePasswordPage_Errors_FailedUpdateOnline")); } } else { var newLocalToken = PowerPlannerAuth.ChangeOfflineAccountPassword(Account.Username, Password, Account.LocalToken); await updateToken(Account, newLocalToken, null); GoBack(); } } finally { IsUpdatingPassword = false; } }
private async void LocalNotFound(string username) { string password = GetPassword(); try { IsLoggingInOnline = true; OnlineLoginResponse resp; try { resp = await PowerPlannerAuth.LoginOnlineAndAddDeviceAsync(username, password); } catch { IsLoggingInOnline = false; throw; } IsLoggingInOnline = false; if (resp.Error != null) { ShowMessage(resp.Error, "Error logging in"); } else { AccountDataItem account = await CreateAccount(username, resp.LocalToken, resp.Token, resp.AccountId, resp.DeviceId); if (account != null) { TelemetryExtension.Current?.TrackEvent("LoggedInToOnlineAccount"); AccountsManager.SetLastLoginIdentifier(account.LocalAccountId); ToMainPage(account, existingAccount: false); } } } catch (Exception ex) { Debug.WriteLine("Failed logging into online account: " + ex.ToString()); ShowMessage(PowerPlannerResources.GetString("LoginPage_String_ExplanationOfflineAndNoLocalAccountFound"), PowerPlannerResources.GetString("LoginPage_String_NoAccountFoundHeader")); } finally { IsLoggingInOnline = false; } }
public void Continue() { if (PowerPlannerAuth.ValidatePasswordLocally(Password, _currAccount.Username, _currAccount.LocalToken)) { OnIdentityConfirmed?.Invoke(this, new EventArgs()); RemoveViewModel(); } else { ActionIncorrectPassword?.Invoke(this, new EventArgs()); } }
public async System.Threading.Tasks.Task LoginAsync() { try { string username = getUsername(); string password = getPassword(); var matching = await FindAccountByUsername(username); if (matching == null) { localNotFound(username); } else { if ((_autoFilledLocalToken != null && matching.LocalToken.Equals(_autoFilledLocalToken)) || PowerPlannerAuth.ValidatePasswordLocally( password: password, localUsername: username, localToken: matching.LocalToken)) { ToMainPage(matching); } //if a local transferred account else if (!matching.IsOnlineAccount && matching.LocalToken.Equals(Variables.OLD_PASSWORD)) { //update password with the new password matching.LocalToken = password; await AccountsManager.Save(matching); ToMainPage(matching); } else { incorrectLocalPassword(matching, password); } } } catch (Exception ex) { TelemetryExtension.Current?.TrackException(ex); await new PortableMessageDialog("Error logging in. Your issue has been sent to the developer.").ShowAsync(); } }
public async void CreateAccount() { if (!isOkayToCreate()) { return; } string username = Username.Trim(); string password = Password; string email = Email.Trim(); IsCreatingOnlineAccount = true; try { var resp = await PowerPlannerAuth.CreateAccountAndAddDeviceAsync( username : username, password : password, email : email); if (resp == null) { ShowMessage(PowerPlannerResources.GetStringOfflineExplanation(), "Error creating account"); } else if (resp.Error != null) { ShowMessage(resp.Error, "Error creating account"); } else { await FinishCreateAccount(username, resp.LocalToken, resp.Token, resp.AccountId, resp.DeviceId, email); } } catch { ShowMessage(PowerPlannerResources.GetStringOfflineExplanation(), "Error creating account"); } finally { IsCreatingOnlineAccount = false; } }
private async void incorrectLocalPassword(AccountDataItem account, string password) { if (account.IsOnlineAccount) { try { IsCheckingOnlinePassword = true; var resp = await PowerPlannerAuth.CheckUpdatedCredentialsAsync( accountId : account.AccountId, username : account.Username, password : password); if (resp.Error != null) { ShowMessage(resp.Error, "Password error"); } else { //update to new password account.LocalToken = resp.LocalToken; account.Token = resp.Token; await AccountsManager.Save(account); //then log them in ToMainPage(account); } } catch { ShowMessage(PowerPlannerResources.GetString("LoginPage_String_ExplanationIncorrectPasswordAndOffline"), PowerPlannerResources.GetString("LoginPage_String_IncorrectPassword")); } finally { IsCheckingOnlinePassword = false; } } else { ShowMessage(PowerPlannerResources.GetString("LoginPage_String_ExplanationIncorrectPasswordAndLocalAccount"), PowerPlannerResources.GetString("LoginPage_String_IncorrectPassword")); } }
public async void CreateLocalAccount() { if (DefaultAccountToUpgrade != null) { // This code should never be hit. If it does get hit, that implies the UI wasn't correctly hiding the option for // creating the local account (it should be hidden when upgrading a default account, only allowing online account). TelemetryExtension.Current?.TrackException(new Exception("Tried to create local account for default account")); return; } if (!isOkayToCreateLocal()) { return; } string localToken = PowerPlannerAuth.CreateOfflineAccount(Username, Password); await FinishCreateAccount(Username, localToken, null, 0, 0, ""); }
public async void LogIn() { IsLoggingIn = true; try { string username = Username.Trim(); string password = Password; if (UpdateType == UpdateTypes.NoDevice) { var resp = await PowerPlannerAuth.AddDeviceAsync( username : username, password : password); if (resp.Error != null) { SetError(resp.Error); return; } // Set their new device ID and token Account.DeviceId = resp.DeviceId; Account.LocalToken = resp.LocalToken; Account.Token = resp.Token; await AccountsManager.Save(Account); // Trigger a sync but don't await it try { var dontWait = SyncLayer.Sync.SyncAccountAsync(Account); } catch { } } else { var resp = await PowerPlannerAuth.CheckUpdatedCredentialsAsync( accountId : Account.AccountId, username : username, password : password); if (resp.Error != null) { SetError(resp.Error); return; } //update their local account Account.Username = username; Account.LocalToken = resp.LocalToken; Account.Token = resp.Token; await AccountsManager.Save(Account); // Trigger a sync but don't await it try { var dontWait = SyncLayer.Sync.SyncAccountAsync(Account); } catch { } } GoBack(); } catch { SetError("Failed to check your new credentials. Maybe you're offline?"); } finally { IsLoggingIn = false; } }
private static void SetUpApiKey() { Website.ApiKey = new ApiKeyCombo(Secrets.PowerPlannerApiKey, Secrets.PowerPlannerApiHashedKey); PowerPlannerAuth.SetApiKey(Website.ApiKey.ApiKey, Website.ApiKey.HashedKey); }
private async void localNotFound(string username) { string password = getPassword(); try { IsLoggingInOnline = true; OnlineLoginResponse resp; try { resp = await PowerPlannerAuth.LoginOnlineAndAddDeviceAsync(username, password); } catch { IsLoggingInOnline = false; throw; } IsLoggingInOnline = false; if (resp.Error != null) { ShowMessage(resp.Error, "Error logging in"); } else { AccountDataItem account = await CreateAccount(username, resp.LocalToken, resp.Token, resp.AccountId, resp.DeviceId); AccountsManager.SetLastLoginIdentifier(account.LocalAccountId); if (account != null) { TelemetryExtension.Current?.TrackEvent("LoggedInToOnlineAccount"); IsSyncingAccount = true; try { var result = await Sync.SyncAccountAsync(account); if (result != null && result.SelectedSemesterId != null && result.SelectedSemesterId.Value != Guid.Empty) { await account.SetCurrentSemesterAsync(result.SelectedSemesterId.Value, uploadSettings : false); } } catch (OperationCanceledException) { } catch { } IsSyncingAccount = false; ToMainPage(account, false); // don't sync since we just did } } } catch (Exception ex) { Debug.WriteLine("Failed logging into online account: " + ex.ToString()); ShowMessage(PowerPlannerResources.GetString("LoginPage_String_ExplanationOfflineAndNoLocalAccountFound"), PowerPlannerResources.GetString("LoginPage_String_NoAccountFoundHeader")); } finally { IsLoggingInOnline = false; } }