| 
									
										
										
										
											2021-08-29 04:48:17 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace BookStack\Http\Middleware; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Closure; | 
					
						
							|  |  |  | use Illuminate\Http\Request; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CheckUserHasPermission | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Handle an incoming request. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param \Illuminate\Http\Request $request | 
					
						
							|  |  |  |      * @param \Closure                 $next | 
					
						
							| 
									
										
										
										
											2021-11-06 08:32:01 +08:00
										 |  |  |      * @param string                   $permission | 
					
						
							| 
									
										
										
										
											2021-08-29 04:48:17 +08:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return mixed | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function handle($request, Closure $next, $permission) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!user()->can($permission)) { | 
					
						
							|  |  |  |             return $this->errorResponse($request); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $next($request); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     protected function errorResponse(Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($request->wantsJson()) { | 
					
						
							|  |  |  |             return response()->json(['error' => trans('errors.permissionJson')], 403); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         session()->flash('error', trans('errors.permission')); | 
					
						
							| 
									
										
										
										
											2021-08-29 04:51:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-29 04:48:17 +08:00
										 |  |  |         return redirect('/'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |