我无法设置用于在我的网站中执行登录的电子邮件。我创建了一个插件身份验证来覆盖现有身份验证,在该身份验证中,我更改了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。
您必须如下修改user.php
中的控制器/components/com_users/controllers
:$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
将所有出现的“用户名”更改为“电子邮件”(请参见下文):<field
name="email"
type="email"
class="validate-email"
filter="email"
label="E-mail"
size="25"
required="true"
validate="email"
/>
然后您必须在语言文件中登录失败的情况下修改jmessage。
就这些!
((用于登录后重定向,将Itemid添加到它可以正常工作的URL中。)
以这种方式,我编辑了核心文件,但我不喜欢。无论如何,是否可以很好地覆盖com_users?
没有那么简单:
注册
登录