web-dev-qa-db-fra.com

Désactivation de la fonctionnalité de messagerie unique de Joomla

Je tente de remplacer la fonction Joomlas pour ne pas autoriser les adresses électroniques en double. Je connais les problèmes de sécurité qui entourent cette situation, mais il me faudra des utilisateurs avec la même adresse électronique.

Mes utilisateurs sont principalement des personnes âgées et partagent souvent une adresse e-mail familiale.

J'ai trouvé où il vérifie cela dans la classe JTableUser dans la méthode de contrôle à la ligne 236

// 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;
    }

Existe-t-il un moyen de remplacer cette classe au niveau des composants?

Merci

Lee

1
Lee Wiggins

Vous pouvez remplacer certaines classes avec un plugin système, voir ici

Ou vous pouvez créer votre propre plug-in d'authentification, basé sur un champ supplémentaire (vous pouvez en choisir un dans le plug-in de profil utilisateur à utiliser à cette fin), c'est-à-dire enregistrer le courrier électronique partagé en tant que champ supplémentaire; puis faites la vérification personnalisée).

Cela ne fonctionnerait que pour l'authentification (après cela, Joomla utiliserait le champ de messagerie normal, c'est-à-dire le mauvais courriel). Je ne suis pas sûr que ce soit ce que vous voulez réaliser.

2
Riccardo Zorn