public async Task <LoginResult> LoginByAuthStatus(BitwardenAuthStatus authStatus, string email, string password) { try { switch (authStatus.Status) { case BitwardenStatus.Logout: //Need email and password return(await FullLogin(email, password)); case BitwardenStatus.Locked: //Need only password return(await LoginLocked(authStatus, email, password)); case BitwardenStatus.Unlocked: //Need only password return(await LoginUnlocked(authStatus, email, password)); default: throw new ArgumentException($"The status {authStatus.Status} does not exist"); } } catch (Exception ex) { return(LoginResult.CreateFailed(ex.Message)); } }
/// <summary> /// Performs the login when the current auth status is unlocked /// Checks if the current email is the same as the email of the current registered user /// </summary> /// <param name="authStatus">The current authStatus</param> /// <param name="email">The email used for the login</param> /// <param name="password">The master password used for the login</param> /// <returns>The login result</returns> private async Task <LoginResult> LoginUnlocked(BitwardenAuthStatus authStatus, string email, string password) { if (email == authStatus.UserEmail) { //Login finished return(LoginResult.CreateSucess(authStatus.UserEmail)); } else { return(await LogoutLogin(email, password)); } }
/// <summary> /// Performs the login when the current auth status is locked /// Checks if the current email is the same as the email of the current registered user /// </summary> /// <param name="authStatus">The current authStatus</param> /// <param name="email">The email used for the login</param> /// <param name="password">The master password used for the login</param> /// <returns>The login result</returns> private async Task <LoginResult> LoginLocked(BitwardenAuthStatus authStatus, string email, string password) { if (email == authStatus.UserEmail) { //Same email as the user that is logged in return(await Unlock(password)); } else { //Must logout the current registered user first return(await LogoutLogin(email, password)); } }
public void Test_Email(BitwardenStatus status, string email, string expected) { var mock = new Mock <IAuthService>(); var loginViewModel = new LoginViewModel(mock.Object, GetPasswordFunc); var bitwardenAuthStatus = new BitwardenAuthStatus { LastSync = DateTime.Now, ServerUrl = "bitwarden.com", Status = status, UserEmail = email, UserId = "afjsf4a86" }; loginViewModel.Init(bitwardenAuthStatus); Assert.Equal(expected, loginViewModel.Email); }
/// <summary> /// Inititializes the begin state of the viewModel /// </summary> /// <param name="bitwardenAuthStatus">The current auth status</param> public void Init(BitwardenAuthStatus bitwardenAuthStatus) { originalEmail = bitwardenAuthStatus.UserEmail ?? ""; Email = originalEmail; }
public LoginResult ShowLogin(BitwardenAuthStatus bitwardenAuthStatus) { viewModel.Init(bitwardenAuthStatus); ShowDialog(); return(loginResult); }