我无法设置电子邮件以在我的网站中执行登录。我创建了一个插件身份验证来覆盖我更改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
有人可以帮助我吗?
答案 0 :(得分:1)
我解决了,我想分享我的解决方案: 你不需要修改认证插件的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
更改&#34;用户名&#34;的所有出现次数&#34;电子邮件&#34;(见下文):
<field
name="email"
type="email"
class="validate-email"
filter="email"
label="E-mail"
size="25"
required="true"
validate="email"
/>
然后你必须在你的语言文件中登录失败时修改jmessage。
这就是全部!
(对于登录后重定向,将URL中的Itemid添加回工作....)
通过这种方式我编辑了核心文件,我不喜欢。 无论如何要对com_users进行良好的覆盖?
答案 1 :(得分:-1)
它不会更简单:
注册
登录