33 lines
		
	
	
		
			900 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			900 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Middleware;
 | |
| 
 | |
| use Closure;
 | |
| use Illuminate\Http\Request;
 | |
| use Symfony\Component\HttpFoundation\Response;
 | |
| 
 | |
| class ApiAllowed
 | |
| {
 | |
|     public function handle(Request $request, Closure $next): Response
 | |
|     {
 | |
|         if (isCloud()) {
 | |
|             return $next($request);
 | |
|         }
 | |
|         $settings = instanceSettings();
 | |
|         if ($settings->is_api_enabled === false) {
 | |
|             return response()->json(['success' => true, 'message' => 'API is disabled.'], 403);
 | |
|         }
 | |
| 
 | |
|         if (! isDev()) {
 | |
|             if ($settings->allowed_ips) {
 | |
|                 $allowedIps = explode(',', $settings->allowed_ips);
 | |
|                 if (! in_array($request->ip(), $allowedIps)) {
 | |
|                     return response()->json(['success' => true, 'message' => 'You are not allowed to access the API.'], 403);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $next($request);
 | |
|     }
 | |
| }
 | 
