Create key requests for backend to query.
This commit is contained in:
@@ -6,9 +6,37 @@
|
|||||||
|
|
||||||
class RequestManager {
|
class RequestManager {
|
||||||
|
|
||||||
|
private $requestDir;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
$dirName = '/requests'
|
||||||
) {
|
) {
|
||||||
|
$this->requestDir = __DIR__ . $dirName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateRequest($owner, $key) {
|
||||||
|
if(!isset($owner) || !isset($key))
|
||||||
|
return ['error'=>'Request could not be processed', 'status'=> 400];
|
||||||
|
$requester = $_SERVER['PHP_AUTH_USER'];
|
||||||
|
if($owner == $requester)
|
||||||
|
return ['error'=>'You do not need to request access to your own keys', 'status'=> 400];
|
||||||
|
$requestFileName = $this->requestDir . '/' . $owner . '.json';
|
||||||
|
$openRequests = new stdClass();
|
||||||
|
if(file_exists($requestFileName))
|
||||||
|
$openRequests = json_decode(file_get_contents($requestFileName));
|
||||||
|
foreach($openRequests->{$requester} as $request) {
|
||||||
|
if($request->requested_key == $key)
|
||||||
|
return ['error'=>'You already requested that key', 'status'=>400];
|
||||||
|
}
|
||||||
|
$newData = new StdClass();
|
||||||
|
$newData->requested_key = $key;
|
||||||
|
$newData->created = new DateTime()->format('c');
|
||||||
|
if(!isset($openRequests->{$requester}));
|
||||||
|
$openRequests->{$requester} = array();
|
||||||
|
$dataIndex = count($openRequests->{$requester});
|
||||||
|
$openRequests->{$requester}[$dataIndex] = $newData;
|
||||||
|
if(!file_put_contents($requestFileName, json_encode($openRequests, JSON_PRETTY_PRINT)))
|
||||||
|
return['error'=>'request cannot be stored on the server', 'status'=>400];
|
||||||
|
return ['success'=>'Your request was registered successfully', 'status'=>200];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+9
-1
@@ -15,6 +15,7 @@ $path = rtrim($path, '/');
|
|||||||
$path = ltrim($path, '/');
|
$path = ltrim($path, '/');
|
||||||
|
|
||||||
$tokenManager = new TokenManager();
|
$tokenManager = new TokenManager();
|
||||||
|
$requestManager = new RequestManager();
|
||||||
|
|
||||||
switch ($path) {
|
switch ($path) {
|
||||||
case 'request': // request access to another user's emergency / legacy key file
|
case 'request': // request access to another user's emergency / legacy key file
|
||||||
@@ -40,8 +41,15 @@ function ReturnJsonResponse($data, $status = 200) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function requestAccess() {
|
function requestAccess() {
|
||||||
|
global $requestManager;
|
||||||
$data = ['request access' => 'request not allowed'];
|
$data = ['request access' => 'request not allowed'];
|
||||||
ReturnJsonResponse($data, 403);
|
$owner = $_REQUEST['owner'];
|
||||||
|
$key = $_REQUEST['key'];
|
||||||
|
$result = $requestManager->generateRequest($owner, $key);
|
||||||
|
if(isset($result['error']))
|
||||||
|
ReturnJsonResponse(['error'=>$result['error']], $result['status']);
|
||||||
|
if(isset($result['success']))
|
||||||
|
ReturnJsonResponse(['success'=>$result['success']], $result['status']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function denyAccess() {
|
function denyAccess() {
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"allowedName": [
|
||||||
|
{
|
||||||
"requested_key": "myKey.pem",
|
"requested_key": "myKey.pem",
|
||||||
"created": "2026-04-04T12:00:00+00:00"
|
"created": "2026-04-08T20:24:34+00:00"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user