api/
ved/
admin/
modules/
gyar/
admin/
cron/
api/ved/admin/login.php1 lines
<?php
# login.php
# API endpoint
# Används för att skapa en token som administratörer kan använda för att göra förändringar på sidan.
require_once "ved/modules/utility.php";
$functionPOST = function () {
require_once "ved/modules/vedDatabase.php";
# Hämtar konto utifrån användarnamn.
$data = $db->query("SELECT * FROM user WHERE username=:username", array("username" => $_POST["username"]));
if (!$data)
throw new APIError(401, "Invalid username or password.");
# Hashar lösenordet som användaren har angivit.
$hashed = hash("sha256", $_POST["password"] . $data["passwordSalt"], false);
if ($hashed != $data["passwordHash"])
throw new APIError(401, "Invalid username or password.");
# Genererar en token och lagrar den i databasen.
$apiToken = generate_32b_string();
$expiresIn = 24 * 60 * 60;
$db->query("INSERT INTO authToken(tokenHash, userId, createdAt, expiresAt) VALUES (:tokenHash, :userId, CURRENT_TIMESTAMP, ADDDATE(CURRENT_TIMESTAMP, INTERVAL :expiresIn SECOND))", array(
"tokenHash" => hash("sha256", $apiToken),
"userId" => $data["userId"],
"expiresIn" => $expiresIn
));
# Token skickas tillbaka som användaren senare kan lägga i Authorization header för att komma åt
# administrativa API endpoints.
$response = array("token" => $apiToken, "tokenType" => "Bearer", "expiresIn" => $expiresIn);
return $response;
};
$api = new APIEndpoint();
$httpPOST = new APIMethod("POST", $functionPOST);
$httpPOST->setRequiredBodyParameters(array("username", "password"));
$api->addMethod($httpPOST);
return $api;
?>