Публикации

Форумы

Авторизация в плагине
 

Авторизация в плагине

1 2  
Модераторы: Патрик, net1313, Predator, Perfecthus, Kapman
Автор Добавил
Offline Yodjik
26.05.15 - 22:55
Yodjik

Сообщений: 20
Привет всем. Суть вопроса: разрабатываю систему авторизации для сайта с wargaming. У меня уже есть модуль обмена данными с сайтом авторизации, т.е. я получаю токен и все данные пользователя, но как их приклеить к системе, т.е. чтобы пользователь опознавался системой как зарегистрированый со всеми вытекающими. Сторонние сервисы не предлагать (религия не позволяет ) Ткните носом пальцем куда копать, плз.


Чудес не бывает, ищите ошибку!
Вернуться наверх
Популярность сообщения: 0
Рекламный блок
VPS
Наверх

Offline net1313
27.05.15 - 03:08
net1313


Сообщений: 2783
1. В каком формате приходят данные? (json, js ... через curl)
2. Где они записываются? Модуль на php и получает данные не записывая?

Тут какая проблема:
- получить данные в файл
- преобразовать их в нужный для движка вид (вернее для его базы),
- после валидации данных тут же писать их в базу и присваивать человеку статус юзера
- перенаправить его на нужную страницу уже в качестве юзера

Последние два пункта вообще не проблема. Делается одной строчкой.
Первые два зависят от твоего знания структуры двига и базовых навыков в написании двух трех переменных на php


Очень Добрый Админ
Вернуться наверх
Популярность сообщения: 2
 
Offline Yodjik
27.05.15 - 10:44
Yodjik

Сообщений: 20
данные получаю в json, после валидации распаковываю и пишу в базу в e107_users, а вот дальше затык...


Чудес не бывает, ищите ошибку!
Вернуться наверх
Популярность сообщения: 0
 
Offline net1313
27.05.15 - 11:11
net1313


Сообщений: 2783
Если пишется в базу, то значит все ОК.
В двиге есть функции

check_class (проверяет класс, к которому относится юзер)
class_add (добавляет юзера к уже существующему классу)

Вобщем принцип состоит в следующем.

Создать страницу, или добавить кусок кода на страницу, куда попадает новый юзер (после того как данные были распакованы, переданы и занесены в базу).
Код проверяет относится ли этот пользователь к классу юзеров - > если да, то (можно перенаправить куда нам нужно, например через header:location) . Если нет -> выдать сообщение юзеру, что у него нет прав доступа.

Код примерно такой

  1. require_once("../../class2.php"); // правильно прописать путь к этому файлу, так как в примере он на два уровня выше
  2. require_once(HEADERF);
  3.  
  4. $caption =      "<span class='твой класс цсс'>Супер Пользовaтель</span>";
  5.  
  6. $text = "<br /><div class='contаiner'>Спaсибо. ........... бла бла<br /><br />Перейти нa <a href=".e_HTTP."index.php>глaвную стрaницу</a></div>";
  7.  
  8. $alert = "<br /><br /><div class='contаiner'> <span class='text'>Вы уже являетесь  Супер пользовaтелем. <br />Скорее всего вы попaли нa эту стрaницу случaйно. Если по кaким-либо причинaм вaм недоступны некоторые возможности Супер пользовaтеля, обрaтитесь <a href='".e_HTTP."хххххх.php'>к службе поддержки.</a></span>";
  9.  
  10. $err = "<br /><br /> <span class='alert'>Ошибкa! Стрaницa доступнa только зaрегистрировaнным пользовaтелям. </span></div>";
  11.  
  12.  
  13. $done =""; // хрен знает, переменная на всякий случай .если чо понадобится
  14.  
  15. /* Проверяем, вдруг зашел тот кому не положено и посылаем его нах */
  16.  
  17. if (!USER){
  18.                 $ns->tablerender($err);
  19.                         require_once(FOOTERF);
  20.                 exit;
  21.     }
  22.  
  23. /* Как параноик, проверяю вдруг зашел уже существующий */
  24.  
  25. if (check_class(4)) {
  26.    $ns->tablerender($alert);
  27.    require_once(FOOTERF);
  28.    exit;
  29.    }
  30. /////// check_class(4) возможно, что у тебя этот класс не под номером 4 , а под другим .Значит надо поменять цифру
  31.  
  32. /* Теперь делаем все что надо: проверяем и выводим текст */
  33.  
  34. $uc = new e_userclass;
  35. $class_id = '3,4'; //// опять же - надо подставить свои значения
  36. $uc->class_add($class_id, array(USERID => USERCLASS));
  37. $e107cache->clear('wmessage'); /// на всякий пожарный, так как для нового юзера может быть другое приветствие. значит очищаем кеш
  38. $caption = $tp->toHtml($caption);
  39. $text = $tp->toHtml($text);
  40.  
  41. $ns -> tablerender($caption, $text);
  42. require_once(FOOTERF);
  43.  
  44. Конец фильма





Очень Добрый Админ
Вернуться наверх
Популярность сообщения: 1
 
Offline Yodjik
28.05.15 - 00:51
Yodjik

Сообщений: 20
на текущий момент трабла в том что !USER всегда true... куда что ещё надо записать, чтобы оно заработало? Пока у меня при входе создаётся запись (или обновляется, если уже существует) в таблице e107_users, и на этом всё...
Раньше так глубоко движ не копал, посему прошу, сильно ногами не пинать.


Чудес не бывает, ищите ошибку!
Вернуться наверх
Популярность сообщения: 0
 
Offline net1313
28.05.15 - 22:01
net1313


Сообщений: 2783
Мало инфы, чтобы понять.
1. Юзеры разделены на классы? или просто один класс пользователей на всех?
2. Нa странице, куда попадает твой юзер, должна стоять проверка. (Например:Попробуй залогинится и поставь на какую-нибудь страницу чтоб высвечивало твой user_id. )
Вобщем для проверки принадлежности к определенному классу и существует функция check_class

Ну а по траблам. Поставь мой код на созданную тобой страницу, а вернее, создай страницу с моим кодом (заменив циферки классов пользователей на свои) и посмотри что показывает.
Для этого конечно надо зайти как гость, а потом как зареганный юзер.


Очень Добрый Админ
Вернуться наверх
Популярность сообщения: 1
 
Offline Real
29.05.15 - 01:27
Real

Сообщений: 1238
Yodjik про Фому, а net1313 - про Емелю
net1313: зачем вообще засорять вопрос ТС еще и классами юзера. USERCLASS - это лишь одно из свойств каждого пользователя. И в вопросе ТС я про это ничего не увдел.

Теперь по теме.

При получении токена - проверяем есть ли этот токен в БД в качестве одного из свойств юзера
а) если токен есть в БД - делаем авто-вход этого юзера.
б) если токен не найден в БД - регистрируем нового юзера (заносим запись в БД `PREFIX_user`) и делаем авто-вход новоиспечённого юзера.

При этом, кроме токена нам обязательно понадобится email, генератор для логина и пароля нового юзера.
После авто-регистрации нового юзера по токену - отправить ему на email логин/пароль и предложение сменить пароль и сделать прочие настройки своего профиля.

По схожему алгоритму работает плагин loginza - посмотри реализацию.

Вернуться наверх
Популярность сообщения: 1
 
Offline net1313
29.05.15 - 21:30
net1313


Сообщений: 2783
Real: ты наверное прав и про токен надо конечно сказать. Однако меня смутил факт того, что новые юзеры в базу добавляются. А значит, если есть такой юзер, то можно вычислить.
Да, и вот оно
– Цитата: 
если токен не найден в БД - регистрируем нового юзера (заносим запись в БД `PREFIX_user`) и делаем авто-вход новоиспечённого юзера.



Очень Добрый Админ
Вернуться наверх
Популярность сообщения: 0
 
Offline Yodjik
10.06.15 - 15:24
Yodjik

Сообщений: 20
Эммм... Ребята, я понимаю, что для вас это просто, но
– Цитата: 
делаем авто-вход

это как вообще? Можно пару примеров?



Чудес не бывает, ищите ошибку!
Вернуться наверх
Популярность сообщения: 0
 
Offline Yodjik
27.06.15 - 18:30
Yodjik

Сообщений: 20
Забейте, разобрался. Там всё просто оказалось (подсмотрел в плагине uLogin).
  1. require_once(e_HANDLER.'login.php');
  2. $usr = new userlogin($login, $password, false);

Cтавится после добавления или обновления данных в PREFIX_user.


Чудес не бывает, ищите ошибку!
Вернуться наверх
Популярность сообщения: 1
 
1 2  
Авторизация в плагине

Перейти:  Вернуться наверх