0

Ion Authを拡張して、特定の電子メールアドレスのみを登録できるようにしたい。

私はこれを一緒にハックして何かを機能させることができるとかなり確信していますが、codeigniterとion authの初心者として、必要なことを行うための「適切な方法」があるかどうかを知りたいですか?

たとえば、ion authを「拡張」できます(変更を上書きせずにion authコアファイルを更新できますか?)。

これを含むフックもあることに気づきました(レジスター機能に):

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

これらはどこで解決されますか?登録したいアドレスのリストと一致しない電子メールアドレスからの登録を傍受するためにこれを使用できますか?

もしそうなら、私はそれをどのように行いますか?$email関数から変数にアクセスする必要がありますregister()

それとも、ベースコードをion authから変更し、将来更新しない場合ですか?

あなたが私に与えることができるどんな助けにも感謝します。メールビットについて心配する必要はありません。メールアドレスが必要なメールドメインと一致するかどうかを判断することができます。ライブラリを拡張するための最善の方法に興味があります。

トム

編集:こんにちはベン、あなたの答えに感謝し、私の問題を見て時間を割いてくれてありがとう。残念ながら、これは役に立ちませんでした。

あなたがやろうとしていることは、SQLクエリに「wherein」句を少し追加することだと思いますか?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コアコードを編集しないと、これを変更することはできません。

私は(ここ数時間のいじくり回しから)これを達成するためにionauthコアを編集しなければならないのではないかと疑い始めています。

4

3 に答える 3

2

この例を確認してください: https://gist.github.com/2881995

于 2012-06-06T13:58:54.007 に答える
1

最後に、許可されたドメインのリストをチェックするion_authのコントローラーに配置した小さなform_verificationコールバック関数を作成しました。auth:)

于 2012-06-29T17:24:28.120 に答える
0

認証コントローラーでフォームを検証するときは、コールバックを追加します。

$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 に答える