public void OnSavePassChangesButtonClick() { if (view.OldPassTextBoxText == string.Empty || view.NewPassTextBoxText == string.Empty || view.NewPassAgainTextBoxText == string.Empty) { view.Message("Моля, попълнате всички полета.", "Внимание", Views.MessageIcon.Warning); return; } Utilities.IPasswordHash passHasher = new Utilities.PasswordHash(); if (!passHasher.Verify(view.OldPassTextBoxText, user.Password)) { view.Message("Въвели сте грешна парола. Моля, опитайте отново.", "Внимание", Views.MessageIcon.Warning); return; } if (view.NewPassAgainTextBoxText != view.NewPassTextBoxText) { view.Message("Новата парола се различава от нейното потвърждение. Моля, опитайте отново.", "Внимание", Views.MessageIcon.Warning); return; } if (view.NewPassTextBoxText == view.OldPassTextBoxText) { view.Message("Новата парола не може да е същата като старата. Моля, опитайте отново.", "Внимание", Views.MessageIcon.Warning); return; } if (!Regex.IsMatch(view.NewPassTextBoxText, @"^.{8,25}$")) { view.Message("Новата парола трябва да е с дължина между 8 и 25 символа.", "Внимание", Views.MessageIcon.Warning); return; } user.Password = passHasher.Generate(view.NewPassAgainTextBoxText); try { data.SaveChanges(); view.Message("Паролата беше променена успешно.", "Успех", Views.MessageIcon.Information); } catch (Exception) { view.Message("В момента изпитваме технически затруднения. Възможно е вашите промени да не са запазени. Моля, опитайте отново по-късно. Съжаляваме за причененото неудобство.", "Грешка", Views.MessageIcon.Error); } view.DisplayMainScreen(); }
public void OnLoginButtonClick() { // Check if the user input is valid, display info if not. if (view.Username == string.Empty) { view.Message("Моля, въведете вашето потребителско име.", "Внимание", Views.MessageIcon.Warning); return; } if (view.Pass == string.Empty) { view.Message("Моля, въведете вашата парола.", "Внимание", Views.MessageIcon.Warning); return; } // Check if the username is in the database Model.IUser currentUser = null; //string typeOfUser = view.TypeOfUser; try { currentUser = (data.Teachers.Where(x => x.username == view.Username).SingleOrDefault() as Model.IUser) ?? (data.Parents.Where(x => x.username == view.Username).SingleOrDefault() as Model.IUser) ?? data.Admins.Where(x => x.admin_username == view.Username).SingleOrDefault(); } catch (System.Data.Entity.Core.EntityException) { view.Message("Неуспешна връзка с базата данни. Моля, опитайте отново по-късно. Съжаляваме за причиненото неудобство.", "Грешка", Views.MessageIcon.Error); return; } // Display error message if there is no such user. if (currentUser == null) { view.Message("Грешно потребителско име и/или парола. Моля, опитайте отново. Ако продължавате да изпитвате затруднения, свържете се с училищния администратор.", "Грешка", Views.MessageIcon.Error); return; } // Instantiate a new password hashing/checking class and use it to check if the user password is correct. Utilities.IPasswordHash passHashChecker = new Utilities.PasswordHash(); var isPasswordCorrect = passHashChecker.Verify(view.Pass, currentUser.Password); // Disaply error if password is not correct if (!isPasswordCorrect) { view.Message("Грешно потребителско име и/или парола. Моля, опитайте отново.", "Грешка", Views.MessageIcon.Error); return; } // If everything is fine, hide this view and start the appropriate one. (Not implemented) view.Hide(); //view.Close(); switch (currentUser.UserType) { case Model.UserType.Teacher: Views.ITeacherView teacherView = view.CreateTeacherView(); ITeacherPresenter teacherPresenter = PresenterFactory.GetTeacherPresenter(teacherView, data, currentUser, this); teacherPresenter.Start(); break; case Model.UserType.Parent: Views.IParentView parentView = view.CreateParentView(); IParentPresenter parentPresenter = PresenterFactory.GetParentPresenter(parentView, data, currentUser, this); parentPresenter.Start(); break; case Model.UserType.Admin: Views.IAdminView adminView = view.CreateAdminView(); IAdminPresenter adminPresenter = PresenterFactory.GetAdminPresenter(adminView, data, currentUser, this); adminPresenter.Start(); break; } }