0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1342 Просмотров
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Доброго времени суток всем! Прошу помощи тех кто шарит, ситуация такая:
Я написал плагин для авторизации пользователя из црм-ки, в црм у юзера есть определенные права, как сделать так, чтобы в зависимости от прав пользователя, в самой Joomla юзер помещался в определенную группу.
Сейчас это работает примерно так: проверяется юзер по паре логин/пароль, если есть такой юзер в ЦРМ, то проверяется его право на регистрацию в "Joomla", и после регистрации он попадает в группу юзеры(зарегистрированные), так вот, собственно вопрос, как прописать чтобы задавался в плагине ID группы, куда поместить юзера, если у него есть право "менеджер", например.
Буду очень признателен за дельные советы
p.s. проще сказать, хотелось бы узнать параметр, который нужно передать, при регистрации, отвечающий за группу (я это так вижу)
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Если это Joomla 1.5, то смотрите в administrator\components\com_users\controller.php
Код
$user->get('gid')
и components\com_user\controller.php
Код
$user->set('usertype', $newUsertype);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Если это Joomla 1.5, то смотрите в administrator\components\com_users\controller.php
Код
$user->get('gid')
и components\com_user\controller.php
Код
$user->set('usertype', $newUsertype);

У меня стоит 2.5, не хотелось бы править com_users, т.к. сайт фирмы обслуживаю, специально сделал плагин для этого, чтобы потом с обновлением проблем не было. Может все-таки есть какой-нибудь параметр, который можно передать в плагине аутентификации, чтобы определить группу?
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Код
$model	= $this->getModel('Registration', 'UsersModel');
$model->getData->groups[] = выбранная_группа;
Не проверял, можут быть ошибки.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Наверно вы меня не совсем поняли...
Вот пример чтобы было понятнее
у меня имеется плагин /plugins/authentication/crm/crm.php, который установлен основным, его вызывает при авторизации библиотека /libraries/joomla/user/authentication.php
то есть там естественно нет никаких моделей, ни в плагине ни в либе, привожу код плагина:
Спойлер
[свернуть]
Ничего встроеного в Joomla, увы, менять нельзя
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
после регистрации он попадает в группу юзеры(зарегистрированные)
поэтому я думал, что вам нужно задать возможность выбора группы при регистрации.
При авторизации в $_POST передаются только username и password, если не ошибаюсь.
Вам нужно вытащить ID группы
Код
$user = JFactory::getUser();
ID_группы = $user->gid;
или с помощью вашего $query в #__user_usergroup_map.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
При авторизации в $_POST передаются только username и password, если не ошибаюсь.
Все верно, но после того как они передались, в CRM проверяется право на вход, и если этого права нет, то пользователя отправляют лесом и обращения к базе Joomla даже не происходит

Вам нужно вытащить ID группы
Код:
$user = JFactory::getUser();
ID_группы = $user->gid;
или с помощью вашего $query в #__user_usergroup_map.
объекта юзер на этой стадии еще нет(

тут ко мне закралась идейка, и нужна консультация, можно ли переопределить группу, если я в сессию запишу определенное условие?
То есть при авторизации мы узнали, какие пункты меню доступны юзеру, передали в сессию, а потом (вот тут то и нужно верное направление) где-то переопределить юзера в нужную группу
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
объекта юзер на этой стадии еще нет(
А запрос в MySQL не годится?
переопределить юзера в нужную группу
В какую? Joomla? Или вашу?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
А запрос в MySQL не годится?
Дык не авторизован же еще юзер в тот момент, да и даже если он авторизован, то его группа по умолчанию "Зарегистрированные", а мне нужно сделать, чтобы в зависимости от данных из ЦРМ, группа менялась (ну в крайнем случае уровень доступа), я уже попробовал в сессии переопределить группу на свою, новую, специально добавленную, но дело в том что в сессии оно есть, а прав у юзера все-равно нет, и это для меня загадка...
В какую? Joomla? Или вашу?
Попробую объяснить еще раз:
при авторизации через сторонний плагин в пользователях Joomla создается запись о пользователе, но реально он через Joomla не зарегистирован, он есть в базе ЦРМ
ждумла считает что прошла регистрация, и по умолчанию ставить группу пользователя, как "Зарегистрированные", а мне нужно в зависимости от параметров плагина (в ЦРМ есть право "Менеджер" и "Юзер"), помещать этого юзера в определенную группу... Данные я в сессию уже передал, но теперь возник вопрос, как дать понять Joomla, что у юзера сменилось право, костыль, но хоть что то...
В идеале было бы просто записать в таблицу юзеров Joomla данному юзеру определенные группы....
Самое главное, чтобы не менять стандартные компоненты и либы Joomla... как-то так
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Да, я уже совсем запутался.
В моем понимании, "авторизация" - для зарегистрированных юзеров, а новые должны пройти "регистрацию" (это все касается только Joomla).
В вашем случае есть юзер CRM, который еще не зарегистрирован в Joomla и при авторизации через сторонний плагин становится оным, правильно?
Если так, то вернемся к предыдущему моему посту
и components\com_user\controller.php
Код
$user->set('usertype', $newUsertype);
Вот $newUsertype по умолчанию - 'Зарегистрированные'. Попробуйте скормить Joomla новыми значениями этой переменной.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Bartleby

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Спасибо большое, что пытаешься разобраться в той каше, которую я заварил)
Собственно, после длительного перекура, пришло решение, сделать вот как)
ищем в Joomla юзера с логином как введен, удаляем его, потом ищем в ЦРМ такого юзера, как введен, и регистрируем его с обновленными данными (решает вопрос, если в базе ЦРМ сменились данные юзера)
собственно код:
Код
$db		= JFactory::getDbo();
        $query = $db->getQuery(true);

        $query->select('id');
        $query->from('#__users');
        $query->where('username=' . $db->Quote($result_ar->username));
        $db->setQuery($query);
        $result = $db->loadObject();
        if ($result) {
            $user = JFactory::getUser($result->id);
            $user->delete();
        }
        $groups = array();
        if ($result_ar->IsPayManager)
            $groups[] = 10;
        if ($result_ar->IsManager)
            $groups[] = 9;
        $user = new JUser;
        $userData = array( 'name' => iconv("Windows-1251", "UTF-8", $result_ar->name),
            'username' => $result_ar->username,
            'password' => $result_ar->password,
            'password2' => $result_ar->password,
            'email' => $result_ar->email,
            'groups' => $groups
        );
        $user->bind( $userData );
        $user->save();
и пошло оно все нафиг)
а тебе + за терпение)))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

J3. Программное добавление пользователя

Автор AlekVolsk

Ответов: 49
Просмотров: 2202
Последний ответ 20.04.2020, 20:24:27
от web3.0
Выбор варианта на php?

Автор warlocksp

Ответов: 0
Просмотров: 257
Последний ответ 03.07.2018, 11:59:08
от warlocksp
Как добавить выбор/загрузку файла в свой модуль в админке?

Автор Absalem

Ответов: 7
Просмотров: 1196
Последний ответ 07.09.2016, 22:48:54
от fsv