| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  | // This file is part of GNU social - https://www.gnu.org/software/social
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or
 | 
					
						
							|  |  |  | // (at your option) any later version.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU Affero General Public License for more details.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License
 | 
					
						
							|  |  |  | // along with GNU social.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Plugin that uses the email address as a username, and checks the password as normal | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  Plugin | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  |  * @package   GNUsocial | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  |  * @author    Craig Andrews <candrews@integralblue.com> | 
					
						
							| 
									
										
										
										
											2010-05-27 18:26:47 -04:00
										 |  |  |  * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  |  * @license   https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  | defined('GNUSOCIAL') || die(); | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class EmailAuthenticationPlugin extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-06-03 01:56:52 +01:00
										 |  |  |     const PLUGIN_VERSION = '2.0.0'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-28 12:38:30 +02:00
										 |  |  |     // $nickname for this plugin is the user's email address
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  |     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) { | 
					
						
							| 
									
										
										
										
											2014-04-28 12:38:30 +02:00
										 |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:35:31 +03:00
										 |  |  |         $user = User::getKV('email', $email); | 
					
						
							|  |  |  |         if ($user instanceof User && $user->email === $email) { | 
					
						
							| 
									
										
										
										
											2014-04-28 12:38:30 +02:00
										 |  |  |             if (common_check_user($user->nickname, $password)) { | 
					
						
							|  |  |  |                 $authenticatedUser = $user; | 
					
						
							|  |  |  |                 return false; | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-04-28 12:38:30 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return true; | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-01-09 18:58:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 15:03:30 +01:00
										 |  |  |     public function onPluginVersion(array &$versions): bool | 
					
						
							| 
									
										
										
										
											2010-01-09 18:58:40 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         $versions[] = array('name' => 'Email Authentication', | 
					
						
							| 
									
										
										
										
											2019-06-03 01:56:52 +01:00
										 |  |  |                             'version' => self::PLUGIN_VERSION, | 
					
						
							| 
									
										
										
										
											2010-01-09 18:58:40 -05:00
										 |  |  |                             'author' => 'Craig Andrews', | 
					
						
							| 
									
										
										
										
											2019-11-21 00:21:22 +00:00
										 |  |  |                             'homepage' => GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/EmailAuthentication', | 
					
						
							| 
									
										
										
										
											2010-01-09 18:58:40 -05:00
										 |  |  |                             'rawdescription' => | 
					
						
							| 
									
										
										
										
											2011-04-07 14:01:40 +02:00
										 |  |  |                             // TRANS: Plugin description.
 | 
					
						
							| 
									
										
										
										
											2010-01-09 18:58:40 -05:00
										 |  |  |                             _m('The Email Authentication plugin allows users to login using their email address.')); | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-11-12 20:12:00 -05:00
										 |  |  | } |