Added backend and refactored frond-end to support it.

* Removed unecesery home page
* Added PHP Api that provides auth and replaces the json-server for data storage
* Added support for alternate geocode-api
* Added registration  page
This commit is contained in:
2025-05-27 00:42:00 +02:00
parent 25c1b73e32
commit e88269224c
60 changed files with 4438 additions and 8994 deletions

View File

@@ -0,0 +1,10 @@
<?php
require_once 'config/auth.php';
session_start();
if (isset($_SESSION['name'])) {
echo json_encode(['message' => 'Authorized', 'user' => $_SESSION['name'] , 'allowRegistration' => $AllowUserRegistration]);
} else {
http_response_code(401);
echo json_encode(['message' => 'Unauthorized', 'allowRegistration' => $AllowUserRegistration]);
}

32
api/auth/login.php Normal file
View File

@@ -0,0 +1,32 @@
<?php
require_once 'config/db.php';
$data = json_decode(file_get_contents("php://input"));
if (isset($data->username) && isset($data->password)) {
$username = $data->username;
$password = $data->password;
$query = "SELECT * FROM users WHERE username = :username";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':username', $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
// Start a session and set session variables
session_start();
//$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
$_SESSION['name'] = $user['name'];
echo json_encode(['message' => 'Login successful', 'username' => $user]);
} else {
http_response_code(401);
echo json_encode(['message' => 'Invalid credentials']);
}
} else {
http_response_code(400);
echo json_encode(['message' => 'Missing username or password']);
}
?>

7
api/auth/logout.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
session_start();
session_unset();
session_destroy();
echo json_encode(['success' => true]);
?>

34
api/auth/register.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
require_once 'config/auth.php';
if (!$AllowUserRegistration){
echo json_encode(['message' => 'Endpoint not found']);
http_response_code(404);
die;
}
require_once 'config/db.php';
$data = json_decode(file_get_contents("php://input"));
if (isset($data->username) && isset($data->password) && isset($data->name)) {
$username = $data->username;
$password = password_hash($data->password, PASSWORD_BCRYPT);
$name = $data->name;
$query = "INSERT INTO users (username, password, name) VALUES (:username, :password, :name)";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':name', $name);
if ($stmt->execute()) {
echo json_encode(['message' => 'User registered successfully']);
} else {
echo json_encode(['message' => 'User registration failed']);
}
} else {
http_response_code(400);
echo json_encode(['message' => 'Missing name, username or password']);
}
?>