Site web pour membres seulement avec WordPress (contrôlé par IMAP).

Un vieux projet qui prend soudainement une tournure très positive grâce à l’IA qui prend en charge le codage (programmation).

Le concept est de ne gérer les accès (mots de passe) à un seul endroit et que tous les autres services se servent d’une authentification centralisée.

Comme il est généralement impossible d’installer un serveur LDAP ou OAuth sur des serveurs partagés, la solution IMAP est désuète mais très pertinente pour ce cas. Les extensions utilisées dans le passé sont périmées.

Alors j’ai conçu une extension pour WordPress afin d’authentifier les connexions par le serveur IMAP.

Dans le cas de WP (WordPress), la conception d’une extension est plus stable que des patches dans le code. Et pour citer Gemini qui, avec son habituel enthousiasme, a contribué au projet:

Votre environnement WordPress est maintenant prêt à accueillir vos 100 utilisateurs avec une gestion centralisée via IMAP sur WHC/Funio.

Vous avez désormais un contrôle total : un changement de mot de passe dans le cPanel impacte simultanément WebmailNextcloud et WordPress.

C’est une architecture de niveau professionnel.


Dans nextcloud:

Il faut installer l’app « External user authentication » et faire les inscriptions mentionnées dans les notes à cette adresse:
https://github.com/nextcloud/user_external?tab=readme-ov-file#imap

(il y a un bug non-résolu)

'user_backends' => array(
    array(
        'class' => '\\OCA\\UserExternal\\IMAP',
        'arguments' => array(
            '127.0.0.1', // IMAP Host
            993,             // Port
            'ssl',             // sslmode: ssl or tls
            'ee.com',   // Optional: domain to restrict
            true,           // Strip domain from username
            false          // Create user if new
        ),
    ),
),
  • parameter order matters and if you want to restrict the domain (4th parameter), you need to also specify the port (2nd parameter) and sslmode (3rd parameter; set to null for insecure connection). If a domain name (e.g. example.com) is specified, then this makes sure that only users from this domain will be allowed to login. If the fifth parameter is set to true, after successfull login the domain part will be striped and the rest used as username in Nextcloud. e.g. ‘username@example.com’ will be ‘username’ in Nextcloud. The sixth parameter toggles whether on creation of the user, it is added to a group corresponding to the name of the domain part of the address.
  • Parameters:
    1. localhost
    2. port
    3. sslmode
    4. to restrict the domain
    5. username derived from username@example.com
    6. creation of the user and added to a group = example.com