コード例 #1
0
ファイル: UserModels.cs プロジェクト: Pavlo7/AEVIProject
        /*public bool ValidateUser(string login, string password)
         * {
         *  string msg;
         *  CUser clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());
         *  STUser dbuser = new STUser();
         *
         *  int ret = clUser.GetRecordByUserLogin(login, out dbuser, out msg);
         *
         *  if (ret != 0) return false;
         *  else
         *  {
         *      if (dbuser.password == CreatePasswordHash(password, dbuser.passwordsalt) && dbuser.isactivated == true)
         *      {
         *          clUser.Lock(dbuser.userid, 0, null, null, out msg);
         *          // скинем количество неверных попыток и доту временной блокировки и дату ввода не верной попытки
         *          return true;
         *      }
         *      else
         *      {
         *
         *          // необходимо проверить дату последней ошибочной попытки
         *          // если она+30 минут меньше текущей количество попыток устанавливаем 1 и записываем дату
         *          // если нет считаем попытку
         *          // если это не 3 пишем дату последней попытки и увеличиваем попытку
         *          // иначе скидываем дату и попытку и вносим дату блокировки
         *          if (dbuser.lastmisstime != null && dbuser.lastmisstime <= DateTime.Now.AddMinutes(-30))
         *          {
         *              clUser.Lock(dbuser.userid, 1, DateTime.Now, null, out msg);
         *          }
         *          else
         *          {
         *              if (dbuser.cntmisstry < 2)
         *                  clUser.Lock(dbuser.userid, dbuser.cntmisstry + 1, DateTime.Now, null, out msg);
         *              else clUser.Lock(dbuser.userid, 0, null, DateTime.Now.AddMinutes(30), out msg);
         *          }
         *          return false;
         *      }
         *  }
         * }*/

        public bool ValidateLogOnPassword(STUser dbuser, string password, out string msg)
        {
            msg = null;
            bool ret = true;

            try
            {
                CUser clUser = new CUser(LocalData.UserId(), LocalData.CSDbUsers(), LocalData.LogPath());

                if (dbuser.password == CreatePasswordHash(password, dbuser.passwordsalt) && dbuser.isactivated == true)
                {
                    clUser.Lock(dbuser.userid, 0, null, null, out msg);
                    // скинем количество неверных попыток и доту временной блокировки и дату ввода не верной попытки
                    return(true);
                }
                else
                {
                    // необходимо проверить дату последней ошибочной попытки
                    // если она+30 минут меньше текущей количество попыток устанавливаем 1 и записываем дату
                    // если нет считаем попытку
                    // если это не 3 пишем дату последней попытки и увеличиваем попытку
                    // иначе скидываем дату и попытку и вносим дату блокировки
                    if (dbuser.lastmisstime != null && dbuser.lastmisstime <= DateTime.Now.AddMinutes(-30))
                    {
                        clUser.Lock(dbuser.userid, 1, DateTime.Now, null, out msg);
                    }
                    else
                    {
                        if (dbuser.cntmisstry < 2)
                        {
                            clUser.Lock(dbuser.userid, dbuser.cntmisstry + 1, DateTime.Now, null, out msg);
                        }
                        else
                        {
                            clUser.Lock(dbuser.userid, 0, null, DateTime.Now.AddMinutes(30), out msg);
                        }
                    }
                    return(false);
                }
            }
            catch (Exception ex) { msg = ex.Message; ret = false; }
            return(ret);
        }