"OK"])); } function mobile_enabled() { $resp = AccountHubApi::get("mobileenabled"); if ($resp['status'] == "OK" && $resp['mobile'] === TRUE) { return true; } else { return false; } } function mobile_valid($username, $code) { try { $resp = AccountHubApi::get("mobilevalid", ["code" => $code, "username" => $username], true); if ($resp['status'] == "OK" && $resp['valid'] === TRUE) { return true; } else { return false; } } catch (Exception $ex) { return false; } } if (mobile_enabled() !== TRUE) { exit(json_encode(["status" => "ERROR", "msg" => $Strings->get("mobile login disabled", false)])); } // Make sure we have a username and access key if (empty($VARS['username']) || 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. $user = User::byUsername($VARS['username']); if ($user->exists()) { if ($user->getStatus()->getString() == "NORMAL") { if ($user->checkPassword($VARS['password'])) { foreach ($SETTINGS['permissions'] as $perm) { if (!$user->hasPermission($perm)) { exit(json_encode(["status" => "ERROR", "msg" => $Strings->get("no permission", false)])); } } Session::start($user); $_SESSION['mobile'] = true; exit(json_encode(["status" => "OK"])); } } } exit(json_encode(["status" => "ERROR", "msg" => $Strings->get("login incorrect", false)])); default: http_response_code(404); die(json_encode(["status" => "ERROR", "msg" => "The requested action is not available."])); }