Joomla登录问题

时间:2013-12-13 14:50:42

标签: php joomla

我在我的网站上使用joomla 3.1.1 stable

我有一个带有电子邮件和密码的传统登录系统。

我想添加使用其他网站的ID登录的可能性。网站B. B的ID是45678469687等数字,密码与网站A相同。

我在plugins / authentication / new

创建了一个基于原始插件的插件

这是new.php的代码

defined('_JEXEC') or die;
class PlgAuthenticationNew extends JPlugin
{
   public function onUserAuthenticate($credentials, $options, &$response)
   {
      $response->type = 'New';
      // Joomla does not like blank passwords
      if (empty($credentials['password']))
      {
         $response->status = JAuthentication::STATUS_FAILURE;
         $response->error_message = JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');
         return false;
      }

      if(is_numeric($credentials['username'])){
         $db1   = JFactory::getDbo();
         $query1   = $db1->getQuery(true)
            ->select('email_address')
            ->from('websiteB_db.subscriber')
            ->where('username=' . $db1->quote($credentials['username']));

         $db1->setQuery($query1);
         $result1 = $db1->loadResult();

         if ($result1)
         {
            $db   = JFactory::getDbo();
            $query   = $db->getQuery(true)
               ->select('id, password')
               ->from('#__users')
               ->where('username=' . $db->quote($result1));
            $db->setQuery($query);
            $result = $db->loadObject();
         }else{
            $response->status = JAuthentication::STATUS_FAILURE;
            $response->error_message = JText::_('JGLOBAL_AUTH_NO_USER');
         }
      }else{
         $db   = JFactory::getDbo();
         $query   = $db->getQuery(true)
            ->select('id, password')
            ->from('#__users')
            ->where('username=' . $db->quote($credentials['username']));

         $db->setQuery($query);
         $result = $db->loadObject();
      }
      if ($result)
      {
         $parts   = explode(':', $result->password);
         $crypt   = $parts[0];
         $salt   = @$parts[1];
         $testcrypt = JUserHelper::getCryptedPassword($credentials['password'], $salt);

         if ($crypt == $testcrypt)
         {
            $user = JUser::getInstance($result->id); // Bring this in line with the rest of the system
            $response->email = $user->email;
            $response->fullname = $user->name;
            if (JFactory::getApplication()->isAdmin())
            {
               $response->language = $user->getParam('admin_language');
            }
            else {
               $response->language = $user->getParam('language');
            }
            $response->status = JAuthentication::STATUS_SUCCESS;
            $response->error_message = '';

            //print_r($response); die;
         } else {
            $response->status = JAuthentication::STATUS_FAILURE;
            $response->error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS');
         }
      }
      else
      {
         $response->status = JAuthentication::STATUS_FAILURE;
         $response->error_message = JText::_('JGLOBAL_AUTH_NO_USER');
      }
   }
}

当我使用电子邮件登录时,没问题。 当我使用网站B id登录时,我有这个奇怪的消息: 错误:此电子邮件已经注册。

有什么想法吗? 非常感谢你的帮助!

0 个答案:

没有答案