Sixtens hemsida Uppgifter Blogg Om

VED House bokningssystem

Gå till sida

Källkod

api/

database.php

api.php

ved/

monthBookingData.php

openingHoursException.php

bookingData.php

dayTimeframes.php

bookings.php

admin/

revokeToken.php

authorization.php

login.php

modules/

vedDatabase.php

utility.php

gyar/

log.php

auth/

revokeToken.php

authorization.php

login.php

station/

settings.php

log.php

modules/

gyarDatabase.php

databaseConnection.php

database.php

utility.php

credentials.json

weather/

latest.php

old.php

admin/

index.html

changeTimetable.html

login.html

js/

login.js

modules.js

admin.js

header.js

changeTimetable.js

cron/

vedClearExpiredTokens.php

api/ved/admin/login.php

1 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;
?>