2020-04-24 16:37:05 +00:00
|
|
|
<?php
|
2020-04-24 19:22:24 +00:00
|
|
|
class ApiController {
|
2020-04-24 19:57:04 +00:00
|
|
|
protected $input;
|
2020-05-04 19:19:14 +00:00
|
|
|
protected $authenticated = false;
|
2020-04-24 16:37:05 +00:00
|
|
|
|
2020-04-24 16:58:00 +00:00
|
|
|
function __construct() {
|
2020-04-24 19:22:24 +00:00
|
|
|
$input = file_get_contents('php://input');
|
2020-05-04 19:19:14 +00:00
|
|
|
|
2020-04-24 19:22:24 +00:00
|
|
|
if(empty($input)){
|
|
|
|
$this->input = NULL;
|
|
|
|
}else{
|
|
|
|
$this->input = json_decode($input, true);
|
|
|
|
if(json_last_error() != JSON_ERROR_NONE){
|
|
|
|
throw new Exception("Invalid request payload", 400);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-04-24 16:37:05 +00:00
|
|
|
|
2020-04-24 19:57:04 +00:00
|
|
|
protected function requireAuth(){
|
2020-04-25 16:04:02 +00:00
|
|
|
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
|
2020-04-24 19:22:24 +00:00
|
|
|
// TODO: call appropriate class/method
|
|
|
|
$authManager = new AuthManager();
|
2020-05-25 19:21:38 +00:00
|
|
|
$this->authenticated = $authManager->validateToken($_SERVER['HTTP_AUTHORIZATION']);
|
2020-04-24 19:22:24 +00:00
|
|
|
if(!$this->authenticated){
|
2020-04-25 09:38:06 +00:00
|
|
|
throw new Exception("Authorization required", 401);
|
2020-04-24 19:22:24 +00:00
|
|
|
}
|
2020-04-24 16:37:05 +00:00
|
|
|
} else {
|
2020-04-25 09:38:06 +00:00
|
|
|
throw new Exception("Authorization required", 401);
|
2020-04-24 16:37:05 +00:00
|
|
|
}
|
2020-04-24 19:22:24 +00:00
|
|
|
}
|
2020-04-24 16:37:05 +00:00
|
|
|
|
2020-07-14 17:59:18 +00:00
|
|
|
protected function response($data = [], $httpCode = '200', $contentType = 'application/json', $jsonEncode = true){
|
|
|
|
header('Content-Type: ' . $contentType);
|
2020-04-24 19:22:24 +00:00
|
|
|
http_response_code($httpCode);
|
2020-07-14 17:59:18 +00:00
|
|
|
if ($jsonEncode) {
|
|
|
|
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
|
|
|
} else {
|
|
|
|
echo $data;
|
|
|
|
}
|
2020-04-24 16:37:05 +00:00
|
|
|
}
|
2020-04-24 19:22:24 +00:00
|
|
|
}
|