Joomla ручной вход с контроллером - PullRequest
1 голос
/ 20 января 2012

Я разрабатываю компонент для Joomla.Он имеет интеграцию с популярными социальными сайтами.Я получаю информацию о пользователе из базы данных через данный социальный профиль.Затем я пытаюсь заставить этого пользователя войти в систему с помощью следующего кода:

$fbuser = $facebook->api(
                '/me',
                'GET',
                array(
                    'access_token' => $_SESSION['active']['access_token']
                )
            );

            // Get a database object
            $db =& JFactory::getDBO();
            $query = "SELECT * FROM #__users WHERE email = '".$fbuser['email']."';";
            $db->setQuery($query);
            $row = $db->loadRow();

            if(isset($row))
            {
                $app = JFactory::getApplication();
                $user =& JUser::getInstance($row[0]);

                $credentials = array();
                $credentials['username'] = $user->get('username');
                $credentials['password'] = $user->get('password'); // When I change this to related users plain password then it works

            $options = array();
                $options['remember']     = true;
                $options['silent']     = true;

                $app->login($credentials, $options);
            }
            else
            {
                return 'There is no account associated with facebook';
            }

Проблема в том, что пароль базы данных возвращает кодированный пароль, и это не работает.Когда я даю расшифрованный пароль для $ credentials, он работает.В чем может быть проблема?

Ответы [ 3 ]

2 голосов
/ 20 января 2012

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

Затем вы можете указать этот пароль вместе с известным именем пользователя.

В целях безопасности разрешите плагину регистрироваться только обычным пользователям, а не администраторам.

0 голосов
/ 04 сентября 2016
            // --- login mamanam.com
            $app = JFactory::getApplication();      
            $credentials = array();
            $credentials['username'] = $username;
            $credentials['password'] = $password;
            $app->login($credentials);

Необходимые параметры в массиве $ credentials = array () для функции входа в систему Joomla! $ app-> login ($ credentials)

* Извините, мой английский не так хорош

0 голосов
/ 20 января 2012

Вам нужно MD5 хэшировать pwd (как он хранится в БД).

попробуйте это:

$salt = '19IQYkelXrqVH1Eht6PFOIZRe5T1SQHs';
$pwd = md5_hex($pwd .  $salt) .":$salt";
$query = "select name,username,email,password from jos_users where password = $pwd;";
...
...