电子邮件作为用户名登录 joomla 3.4
email as username to login joomla 3.4
我无法设置电子邮件以在我的站点中执行登录。我创建了一个插件身份验证来覆盖现有的身份验证,我将 SQL 查询更改为 select 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;
通过这种方式,您 select 使用表单中传递的电子邮件输入正确的用户名。
现在您可以修改登录形式(/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 以防登录失败。
就这些了!
(对于 post-登录重定向,在 url 中添加 Itemid 它恢复工作....)
我不喜欢用这些方式编辑核心文件。
有没有办法很好地覆盖 com_users?
再简单不过了:
注册
- 隐藏用户名字段(CSS)
- 保存(在创建和编辑期间),用该电子邮件的值填写用户名字段。 (我不是开发人员,在这里无法提供帮助)也许,你有什么想法/建议吗?
登录
- 使用简单的语言覆盖将 "Username" 标签更改为 "Email"(在电子邮件和警报中相同)
我无法设置电子邮件以在我的站点中执行登录。我创建了一个插件身份验证来覆盖现有的身份验证,我将 SQL 查询更改为 select 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;
通过这种方式,您 select 使用表单中传递的电子邮件输入正确的用户名。
现在您可以修改登录形式(/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 以防登录失败。
就这些了!
(对于 post-登录重定向,在 url 中添加 Itemid 它恢复工作....)
我不喜欢用这些方式编辑核心文件。 有没有办法很好地覆盖 com_users?
再简单不过了:
注册
- 隐藏用户名字段(CSS)
- 保存(在创建和编辑期间),用该电子邮件的值填写用户名字段。 (我不是开发人员,在这里无法提供帮助)也许,你有什么想法/建议吗?
登录
- 使用简单的语言覆盖将 "Username" 标签更改为 "Email"(在电子邮件和警报中相同)