19 $dbh = Connect::getInstance()->dbh;
22 Env::add(
$dbh->query(
"SELECT `name`, `value` FROM `settings`")->fetchAll(\PDO::FETCH_KEY_PAIR));
23 }
catch (\Throwable $th) {
24 dd(
$dbh->errorInfo(),
'Возможно система не установлена и в index.php не включен файл install/install.php');
33 Env::$e->set(
'SERVER_ADDR',
$_SERVER[
'SERVER_ADDR']);
34 Env::$e->set(
'HTTP_HOST',
$_SERVER[
'HTTP_HOST']);
35 Env::$e->set(
'SERVER_PORT',
$_SERVER[
'SERVER_PORT']);
36 Env::add([
'CSRF' => md5(session_id())]);
38 register_shutdown_function(
function () {
39 $out = ob_get_contents();
40 if (stripos($out,
'</body>') ===
false)
return;
42 $script =
'<script>window.CSRF = "' . Env::$e->CSRF .
'";' . Stackjs::execute() .
'</script>';
43 $out = str_replace(
'</body>',
'<div class="position-fixed" id="toast" style="top:0;left:0;z-index:1051;"></div>' . $script .
'</body>', $out);
44 if (!empty($_COOKIE[
'FROM_UID'])) {
45 $out = str_replace(
'</body>',
'<div class="position-fixed" style="bottom:10px;right:10px;z-index:1051;"><a title="Вернуться в свой аккаунт" class="btn btn-secondary border-0 rounded-circle" href="/?FROM_UID"><i class="fa fa-user"></i></a></div></body>', $out);
47 $out = Hideout::hide($out);
51 header(
"Cache-Control: no-cache");
52 header(
"Expires: Thu, 01 Jan 1970 00:00:01 GMT");
57 if (!empty(
$_SERVER[
'HTTP_X_AUTH_TOKEN'])) {
59 exit(json_encode([
'error' =>
'API is disabled']));
61 $sth =
$dbh->prepare(
"SELECT `id` FROM `users` WHERE `api_act` = 1 AND `x_auth_token` = :x_auth_token");
62 $sth->bindValue(
':x_auth_token',
$_SERVER[
'HTTP_X_AUTH_TOKEN']);
64 if ($id =
$sth->fetchColumn()) {
68 exit(json_encode([
'error' =>
'Wrong token or API is disabled']));
76 if (
$user->id && !
$user->is_api && (
$_SERVER[
'REQUEST_METHOD'] ==
'POST' ||
$_SERVER[
'REQUEST_METHOD'] ==
'PUT' ||
$_SERVER[
'REQUEST_METHOD'] ==
'DELETE') && (empty($_REQUEST[
'CSRF']) || $_REQUEST[
'CSRF'] != Env::$e->CSRF)) {
77 exit(
'Invalid CSRF!');
85 if (Wrong\Start\Env::$e->CRON_ACT && (!file_exists(
$_SERVER[
'DOCUMENT_ROOT'] .
'/../temp/lock-cron.lock') || filemtime(
$_SERVER[
'DOCUMENT_ROOT'] .
'/../temp/lock-cron.lock') + 100 <
time())) {
if(!($row=Wrong\Models\Crontabs::find($_POST['id']))) if(! $user->access() ->write($row)) $sth
User отвечает за работу с данными пользователя
Connect создает подключение к базе данных
Hideout используется для скрытия элементов в HTML.
Write класс отвечает за запись логов действий
Group класс, содержащий статические методы, используемые для управления группами пользователей.
Env класс управляющий, добавляющий или записывающий переменные среды
Stackjs класс добавляющий и вызывающий javascript стеки
static add($code, $timeout=0, $key='')
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' time()+31536000
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
catch(\Throwable $th) $request