| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  | namespace BookStack\Http\Middleware; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use Closure; | 
					
						
							|  |  |  | use Illuminate\Contracts\Auth\Guard; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Authenticate | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * The Guard implementation. | 
					
						
							|  |  |  |      * @var Guard | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $auth; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Create a new filter instance. | 
					
						
							| 
									
										
										
										
											2015-08-09 03:05:30 +08:00
										 |  |  |      * @param  Guard $auth | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function __construct(Guard $auth) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->auth = $auth; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Handle an incoming request. | 
					
						
							|  |  |  |      * @param  \Illuminate\Http\Request  $request | 
					
						
							|  |  |  |      * @param  \Closure  $next | 
					
						
							|  |  |  |      * @return mixed | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function handle($request, Closure $next) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-11-12 02:09:48 +08:00
										 |  |  |         if ($this->auth->check()) { | 
					
						
							|  |  |  |             $requireConfirmation = (setting('registration-confirmation') || setting('registration-restrict')); | 
					
						
							|  |  |  |             if ($requireConfirmation && !$this->auth->user()->email_confirmed) { | 
					
						
							|  |  |  |                 return redirect('/register/confirm/awaiting'); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-09-06 03:25:57 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-01-16 07:21:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-06 20:55:08 +08:00
										 |  |  |         if ($this->auth->guest() && !setting('app-public')) { | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |             if ($request->ajax()) { | 
					
						
							|  |  |  |                 return response('Unauthorized.', 401); | 
					
						
							|  |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2016-08-15 22:07:45 +08:00
										 |  |  |                 return redirect()->guest(baseUrl('/login')); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $next($request); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |