As of version XX of phpList, authentication can be provided by a plugin. You can check the //phpListAdminAuthentication// plugin in the admin directory to see the default one. Below is a skeleton class. Not all methods need to be implemented, but defaulting them to something sensible will be useful. class myCustomPhpListAdminAuthentication extends phplistPlugin { public $name = 'your plugin name'; public $version = 0.1; public $authors = 'Your name'; public $description = 'Provides authentication to phpList using .... '; public $authProvider = true; /** * * validateLogin, verify that the login credentials are correct * * @param string $login the login field * @param string $password the password * * @return array * index 0 -> false if login failed, index of the administrator if successful * index 1 -> error message when login fails * * eg * return array(5,'OK'); // -> login successful for admin 5 * return array(0,'Incorrect login details'); // login failed * */ public function validateLogin($login,$password) { return array(0,s("Login failed")); } /** * * validateAccount, verify that the logged in admin is still valid * * this allows verification that the admin still exists and is valid * * @param int $id the ID of the admin as provided by validateLogin * * @return array * index 0 -> false if failed, true if successful * index 1 -> error message when validation fails * * eg * return array(1,'OK'); // -> admin valid * return array(0,'No such account'); // admin failed * */ public function validateAccount($id) { return array(1,"OK"); } /** * adminName * * Name of the currently logged in administrator * Use for logging, eg "subscriber updated by XXXX" * and to display ownership of lists * * @param int $id ID of the admin * * @return string; */ public function adminName($id) { } /** * adminEmail * * Email address of the currently logged in administrator * used to potentially pre-fill the "From" field in a campaign * * @param int $id ID of the admin * * @return string; */ public function adminEmail($id) { } /** * adminIdForEmail * * Return matching admin ID for an email address * used for verifying the admin email address on a Forgot Password request * * @param string $email email address * * @return ID if found or false if not; */ public function adminIdForEmail($email) { } /** * isSuperUser * * Return whether this admin is a super-admin or not * * @param int $id admin ID * * @return true if super-admin false if not */ public function isSuperUser($id) { } /** * listAdmins * * Return array of admins in the system * Used in the list page to allow assigning ownership to lists * * @param none * * @return array of admins * id => name */ function listAdmins() { } }