Files
BeWoPlaner/BeWo/View/PasswortAenderungsView.xaml.cs

133 lines
4.8 KiB
C#

using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.PasswortSecurity;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BS.Shared.Extensions;
namespace BeWo.View
{
public partial class PasswortAenderungsView
{
public UserVM ViewModel { get; set; }
public int abr = 0;
public PasswortAenderungsView()
{
InitializeComponent();
CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) =>
{
abr = 1;
Close();
}));
VMFactory.CreateUserVMAsync(BeWoApp.LoggedOnUser.UserOid.Value, vm => ViewModel = vm);
}
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
try
{
DragMove();
}
catch (Exception) { }
}
private void AendernClick(object sender, RoutedEventArgs e)
{
textblock_editFailures.Foreground = new SolidColorBrush(Colors.Red);
//if (ViewModel.CheckOldPassword(AltesPwBox.Password))
//{
// textblock_editFailures.Text = "Das alte Passwort ist nicht korrekt!";
// MessageBox.Show("Das alte Passwort ist nicht korrekt!", "Ändern des Passworts fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Information);
// return;
//}
if (string.IsNullOrEmpty(NeuesPwBox.Password))
{
textblock_editFailures.Text = "Bitte geben Sie ein neues Passwort ein!";
MessageBox.Show("Bitte geben Sie ein neues Passwort ein!", "Ändern des Passworts fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
if (NeuesPwBox.Password != NeuesPwBox2.Password)
{
textblock_editFailures.Text = "Die Passwörter stimmen nicht überein!";
MessageBox.Show("Die Passwörter stimmen nicht überein!", "Ändern des Passworts fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
var lOld = AltesPwBox.Password;
var lNew = NeuesPwBox.Password;
ServiceFacade.DoUserServiceAsync(s => s.CheckPassword(BeWoApp.LoggedOnUser.UserOid.Value, lOld, lNew),
result => CheckPasswordResult(result, lOld, lNew), true);
}
private void CheckPasswordResult(String result, String oldPassword, String newPassword)
{
if (String.IsNullOrEmpty(result))
{
ServiceFacade.DoUserServiceAsync(
s1 =>
{
var erg = s1.ChangePassword(ViewModel.DataContract.LoginName, ViewModel.DataContract.UserVersion.Value, oldPassword, newPassword);
return erg;
},
obj =>
{
if (ViewModel.DataContract.UserOid == BeWoApp.LoggedOnUser.UserOid)
{
BeWoApp.UserPassword = newPassword;
//ServiceFacade.DoUserServiceAsync(s => s.LoadUser(BeWoApp.LoggedOnUser.UserOid.Value), obj2 =>
//{
// BeWoApp.LoggedOnUser = obj2;
// BeWoApp.LoggedOnUser.ResetPasswordInfos.ForEach(f => f.HasToChangePW = false);
// ServiceFacade.DoUserServiceAsync(s3 => s3.UpdateUser(BeWoApp.LoggedOnUser), true);
//}, true);
}
this.Dispatch(Close);
},
true);
}
else
{
this.Dispatch(delegate {
textblock_editFailures.Text = result;
MessageBox.Show(result, "Ändern des Passworts fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Information);
});
}
}
private void AltesPWgeaendert(object sender, RoutedEventArgs e)
{
textblock_editFailures.Text = string.Empty;
}
private readonly PasswortSicherheit _PasswortSicherheit = new PasswortSicherheit();
private void NeuesPwBox_OnPasswordChanged(object sender, RoutedEventArgs e)
{
passwortprüfer = _PasswortSicherheit.ErmittleUndZeigePasswortStaerke(NeuesPwBox.Password, passwortprüfer);
var fehlermeldung = string.Empty;
//textblock_editFailures.Foreground = new SolidColorBrush(Color.FromRgb(255, 72, 0));
//if (!(NeuesPwBox.Password.Any(x => sonderzeichen.Contains(x)) && NeuesPwBox.Password.Any(x => zahlen.Contains(x)) && NeuesPwBox.Password.Any(x => grossBuchstaben.Contains(x)) && NeuesPwBox.Password.Any(x => kleinBuchstaben.Contains(x))))
// fehlermeldung = "Das Passwort sollte Sonderzeichen, Zahlen, Groß- und Kleinbuchstaben enthalten";
//if (NeuesPwBox.Password.Length < 8)
// fehlermeldung = "Das Passwort sollte mindestens 8 Zeichen lang sein";
textblock_editFailures.Text = fehlermeldung;
}
}
}