Пример #1
0
        /// <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);
                }
            }
        }
Пример #2
0
        /// <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);
                }
            }
        }