예제 #1
0
        public void auth(HttpProcessor p, string[] route)
        {
            p.HTML.Body.Add("title", "Авторизация");
            //Удаляем все пароли которые были созданы больше 5 минут назад и не были активированы
               connect.insert_update("DELETE FROM `secret_num` WHERE TIMEDIFF(now(), `date`) > TIME(@0);", new string[] { "00:05:00" });
               //проверяем человек авторизировался через Социальные сети или нет
            if (p.InputPOST("token") != "null")
               {
               //С помощью токена вырываем данные с сайта для получения всей информации о человеке
               Hashtable Temp = new Hashtable();
               System.Net.WebRequest req = System.Net.WebRequest.Create("https://ulogin.ru/token.php" + "?" + "token=" + p.InputPOST("token") + "&host=localhost");
               System.Net.WebResponse resp = req.GetResponse();
               System.IO.Stream stream = resp.GetResponseStream();
               System.IO.StreamReader sr = new System.IO.StreamReader(stream);
               string Out = sr.ReadToEnd();
               sr.Close();
               Out =  Out.Trim(new char [] {'{', '}'});
               string[] TempStr = Out.Split(',');

               foreach (string s in TempStr)
               {
                   string[] TempStr2 = s.Split(new string[] { Convert.ToChar(34) + ":" + Convert.ToChar(34) },StringSplitOptions.None);
                   Temp.Add(TempStr2[0].Trim('"'), System.Text.RegularExpressions.Regex.Unescape(TempStr2[1].Trim('"')));
               }
                //Проверяем существует ли такой логин(идентификатор) в БД
               if (formvalidation.is_unique(Temp["identity"].ToString(), "users.login"))
                   //добавляем данныем в БД
                   connect.insert_update("INSERT INTO `users` (`login`, `e-mail`, `fio`, `name_s_net`, `rules`) VALUES(@0, @1, @2, @3, '001');",
                       new string[] { Temp["identity"].ToString(), Temp["email"].ToString(), Temp["first_name"].ToString() + Temp["last_name"].ToString(), Temp["network"].ToString() });

               }
            //Если в форме был введен телефон, то...
               else if (p.InputPOST("Phone") != "null")
               {
               //Создаем пароль который будет передан в смс
               string SecretPass = Simbol(5);

               //добавляем в проверку номер телефона (не должен быть пустым, должен состоять из цифр, и должен быть в Бд уникальным)
               formvalidation.add("Phone", "required|num|is_unique[users.phone]");
               //Запускаем проверку
               if (formvalidation.Start(p))
                   //Вставляем в таблицу нового юзера
                   connect.insert_update("INSERT INTO `users` (`phone`, `rules`) VALUES(@0, '001');", new string[] { p.InputPOST("Phone") });
               //Проверяем на существование и сразу ищем ИД пользователя которого добавили
               if (connect.select("Select `id_users` from `users` Where `phone`='" + p.InputPOST("Phone") + "' LIMIT 1;"))
               {
                   //читаем перву строку данных полученную из бд
                   connect.MyReader.Read();
                   //вставляем в таблицу secret_num пароль и ид пользователя
                   //который будет использоваться при вводе для проверки
                   connect.insert_update("INSERT INTO `secret_num` (`id_users`, `num`, `date`) VALUES(@0, @1, now());", new string[] { connect.MyReader.GetValue(0).ToString(), SecretPass });
                   //отправка смс
                   SendSMS.Send(SecretPass, "+7" + p.InputPOST("Phone"), "COM10");
               }
               else
               {
                   //выдаем сообщение Пользователю Ошибка
                   p.MSG("Ошибочка");
               }
               }
            //проверка на ввод пароля для доступа в интернет пользователем
               else if (p.InputPOST("Password") != "null")
               {
               //Проверка пароля, он должен должен быть не пустым и не уникальным(существовать) в БД
               formvalidation.add("Password", "required|is_not_unique[secret_num.num]");
               //Запуск проверки
               if (formvalidation.Start(p))
               {
                   //Если все успешно удаляем пароль
                   connect.insert_update("DELETE FROM `secret_num` WHERE `num` = @0;", new string[] { p.InputPOST("Password") });
                   //и выдает сообщение пользователю
                   p.MSG("Все круто");
               }
               else
               {
                   p.MSG("Не верно введен пароль!");
               }
               }
        }