以电子邮件作为用户名登录joomla3.4


email as username to login joomla 3.4

我无法设置电子邮件来在我的网站中执行登录。我创建了一个插件身份验证来覆盖现有的身份验证,在那里我更改SQL查询以选择id和密码:

$query = $db->getQuery(true)
    ->select('id, password')
    ->from('#__users')
    ->where('**email**=' . $db->quote($credentials['username']));

我还尝试将login.xml修改如下:

 <field name="username"
        type="email"
        class="validate-email"
        filter="email"
        label="COM_USERS_LOGIN_EMAIL_LABEL"
        size="25"
        required="true"
        validate="email"
        />

当我尝试登录时,我得到:

You can't access to the private section of the site

有人能帮我吗?

我解决了,我想分享我的解决方案:您不需要修改认证插件的joomla.php。

您必须在/components/com_users/controllers中修改控制器user.php,如下所示:

$data['email']  = $input->$method->get('email', '', 'EMAIL');
$db    = JFactory::getDbo();
$query = $db->getQuery(true)
    ->select('username')
    ->from('#__users')
    ->where('email=' . $db->quote($data['email']));
$db->setQuery($query);
$utente = $db->loadResult();
$data['username'] = $utente;

通过这种方式,您可以使用表单中传递的电子邮件选择正确的用户名。

现在您可以修改登录形式(/components/com_users/models/form/login.xml更改所有出现的"用户名"answers"电子邮件"(见下文(:

    <field
            name="email"
            type="email"
            class="validate-email"
            filter="email"
            label="E-mail"
            size="25"
            required="true"
            validate="email"
    />

然后你必须修改jmessage,以防在你的语言文件中登录失败。

仅此而已!

(对于登录后重定向,在返回的url中添加Itemid即可工作……(

以这种方式,我编辑了核心文件,我不喜欢。有没有办法很好地覆盖comusers?

这不会更简单:

注册

  • 隐藏用户名字段(CSS(
  • 保存(在创建和编辑期间(,用该电子邮件的值填写username字段。(我不是开发人员,在这里帮不上忙(也许,你有什么想法/建议吗

登录

  • 通过简单的语言覆盖,将"用户名"标签更改为"电子邮件"(与电子邮件和警报相同(