0

我想扩展 Ion Auth 以仅允许某些电子邮件地址注册。

我相当肯定我可以将它破解并得到一些工作,但作为codeigniter和ion auth的新手,我想知道是否有“正确的方法”来做我需要的事情?

例如,我可以“扩展” ion auth(这样我就可以更新 ion auth 核心文件而无需覆盖我的更改?)。

我注意到还有包括这个的钩子(在注册函数中):

$this->ci->ion_auth_model->trigger_events('pre_account_creation');

这些在哪里解决,我可以使用它来拦截来自与我希望注册的列表不匹配的电子邮件地址的注册吗?

如果是这样,我会怎么做?我需要$emailregister()函数访问变量。

还是只是从 ion auth 更改基本代码而不在将来更新它的情况?

感谢你给与我的帮助。不要担心电子邮件位,我能够确定电子邮件地址是否与所需的电子邮件域匹配,我更感兴趣的是扩展库的最佳方法是什么。

汤姆

编辑:嗨,本,感谢您的回答,并感谢您抽出宝贵时间查看我的问题。不幸的是,这没有帮助。

我猜你想要做的是在 sql 查询中添加一点“where in”子句?我猜这个where in位不正确,因为没有列名。

此外,此时我无法令人满意地修改 sql 查询以产生所需的输出。例如,我可以将一个钩子添加到一个字面上的函数,$this->db->where('1=1')并在下一个查询中输出这个 sql:

SELECT COUNT(*) AS `numrows` FROM (`users`) WHERE `1=1` AND `email` = 'rawr@rawr.com'

AND email = 'rawr@rawr.com'位将始终不返回任何行。应该是OR email = 'rawr@rawr.com',但如果不编辑 Ion Auth 核心代码,我将无法更改它。

我开始怀疑(从最后几个小时的修补)我可能必须编辑 ion auth 核心才能实现这一点。

4

3 回答 3

2

看看这个例子:https ://gist.github.com/2881995

于 2012-06-06T13:58:54.007 回答
1

最后我只写了一个小form_verification回调函数,我把它放在authion_auth 的控制器中,它检查了一个允许域的列表。:)

于 2012-06-29T17:24:28.120 回答
0

当您在 auth 控制器中验证您的表单时,您会添加一个回调:

$this->form_validation->set_rules('email', 'Email Address', required|callback_validate_email');

在控制器中创建一个名为 validate_email 的方法:

function validate_email() {

    if (strpos($this->input->post('email'), '@mycompany.com') === false) {
        $this->form_validation->set_message('validate_email', 'Not official company email address.');
        return false;
    } else return true;
}

这将导致创建用户失败,因为所有规则都必须通过。您还提供了一条错误消息。只要确保在表单视图端有这条线:

echo validation_errors();
于 2013-01-14T08:06:50.583 回答