Разработчикам: cmsUser::createUser($user) в ядре - куда дели?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

vs. плагин uLogin

#1 22 марта 2013 в 09:09
Пытаюсь прикрутить uLogin к 1.10.1. Плагин матерится на ошибку в строке
  1. $_SESSION['user'] = cmsUser::createUser($user);
Действительно, в ядре нет такой функции. Скопировал из версии 1.9 — ulogin заработал. Но не оставляет ощущение неправильности такого подхода. Раз эту функцию выпилили — значит зачем-то это нужно?

Собственно, вопрос: как теперь правильно работать с логином пользователей? сам поковырял — не нашел как в самом инстанте это сейчас реализовано.

Можно, конечно, оставить и так, но не повлияет ли это на безопасность?

ЗЫ
что б не пришлось лезть в плагин и ядро:

в плагине вызывается вот это:
  1. $sql = "SELECT *
  2. FROM cms_users
  3. WHERE id = '{$user_id}'";
  4.  
  5. $result = $inDB->query($sql);
  6.  
  7. if ($inDB->num_rows($result) == 1) {
  8.  
  9. $current_ip = $_SERVER['REMOTE_ADDR'];
  10. $user = $inDB->fetch_assoc($result);
  11.  
  12. if (!cmsUser::isBanned($user['id'])) {
  13.  
  14. while (isset($user['main_id']) && $user['main_id'] !=0 ){
  15.  
  16. $main_id = $user['main_id'];
  17. $sql = "SELECT *
  18. FROM cms_users
  19. WHERE id = '{$main_id}'";
  20.  
  21. $result = $inDB->query($sql);
  22.  
  23. if ($inDB->num_rows($result) == 1) {
  24.  
  25. $main_user = $inDB->fetch_assoc($result);
  26.  
  27. if (!cmsUser::isBanned($user['id'])) {
  28.  
  29. $user = $main_user;
  30. $user_id = $main_id;
  31.  
  32. }else{
  33.  
  34. $inDB->query("UPDATE cms_banlist SET ip = '$current_ip' WHERE user_id = " . $user['id'] . " AND status = 1");
  35. break;
  36.  
  37. }
  38. }else{
  39.  
  40. break;
  41.  
  42. }
  43.  
  44. }
  45.  
  46. $_SESSION['user'] = cmsUser::createUser($user);
  47.  
  48. cmsCore::callEvent('USER_LOGIN', $_SESSION['user']);
  49.  
функция, которой нет в новой версии инстанта:

  1. public static function createUser($_userdata){
  2.  
  3. $inDB = cmsDatabase::getInstance();
  4. $user = $_userdata;
  5.  
  6. $sql = "SELECT alias, access, is_admin FROM cms_user_groups WHERE id = ".$user['group_id'];
  7. $result = $inDB->query($sql);
  8. $_groupdata = $inDB->fetch_assoc($result);
  9. $user['group'] = $_groupdata['alias'];
  10.  
  11. $access = str_replace(', ', ',', $_groupdata['access']);
  12. $access = explode(',', $access);
  13.  
  14. $user['access'] = array();
  15. $user['access'] = $access;
  16.  
  17. $user['is_admin'] = $_groupdata['is_admin'];
  18.  
  19. return $user;
  20.  
  21. }
  22.  
#2 22 марта 2013 в 11:35
если правильно вас понял, то для того, чтобы авторизовать пользователя достаточно сделать так:

  1. $back_url = $inUser->signInUser($login, $passw, $remember_pass);
объект $inUser разумеется должен быть определен выше
  1. $inUser = cmsUser::getInstance();
#3 24 марта 2013 в 10:27
Ок, спасибо. хоть узнал куда копать )) Но информация была бы не полной без вот этого:


$back_url = $inUser->signInUser($user['login'], $user['password'], 1, 1);

$inCore->redirect($back_url); exit;

Собственно, для тех кто сюда заглянет — uLogin начинает прекрасно работать после перевода на UTF и замены строчек в plugin.php
  1. $_SESSION['user'] = cmsUser::createUser($user);
  2.  
  3. cmsCore::callEvent('USER_LOGIN', $_SESSION['user']);
на вот это:

  1. $back_url = $inUser->signInUser($user['login'], $user['password'], 1, 1);
  2.  
  3. $inCore->redirect($back_url); exit;
  4.  
и плюс в начале функции объявить $inUser

  1. $inUser = cmsUser::getInstance();
PS: Fuze, ну чего ты меня ввел в заблуждение? сразу не сказал, что передается 4 параметра, а не три? последний параметр $pass_in_md5 = [0|1] Два часа потратил не понимая чего ему надо...

PPS а есть вообще полное описание всех функция ядра? так методом научного тыка тяжко изучать.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.