forked from synthetic65535/WebFMX3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hasJoined.php
72 lines (61 loc) · 3.25 KB
/
hasJoined.php
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
66
67
68
69
70
71
72
<?php
/*
При подключении клиента сервер посылает этому скрипту JSON следующего содержания:
{
"username":"Ник игрока",
"serverId":"-5dd86675917cd161b0d011aec899f236b3878c42"
}
Требуется проверить, есть ли в базе для данного ника данный serverId.
Если есть, возвращаем JSON следующего содержания и делаем serverId невалидным:
{
"id":"UUID игрока",
"name":"Ник игрока"
}
Если неуспешно - вернуть следующий JSON:
{
"error" : "Bad login",
"errorMessage" : "Сообщение об ошибке"
}
*/
header('Content-Type: application/json; charset=utf-8');
include('webUtils/dbUtils.php');
include('webUtils/auxUtils.php');
include('settings.php');
function SendErrorMessage($error, $errorMessage) {
exit('{"error":"'.$error.'","errorMessage":"'.$errorMessage.'"}');
}
function SendSuccessfulMessage($uuid, $name, $profileInfo) {
if ($profileInfo !== null) {
exit('{"id":"'.$uuid.'","name":"'.$name.'","properties":[{"name":"textures","value":"'.$profileInfo.'","signature":"Cg=="}]}');
} else {
exit('{"id":"'.$uuid.'","name":"'.$name.'"}');
}
}
// Получаем данные:
$username = filter_input(INPUT_GET, 'username', FILTER_SANITIZE_STRING);
$serverId = filter_input(INPUT_GET, 'serverId', FILTER_SANITIZE_STRING);
$uuid = null;
// Создаём объект соединения с базой:
$dbWorker = new DatabaseWorker();
if ($dbWorker === null) {
SendErrorMessage('dbWorker error!', 'Unable to create dbWorker!');
}
// Подключаемся к базе:
if (!$dbWorker->SetupDatabase($dbHost, $dbName, $dbUser, $dbPassword)) {
SendErrorMessage('dbWorker error!', 'Unable to connect to database!');
}
// Получаем ник в верном регистре:
$caseValidationStatus = $dbWorker->GetValidCasedLogin($playersTableName, $playersColumnName, $username);
if (($caseValidationStatus === $dbWorker::STATUS_QUERY_USER_NOT_FOUND) || ($username === null)) {
SendErrorMessage('Valid case login extraction fault!', 'Unable to extract valid-cased username!');
}
$hasJoinedStatus = $dbWorker->DoHasJoined($tokensTableName, $username, $serverId, $uuid);
$dbWorker->CloseDatabase();
switch ($hasJoinedStatus) {
case DatabaseWorker::STATUS_DB_ERROR: SendErrorMessage('Database Error', 'Unknown database error');
case DatabaseWorker::STATUS_DB_OBJECT_NOT_PRESENT: SendErrorMessage('Database error', 'DB object not present');
case DatabaseWorker::STATUS_HAS_JOINED_USER_NOT_FOUND: SendErrorMessage('Bad login', 'Bad login');
case DatabaseWorker::STATUS_HAS_JOINED_SUCCESS: SendSuccessfulMessage($uuid, $username, GenerateProfileInfo($uuid, $username, $workingFolder, $skinsFolder, $cloaksFolder, $defSkinName, $defCloakName, $cloaksPostfix));
default: SendErrorMessage('Unknown has joined status', 'Unknown has joined status');
}
?>