web-dev-qa-db-ja.com

Joomlaの一意のメール機能を無効にする

メールアドレスの重複を許可しないようにJoomlas機能をオーバーライドしようとしています。私はこれを取り巻くセキュリティの問題を知っていますが、同じメールアドレスを持つユーザーがいる必要があります。

私のユーザーは主に高齢者で、多くの場合、家庭のメールアドレスを共有しています。

236行目のcheckメソッドのJTableUserクラスでこれをチェックする場所を見つけました

// Check for existing email
    $query->clear()
        ->select($this->_db->quoteName('id'))
        ->from($this->_db->quoteName('#__users'))
        ->where($this->_db->quoteName('email') . ' = ' . $this->_db->quote($this->email))
        ->where($this->_db->quoteName('id') . ' != ' . (int) $this->id);
    $this->_db->setQuery($query);
    $xid = (int) $this->_db->loadResult();

    if ($xid && $xid != (int) $this->id)
    {
        $this->setError(JText::_('JLIB_DATABASE_ERROR_EMAIL_INUSE'));

        return false;
    }

コンポーネントレベルでこのクラスをオーバーライドする方法はありますか?

ありがとう

リー

1
Lee Wiggins

一部のクラスはシステムプラグインで上書きできます。 ここ を参照してください

または、追加フィールドに基づいて独自の認証プラグインを作成できます(そのために使用するユーザープロファイルプラグインで1つを選択できます)。つまり、共有メールを追加フィールドとして保存します。次に、カスタムチェックを実行します)。

これは認証でのみ機能します(その後、Joomlaは通常の、つまり間違ったメールフィールドを使用します)これがあなたが達成したいことかどうかはわかりません。

2
Riccardo Zorn