. /** * Plugin that uses the email address as a username, and checks the password as normal * * @category Plugin * @package GNUsocial * @author Craig Andrews * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ defined('GNUSOCIAL') || die(); class EmailAuthenticationPlugin extends Plugin { const PLUGIN_VERSION = '2.0.0'; // $nickname for this plugin is the user's email address public function onStartCheckPassword( string $nickname, string $password, string &$authenticatedUser ): bool { $email = filter_var( $nickname, FILTER_VALIDATE_EMAIL, ['flags' => FILTER_FLAG_EMAIL_UNICODE] ); if ($email === false) { return true; } $user = User::getKV('email', $email); if ($user instanceof User && $user->email === $email) { if (common_check_user($user->nickname, $password)) { $authenticatedUser = $user; return false; } } return true; } public function onPluginVersion(array &$versions): bool { $versions[] = array('name' => 'Email Authentication', 'version' => self::PLUGIN_VERSION, 'author' => 'Craig Andrews', 'homepage' => GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/EmailAuthentication', 'rawdescription' => // TRANS: Plugin description. _m('The Email Authentication plugin allows users to login using their email address.')); return true; } }