| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace BookStack\Auth\Access; | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-25 23:58:03 +08:00
										 |  |  | use BookStack\Auth\User; | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  | use BookStack\Exceptions\ConfirmationEmailException; | 
					
						
							| 
									
										
										
										
											2018-09-25 23:58:03 +08:00
										 |  |  | use BookStack\Notifications\ConfirmEmail; | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-17 22:52:33 +08:00
										 |  |  | class EmailConfirmationService extends UserTokenService | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2019-08-17 22:52:33 +08:00
										 |  |  |     protected $tokenTable = 'email_confirmations'; | 
					
						
							|  |  |  |     protected $expiryTime = 24; | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Create new confirmation for a user, | 
					
						
							|  |  |  |      * Also removes any existing old ones. | 
					
						
							| 
									
										
										
										
											2021-08-21 22:49:40 +08:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  |      * @throws ConfirmationEmailException | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function sendConfirmation(User $user) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-09-06 19:14:32 +08:00
										 |  |  |         if ($user->email_confirmed) { | 
					
						
							| 
									
										
										
										
											2016-12-05 00:51:39 +08:00
										 |  |  |             throw new ConfirmationEmailException(trans('errors.email_already_confirmed'), '/login'); | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-09-18 01:22:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-17 22:52:33 +08:00
										 |  |  |         $this->deleteByUser($user); | 
					
						
							|  |  |  |         $token = $this->createTokenForUser($user); | 
					
						
							| 
									
										
										
										
											2016-09-18 01:22:04 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $user->notify(new ConfirmEmail($token)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-18 17:47:59 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Check if confirmation is required in this instance. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |     public function confirmationRequired(): bool | 
					
						
							| 
									
										
										
										
											2019-08-18 17:47:59 +08:00
										 |  |  |     { | 
					
						
							|  |  |  |         return setting('registration-confirmation') | 
					
						
							|  |  |  |             || setting('registration-restrict'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-29 00:58:52 +08:00
										 |  |  | } |