108 lines
2.3 KiB
PHP
108 lines
2.3 KiB
PHP
<?php // Viewing account data
|
|
|
|
require_once("../_auth.php");
|
|
require_once("../_utils.php");
|
|
|
|
|
|
|
|
// Check if user with supplied login exists
|
|
function User_LoginExist ($login): bool {
|
|
global $db;
|
|
|
|
$s = $db->prepare("SELECT * FROM users WHERE login = ?");
|
|
$s->bind_param("s", $login);
|
|
$s->execute();
|
|
|
|
return (bool)$s->get_result()->fetch_assoc();
|
|
}
|
|
|
|
// Check if user has specified role
|
|
function User_HasRole ($id, $role): bool {
|
|
global $db;
|
|
|
|
$s = $db->prepare("SELECT * FROM users WHERE id = ?");
|
|
$s->bind_param("s", $id);
|
|
$s->execute();
|
|
$d = $s->get_result()->fetch_assoc();
|
|
|
|
if (!(bool)$d) {
|
|
return null;
|
|
}
|
|
|
|
if ($d["role"] == $role) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Check if user is moderator
|
|
function User_IsMod ($id) {
|
|
global $db;
|
|
|
|
$s = $db->prepare("SELECT * FROM users WHERE id = ?");
|
|
$s->bind_param("s", $id);
|
|
$s->execute();
|
|
$d = $s->get_result()->fetch_assoc();
|
|
|
|
if (!(bool)$d) {
|
|
return null;
|
|
}
|
|
|
|
return in_array($d["role"], array("mod", "admin"));
|
|
}
|
|
|
|
// Get user information from DB
|
|
function User_GetInfoByID ($id) {
|
|
global $db;
|
|
|
|
$result = array();
|
|
|
|
$s = $db->prepare("SELECT * FROM users WHERE id = ?");
|
|
$s->bind_param("s", $id);
|
|
$s->execute();
|
|
$d = $s->get_result()->fetch_assoc();
|
|
|
|
if (!(bool)$d) {
|
|
return null;
|
|
}
|
|
|
|
$result["id"] = $d["id"];
|
|
$result["created_at"] = $d["created_at"];
|
|
$result["login"] = $d["login"];
|
|
$result["avatar_path"] = $d["avatar_path"];
|
|
$result["role"] = $d["role"];
|
|
$result["banned"] = $d["banned"];
|
|
if ($id === $_SESSION["userid"] || User_IsMod($_SESSION["userid"])) { // User himself and mods can see additional info
|
|
$result["email"] = $d["email"];
|
|
$result["invite_id"] = $d["invite_id"];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
|
|
if (ThisFileIsRequested(__FILE__)) {
|
|
require_once("../_json.php");
|
|
|
|
$UserID = null;
|
|
|
|
if (isset($_REQUEST["id"])) {
|
|
if (!ctype_digit($_REQUEST["id"]))
|
|
ReturnJSONError($Err_RDP_InvalidID, "id must be numeric");
|
|
$UserID = intval($_REQUEST["id"]);
|
|
} else {
|
|
if ($LOGGED_IN)
|
|
$UserID = $_SESSION["userid"];
|
|
else
|
|
ReturnJSONError($Err_RDP_InvalidID, "id must be specified or valid session must be provided");
|
|
}
|
|
|
|
$ResponseData = User_GetInfoByID($UserID);
|
|
if ($ResponseData)
|
|
ReturnJSONData($ResponseData);
|
|
else
|
|
ReturnJSONError($Err_DP_IDNotFound, "wrong id");
|
|
}
|
|
|
|
?>
|