/// <summary> /// Функция выдачи прав доступа /// </summary> /// <param name="user">Принимает объект с полями класс Authorization</param> /// <returns>Возращает True - если удачно, False - если не удачно</returns> public bool GetAccess(Authorization user) { string NewPassword = string.Empty; //Новый пароль в обычном представление Guid NewHashPassword = Guid.Empty; //Новый пароль в хэше для БД using (RealEstateAgencyEntities db = new RealEstateAgencyEntities()) { try { #region Генерируем новый пароль //Генерируем var r = new Random(); while (NewPassword.Length < 8) { Char c = (char)r.Next(33, 125); if (Char.IsLetterOrDigit(c)) { NewPassword += c; } } //Шифруем byte[] bytes = Encoding.Unicode.GetBytes(NewPassword); MD5CryptoServiceProvider CSP = new MD5CryptoServiceProvider(); byte[] byteHash = CSP.ComputeHash(bytes); string hash = string.Empty; foreach (byte b in byteHash) { hash += string.Format("{0:x2}", b); } NewHashPassword = new Guid(hash); #endregion user.Password = NewHashPassword; db.Authorization.Add(user); db.SaveChanges(); SendMail mail = new SendMail(); if (mail.SendAccessMail(user.Email, user.Login, NewPassword, user.Name) == true) { #region Запись в лог LogGetAccess log = new LogGetAccess(); log.ID = Guid.NewGuid(); log.UserID = Properties.Settings.Default.User_ID; log.GetAccessUserID = user.UserID; log.CD = DateTime.Now; db.LogGetAccess.Add(log); db.SaveChanges(); #endregion return(true); } else { MessageBox.Show($"Произошла ошибка при выдаче прав пользователю!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } catch (Exception ex) { MessageBox.Show($"Произошла ошибка при выдаче прав пользователю! \n {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } }
/// <summary> /// Функция восстановления пароля /// </summary> /// <param name="Email">Принимает Email адресс проверенного пользователя</param> /// <returns>Возращает True - если пароль удачно изменен, False - если пароль не изменн</returns> public bool RecoverPassword(string Email) { string NewPassword = string.Empty; //Новый пароль в обычном представление Guid NewHashPassword = Guid.Empty; //Новый пароль в хэше для БД using (RealEstateAgencyEntities db = new RealEstateAgencyEntities()) { try { Accounts searchUser = db.Accounts.Where(x => x.Email == Email).FirstOrDefault(); Authorization AuthSearch = db.Authorization.Where(x => x.UserID == searchUser.ID).FirstOrDefault(); #region Генерируем новый пароль //Генерируем var r = new Random(); while (NewPassword.Length < 8) { Char c = (char)r.Next(33, 125); if (Char.IsLetterOrDigit(c)) { NewPassword += c; } } //Шифруем byte[] bytes = Encoding.Unicode.GetBytes(NewPassword); MD5CryptoServiceProvider CSP = new MD5CryptoServiceProvider(); byte[] byteHash = CSP.ComputeHash(bytes); string hash = string.Empty; foreach (byte b in byteHash) { hash += string.Format("{0:x2}", b); } NewHashPassword = new Guid(hash); #endregion //сохраняяем новый пароль AuthSearch.Password = NewHashPassword; db.SaveChanges(); } catch (Exception ex) { MessageBox.Show($"Произошла в формирование нового пароля или его записи! \n {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } try { SendMail SendMail = new SendMail(); if (SendMail.SendAuthMail(Email, NewPassword) == true) { return(true); } else { return(false); } } catch (Exception ex) { MessageBox.Show($"Произошла в формирование нового пароля или его записи! \n {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } }