private async Task SavePasswordAsync(object parameter) { PasswordBox[] passwords = parameter as PasswordBox[]; if (passwords == null || passwords.Length != 3) { throw new ArgumentException(); } string oldClearTextPassword = passwords[0].Password; string newPassword = passwords[1].Password; string newPasswordConfirmed = passwords[2].Password; string message; if (!_validator.ValidatePassword(newPassword, out message) && !_validator.ValidatePasswordConfirmation(newPassword, newPasswordConfirmed, out message)) { Error = message; return; } CustomIdentity identity = await _loginService.GetUserAsync(_username, oldClearTextPassword); if (identity == null) { Error = "Nieprawidłowe hasło dla użytkownika " + _username; return; } UserNewPasswordDto dto = new UserNewPasswordDto() { Username = _username, Password = oldClearTextPassword, NewPassword = newPassword }; try { await _profileProxy.ChangeUserPasswordAsync(dto); MessageBox.Show("Nowe hasło zostało pomyślnie zapisane.", "Hasło zmienione"); } catch (Exception) { MessageBox.Show("Wystąpił błąd podczas zmiany hasła. Hasło nie zostało zmienione", "Błąd"); } Close(); }
/// <summary> /// Asynchrincznie uwierzytelnia i loguje użytkownika do aplikacji /// </summary> /// <param name="parameter">Parametr komendy</param> /// <returns></returns> public virtual async Task LoginAsync(object parameter) { PasswordBox passwordBox = parameter as PasswordBox; if (passwordBox == null) { throw new InvalidOperationException(); } //Login operation here CustomPrincipal principal = Thread.CurrentPrincipal as CustomPrincipal; if (principal == null) { throw new InvalidOperationException(); } CustomIdentity identity = null; try { identity = await _service.GetUserAsync(Username, passwordBox.Password); } catch (Exception) { MessageDialog md = new MessageDialog(); md.Title = "Błąd"; md.Message = "Błąd systemu logowania"; md.ShowDialog(); } if (identity == null) { ErrorText = "Nieprawidłowa nazwa użytkownika lub hasło"; return; } principal.Identity = identity; Close(); }