6.0.0-git
2024-10-31
Last Modified 2013-09-04 by Jan Schneider

Dynamically selecting an IMAP server for authentication

This information is valid for Horde 4 only. See ImapSelectH3 for Horde 3 or ImapSelect for Horde 5 and later.

An IMAP server selector hook function in Horde 4 imp/config/hooks.php

class IMP_Hooks
{

public function preauthenticate($userId, $credentials)
{
    //Horde::logMessage('authM: '.$credentials['authMethod'].' id='.$userId, 'ERROR');
    //return true;

    /* when no userId given */
    if (empty($userId)) return true;

    /* list of ALL remote users */
    $remote_users = array('username@remoteserver.hu' => 'remote-imap-servers-key');

    /* local user */
    if (!array_key_exists($userId, $remote_users)) return true;

    /* remote user */
    return array('credentials' => array('server' => $remote_users[$userId],
                                        'transparent' => true,
                                        'password' => $GLOBALS['registry']->getAuthCredential('password')
                                  )
    );
}

}

Set server list to 'hidden' in Imp prefs, and all backend's hordeauth to full.