Exemple #1
0
        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();
        }