You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							76 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							76 lines
						
					
					
						
							2.1 KiB
						
					
					
				| <?php | |
| use \Firebase\JWT\JWT; | |
| 
 | |
| class AuthenticationToken { | |
| 
 | |
|     private $auth; | |
|     private $token; | |
|     private $response; | |
| /* | |
|     public function getAuthorizationHeader(){ | |
|         $headers = null; | |
|         if (isset($_SERVER['Authorization'])) { | |
|             $headers = trim($_SERVER["Authorization"]); | |
|         } | |
|         else if (isset($_SERVER['HTTP_AUTHORIZATION'])) { //Nginx or fast CGI | |
|             $headers = trim($_SERVER["HTTP_AUTHORIZATION"]); | |
|         } elseif (function_exists('apache_request_headers')) { | |
|             $requestHeaders = apache_request_headers(); | |
|             // Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don't care about capitalization for Authorization) | |
|             $requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders)); | |
|             //print_r($requestHeaders); | |
|             if (isset($requestHeaders['Authorization'])) { | |
|                 $headers = trim($requestHeaders['Authorization']); | |
|             } | |
|         } | |
|         return $headers; | |
|     }*/ | |
| 
 | |
|   public function tokenGet() { | |
| 
 | |
|     $this->auth = null; | |
|     $requestHeaders = apache_request_headers(); | |
|     $requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders)); | |
| 
 | |
|     if(isset($requestHeaders['Authorization'])) { | |
|       $headers = trim($requestHeaders['Authorization']); | |
|     } | |
| 
 | |
|     if(!empty($headers)) { | |
|       if(preg_match('/Bearer\s(\S+)/', $headers, $matches)) { | |
|         $this->auth = $matches[1]; | |
|       } | |
|     } | |
| 
 | |
|     return $this->auth; | |
|   } | |
| 
 | |
|   public function tokenCheck($secret) { | |
| 
 | |
|     $this->token = $this->tokenGet(); | |
|     $this->response = array(); | |
| 
 | |
|     try { | |
| 
 | |
|       $decoded = JWT::decode($this->token, $secret, array('HS256')); | |
|       $this->response = array( | |
|         "status" => 200, | |
|         "access" => "GRANTED", | |
|         "token" => $this->token//$decoded | |
|       ); | |
| 
 | |
|     } catch(Exception $e) { | |
| 
 | |
|       $this->response = array( | |
|         "status" => 401, | |
|         "access" => "DENIED", | |
|         "error" => $e->getMessage() | |
|       ); | |
|     } | |
| 
 | |
|     return $this->response; | |
|   } | |
| } | |
| ?> | |
|  | |
| 
 |