Select Git revision
-
Sonia Zorba authoredSonia Zorba authored
admin.php 2.20 KiB
<?php
/**
* Functionalities for the admin panel.
*/
//
function checkUser() {
session_start();
global $locator;
$session = $locator->getSession();
if ($session->getUser() === null) {
http_response_code(401);
die("You must be registered to perform this action");
}
$dao = $locator->getUserDAO();
if (!$dao->isAdmin($session->getUser()->id)) {
die("You must be an admin to perform this action");
}
}
Flight::route('GET /admin', function() {
checkUser();
global $locator;
Flight::render('admin/index.php', array('title' => 'Admin panel',
'version' => $locator->getVersion(),
'contextRoot' => $locator->config->contextRoot));
});
Flight::route('GET /admin-join', function() {
checkUser();
global $locator;
Flight::render('admin/join.php', array('title' => 'Admin panel - Join users',
'version' => $locator->getVersion(),
'contextRoot' => $locator->config->contextRoot));
});
Flight::route('POST /admin-join', function() {
checkUser();
global $locator;
$user1Id = filter_input(INPUT_POST, 'user1', FILTER_SANITIZE_STRING);
$user2Id = filter_input(INPUT_POST, 'user2', FILTER_SANITIZE_STRING);
if ($user1Id === null) {
throw new \RAP\BadRequestException("Missing parameter user1");
}
if ($user2Id === null) {
throw new \RAP\BadRequestException("Missing parameter user2");
}
$dao = $locator->getUserDAO();
$user1 = $dao->findUserById($user1Id);
$user2 = $dao->findUserById($user2Id);
$locator->getUserHandler()->joinUsers($user1, $user2);
Flight::redirect($locator->getBasePath() . '/admin-join');
});
Flight::route('GET /admin-search', function() {
checkUser();
$searchText = Flight::request()->query['query'];
if ($searchText === null) {
throw new \RAP\BadRequestException("Missing query parameter");
}
global $locator;
$users = $locator->getUserDAO()->searchUser($searchText);
Flight::json($users);
});
Flight::route('POST /admin/keypair', function() {
checkUser();
global $locator;
$keyPair = $locator->getJWKSHandler()->generateKeyPair();
Flight::json([
"id" => $keyPair->keyId
]);
});