2012-01-19 2 views
1

Я разрабатываю компонент для Joomla. Он имеет интеграцию с популярными социальными сайтами. Я получаю информацию пользователя из базы данных через данный социальный профиль. Затем я пытаюсь сделать этот вход пользователя с помощью следующего кода: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, он работает. В чем проблема?

ответ

2

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

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

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

0

Вам нужно MD5 хэш-файл (способ, которым он хранится в БД).

попробовать это:

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

Нет, я уже получить закодированный пароль с $ учетных данных [ 'пароль'] = $ user-> Get ("пароль"); и это не сработает. Когда я поставляю простой (не декодированный) пароль, он работает. – mert

+0

Приложите свой код и укажите, какая именно проблема/ошибка/сбой, тогда мы можем просмотреть его вместе и обсудить – alfasin

+0

Я изменил код, теперь он должен быть более понятным. – mert

0
  // --- login mamanam.com 
      $app = JFactory::getApplication();  
      $credentials = array(); 
      $credentials['username'] = $username; 
      $credentials['password'] = $password; 
      $app->login($credentials); 

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

* К сожалению мой английский не так хорошо

+0

Этот ответ был помечается как низкое качество. Если он отвечает на вопрос, подумайте над добавлением немного текста, чтобы объяснить, как он работает. – lmo

+0

Необходимые параметры в массиве '$ credentials = array()' для входа в систему Joomla! '$ app-> login ($ credentials)' ----- Извините, мой английский не очень хорош – Sh4msi

+0

Спасибо, что добавил эту информацию. Лучше поместить его в свой ответ, потому что комментарии сложнее читать и, как правило, исчезают с течением времени. – lmo

Смежные вопросы