forked from Business/AccountHub
		
	Add mobile API
This commit is contained in:
		
							parent
							
								
									4ad42bfe48
								
							
						
					
					
						commit
						0405f695f3
					
				
							
								
								
									
										107
									
								
								mobile/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								mobile/index.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | ||||
| <?php | ||||
| 
 | ||||
| /* | ||||
|  * Mobile app API | ||||
|  */ | ||||
| 
 | ||||
| // The name of the permission needed to log in.
 | ||||
| // Set to null if you don't need it.
 | ||||
| $access_permission = null; | ||||
| 
 | ||||
| require __DIR__ . "/../required.php"; | ||||
| 
 | ||||
| require __DIR__ . "/../lib/login.php"; | ||||
| 
 | ||||
| header('Content-Type: application/json'); | ||||
| 
 | ||||
| // Allow ping check without authentication
 | ||||
| if ($VARS['action'] == "ping") { | ||||
|     exit(json_encode(["status" => "OK"])); | ||||
| } | ||||
| 
 | ||||
| function mobile_enabled() { | ||||
|     $client = new GuzzleHttp\Client(); | ||||
| 
 | ||||
|     $response = $client | ||||
|             ->request('POST', PORTAL_API, [ | ||||
|         'form_params' => [ | ||||
|             'key' => PORTAL_KEY, | ||||
|             'action' => "mobileenabled" | ||||
|         ] | ||||
|     ]); | ||||
| 
 | ||||
|     if ($response->getStatusCode() > 299) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     $resp = json_decode($response->getBody(), TRUE); | ||||
|     if ($resp['status'] == "OK" && $resp['mobile'] === TRUE) { | ||||
|         return true; | ||||
|     } else { | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function mobile_valid($username, $code) { | ||||
|     $client = new GuzzleHttp\Client(); | ||||
| 
 | ||||
|     $response = $client | ||||
|             ->request('POST', PORTAL_API, [ | ||||
|         'form_params' => [ | ||||
|             'key' => PORTAL_KEY, | ||||
|             "code" => $code, | ||||
|             "username" => $username, | ||||
|             'action' => "mobilevalid" | ||||
|         ] | ||||
|     ]); | ||||
| 
 | ||||
|     if ($response->getStatusCode() > 299) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     $resp = json_decode($response->getBody(), TRUE); | ||||
|     if ($resp['status'] == "OK" && $resp['valid'] === TRUE) { | ||||
|         return true; | ||||
|     } else { | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| if (mobile_enabled() !== TRUE) { | ||||
|     exit(json_encode(["status" => "ERROR", "msg" => lang("mobile login disabled", false)])); | ||||
| } | ||||
| 
 | ||||
| // Make sure we have a username and access key
 | ||||
| if (is_empty($VARS['username']) || is_empty($VARS['key'])) { | ||||
|     http_response_code(401); | ||||
|     die(json_encode(["status" => "ERROR", "msg" => "Missing username and/or access key."])); | ||||
| } | ||||
| 
 | ||||
| // Make sure the username and key are actually legit
 | ||||
| if (!mobile_valid($VARS['username'], $VARS['key'])) { | ||||
|     engageRateLimit(); | ||||
|     http_response_code(401); | ||||
|     die(json_encode(["status" => "ERROR", "msg" => "Invalid username and/or access key."])); | ||||
| } | ||||
| 
 | ||||
| // Process the action
 | ||||
| switch ($VARS['action']) { | ||||
|     case "start_session": | ||||
|         // Do a web login.
 | ||||
|         if (user_exists($VARS['username'])) { | ||||
|             if (get_account_status($VARS['username']) == "NORMAL") { | ||||
|                 if (authenticate_user($VARS['username'], $VARS['password'], $autherror)) { | ||||
|                     if (is_null($access_permission) || account_has_permission($VARS['username'], $access_permission)) { | ||||
|                         doLoginUser($VARS['username'], $VARS['password']); | ||||
|                         exit(json_encode(["status" => "OK"])); | ||||
|                     } else { | ||||
|                         exit(json_encode(["status" => "ERROR", "msg" => lang("no admin permission", false)])); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         exit(json_encode(["status" => "ERROR", "msg" => lang("login incorrect", false)])); | ||||
|     default: | ||||
|         http_response_code(404); | ||||
|         die(json_encode(["status" => "ERROR", "msg" => "The requested action is not available."])); | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user