aboutsummaryrefslogtreecommitdiff
path: root/backend/join.php
blob: a2a106aa4bfb92ee6e5b4dcc6b61aa9e572f3345 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/* hitler-clicker
 * api for user creation
 * © 2025 hitler.rip <git@hitler.rip>
 * licensed under AGPLv3-or-later; see LICENSE.md for more information
 */

header('Content-Type: application/json; charset=UTF-8');

try {
	$pdo = new PDO("mysql:host=127.0.0.1;dbname=hitlerclicker", "root", "aA1234Aa");
} catch(PDOException $e) {
	die('{ "status": "database offline" }');
};

$wrkarr = [];
$ifarr = [ "name", "password", "team" ];
$postjson = json_decode(file_get_contents('php://input'), true);
foreach ($ifarr as $i):
	if (isset($postjson[$i])):
		$newarr = [
			"$i" => "$postjson[$i]",
		];
		$wrkarr = array_merge($wrkarr, $newarr);
	endif;
endforeach;

if (!isset($wrkarr["name"]) || trim($wrkarr["name"]) == ""):
	die('{ "status": "login (name) was not provided.\ncould not attempt to join." }');
elseif (!isset($wrkarr["password"]) || trim($wrkarr["password"]) == ""):
	die('{ "status": "password was not provided.\ncould not attempt to join." }');
elseif (!isset($wrkarr["team"]) || trim($wrkarr["team"]) == ""):
	die('{ "status": "team was not provided.\ncould not attempt to join." }');
else:

	$query = $pdo->prepare("SELECT team, clicks FROM stats WHERE team LIKE ? ORDER BY clicks DESC");
	$query->execute([$wrkarr["team"]]);
	$found = $query->fetch(PDO::FETCH_ASSOC);
	if ($found):

		$query = $pdo->prepare("SELECT name, password FROM users WHERE name LIKE ?");
		$query -> execute([$wrkarr["name"]]);
		$found = $query->fetch(PDO::FETCH_ASSOC);
		if ($found) {
			die('{ "status": "name already exists in the database." }');
		}

		$query = $pdo->prepare("INSERT INTO users (name, password, token, team) VALUES (:name, :password, :token, :team)");
		$query->execute([
			"name" => filter_var($wrkarr["name"]),
			"password" => password_hash($wrkarr["password"], PASSWORD_DEFAULT),
			"token" => bin2hex(random_bytes(64)),
			"team" => filter_var($wrkarr["team"]),
		]);
		die('{ "status": "success" }');
	
	else:
		die('{ "status": "team does not exist." }');
	endif;

endif;

echo '{ "status": "online" }';

?>