コード例 #1
0
        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));
            }
        }
コード例 #2
0
 /// <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));
     }
 }
コード例 #3
0
 /// <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));
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 /// <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;
 }
コード例 #6
0
 public LoginResult ShowLogin(BitwardenAuthStatus bitwardenAuthStatus)
 {
     viewModel.Init(bitwardenAuthStatus);
     ShowDialog();
     return(loginResult);
 }