При разработке информационной системы АИС «Ассистент» был определен начальный уровень библиотек:
1. Серверная часть:
1.1. PHPMailer – PHP-библиотека, предназначенная для рассылки электронных писем через протокол SMTP;
1.2. FPDF – библиотека, которая генерирует из PHP-кода PDF-документацию;
1.3. Petrovich – лингвистическая библиотека, которая склоняет фамилию, имя, отчество по разным падежам;
1.4. PHPQRCode – библиотека, которая генерирует QR-код и выдает их как изображениями на сервер, так и в RAW-представлении;
2. Клиентская часть:
2.1. Bootstrap – фреймворк, служащий для отрисовки пользовательского интерфейса в браузере;
2.2. jQuery – JS-библиотека, которая используется фреймворком Bootstrap, а также для создания AJAX-функционала в системе;
2.3. Download.js – библиотека, используемая для того, чтобы реализовать возможность скачивать документы из страницы, не переходя на новую или перезагружая страницу;
2.4. JQuery.mask.js – JS-библиотека, необходимая для создания масок для ввода в пользовательских полях ввода
2.5. Fontawesome – библиотека иконок для создания интуитивного интерфейса;
|
|
2.6. Emojicss – библиотека, служащая для вывода эмоджи в информационной системе.
Также были написаны следующие библиотеки для работоспособности системы:
1. files – библиотека, необходимая для работоспособности файловой системы информационной системы;
2. template-engine – библиотека, которая необходима для отрисовки пользовательского интерфейса, а также для того, чтобы обособить гипертекстовую разметку от PHP-кода;
3. users – библиотека, служащая для авторизации, регистрации, удаления и прочих действий над пользователями.
Дополнительный исходный код в этой работе представлен не будет из-за ограничения заказчика.
Библиотека Files имеет следующие функции:
- __construct() – конструктор, который запускается при инициализации объекта. В функции определяется системный путь до хранилища файлов, загружается список уровней доступа к системе, MIME-типы файлов;
- setPath() – функция, которая определяет путь для записи файлов в новое хранилище;
- upload() – функция, которая отвечает за загрузку новых файлов в систему;
- delete() – функция, которая отвечает за удаление файлов из системы;
- update() – функция, которая отвечает за обновление файла в системе;
- get() – функция, которая отвечает за предоставление данные о файле. Если файл приватный, то проверяет уровень пользователя и если уровень некорректный, доступ отклоняется;
- download() – функция, которая дает пользователю скачать файл (получение RAW-представление файла);
- createFolder() – функция, которая создает папку во внутреннем хранилище.
Библиотека Template-engine имеет следующие функции:
|
|
- __construct() – конструктор, который устанавливает путь до хранилища шаблонов;
- set() – функция, которая устанавливает данные для доступа в шаблонах;
- delete() – функция, которая удаляет установленные данные для доступа в шаблонах;
- __get() – функция-указатель на наименование переменной, к которой можно обратиться из шаблона;
- display() – функция на отображение шаблона пользователю.
Библиотека Users имеет следующие функции:
- __construct() – конструктор, который запускает подключение к базе данных, устанавливает ключи шифрования, и, если был передан токен, проверяет актуальность токена;
- c() – функция закрытия подключения к базе данных;
- auth() – функция авторизации пользователя;
- exit() – функция выхода пользователя из системы;
- edit() – функция изменения пользовательских данных в системе (функционал доступен для администраторов);
- check_level() – функция проверки уровня доступа к системе;
- getDecrypted() – функция, которая служит для получения расшифрованных пользовательских данных;
- register() – функция, которая нужна для регистрации пользователей (функционал доступен для администраторов);
- delete() – удаление пользователей из системы (функционал доступен для администраторов);
- get_all_users() – получить список всех пользователей (функционал доступен для администраторов);
- check_login() – проверка логина на его уникальность (функционал доступен для администраторов).
ЗАКЛЮЧЕНИЕ
При разработке информационной системы АИС «Ассистент» были созданы схемы данных в базе данных, разработан программный продукт, который используется заказчиком – ГАПОУ СО «Нижнетагильским торгово-экономическим колледжем».
Поставленная цель работы – разработка модульного программного продукта (начального скелета) для автоматизации процессов ГАПОУ СО «Нижнетагильского торгово-экономического колледжа» – была успешно решена.
Поставленные задачи для достижения цели:
1. анализ источников с целью изучения особенностей разработки пользовательского интерфейса;
2. использование программных продуктов для проектирования АИС «Ассистент» для ГАПОУ СО «Нижнетагильского торгово-экономического колледжа»;
3. разработка программного продукта АИС «Ассистент» для ГАПОУ СО «Нижнетагильского торгово-экономического колледжа», который позволяет разворачивать дополнительные модули, которые автоматизируют процессы с заданными условиями к модулям.
Были успешно освоены и решены.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. 8 Характеристик удачного пользовательского интерфейса // Хабрахабр URL: https://habr.com/ru/post/58023/ (дата обращения: 16.06.2020).
2. SDI- и MDI-приложения в Qt // qt-doc.ru URL: http://qt-doc.ru/sdi-i-mdi-prilozhenia.html (дата обращения: 16.06.2020).
3. ГОСТ Р ИСО/МЭК 15910-2002. Информационная технология. Процесс создания документации пользователя программного средства // Техэксперт URL: http://docs.cntd.ru/document/gost-r-iso-mek-15910-2002 (дата обращения: 18.06.2020).
4. Интерфейс // Ingate URL: https://promo.ingate.ru/seo-wikipedia/interface/ (дата обращения: 16.06.2020).
5. Критерии качества интерфейса пользователя // StudFiles URL: https://studfile.net/preview/952367/ (дата обращения: 16.06.2020).
6. Обзор графических библиотек C++ // Tproger URL: https://tproger.ru/digest/cpp-best-gui/ (дата обращения: 16.06.2020).
7. Основные элементы пользовательского интерфейса // srd18 URL: https://sites.google.com/site/srd18docs/graficeskij-interfejs/osnovnye-elementy-polzovatelskogo-interfejsa (дата обращения: 16.06.2020).
ПРИЛОЖЕНИЕ
Рис. 6 – главная страница системы
Рис. 7 – страница авторизации пользователей
Рис. 8 – страница, принявшая вид для авторизованного пользователя
Рис. 9 – страница личного кабинета пользователя
Рис. 10 – изменение логина пользователя
Рис. 11 – изменение пароля пользователя
Рис. 12 – «Администраторская панель». Управление пользователями
Рис. 13 – модальное окно регистрации новых пользователей
|
|
Рис. 14 – «Администраторская панель». Конфигурация системы
Листинг 1
<?php
class files {
private $absolute = "";
private $trueAbsolute = "";
private $mimes = [];
private $levels = [];
public function __construct(string $path = "") {
if (!empty($path))
$this -> absolute = json_decode(file_get_contents(__DIR__. "/../configurations/json/about.json")) -> absolutePath. $path;
else
$this -> absolute = json_decode(file_get_contents(__DIR__. "/../configurations/json/about.json")) -> absolutePath;
$this -> mimes = json_decode(file_get_contents(__DIR__. "/../configurations/json/mimes.json"));
$this -> levels = json_decode(file_get_contents(__DIR__. "/../configurations/json/levels.json"));
$this -> trueAbsolute = json_decode(file_get_contents(__DIR__. "/../configurations/json/about.json")) -> absolutePath;
$thumb = [];
foreach ($this -> levels as $value)
$thumb[] = $value -> level;
$this -> levels = $thumb;
}
public function setPath(string $path = "") {
if (!empty($path)) {
$this -> absolute = $this -> trueAbsolute. $path;
return true;
} else
return false;
}
public function upload(array $_file = [], string $_name = "", bool $_isCommon = true, array $_shared = []) {
if (!empty($_file)) {
if (!empty($_name)) {
$mime = [
"ok" => false,
"extension" => NULL,
];
foreach ($this -> mimes as $value)
if ($value -> mime == $_file["type"])
$mime = [
"ok" => true,
"extension" => $value -> extension,
];
if ($mime["ok"]) {
if ($_file["size"] > 2000 && $_file["size"] < 15000000) {
if ($_isCommon) {
$thumbname = md5(strval(time()). $_name. strval(microtime())). $mime["extension"];
if (move_uploaded_file($_file["tmp_name"], $this -> absolute. "/{$thumbname}")) {
require __DIR__. "/../configurations/database/class.php";
$_name = strval($database -> real_escape_string($_name));
$database -> query("INSERT INTO `main_files` (`name`, `mime`, `path`, `isCommon`) VALUES ('{$_name}', '{$_file["type"]}', '{$this -> absolute}/{$thumbname}', 1);");
if (empty($database -> error))
|
|
return $database -> insert_id;
else {
unlink($this -> absolute. "/{$thumbname}");
return $database -> error;
}
$database -> close();
} else
return "FILE_DOES_NOT_UPLOAD";
} else {
$levels_ok = true;
foreach ($_shared as $value)
if (!in_array($value, $this -> levels))
$levels_ok = false;
if ($levels_ok) {
$thumbname = md5(strval(time()). $_name. strval(microtime())). $mime["extension"];
if (move_uploaded_file($_file["tmp_name"], $this -> absolute. "/{$thumbname}")) {
require __DIR__. "/../configurations/database/class.php";
$_name = strval($database -> real_escape_string($_name));
$_isCommon = 1;
$_shared = $database -> real_escape_string(json_encode($_shared));
$database -> query("INSERT INTO `main_files` (`name`, `mime`, `path`, `isCommon`, `shared`) VALUES ('{$_name}', '{$_file["type"]}', '{$this -> absolute}/{$thumbname}', 0, '{$_shared}');");
if (empty($database -> error))
return $database -> insert_id;
else {
unlink($this -> absolute. "/{$thumbname}");
return $database -> error;
}
$database -> close();
} else
return "FILE_DOES_NOT_UPLOAD";
} else
return "LEVELS_DOES_NOT_CORRECT";
}
} else
return "WRONG_FILE_SIZE";
} else
return "NOT_GRANTED_MIME_TYPE";
} else
return "EMPTY_FILE_NAME";
} else
return "EMPTY_FILE_DATA";
}
public function delete(int $_id) {
if (!empty($_id)) {
require __DIR__. "/../configurations/database/class.php";
$file = $database -> query("SELECT `path` FROM `main_files` WHERE `id` = {$_id};");
if ($file -> num_rows!= 0) {
$file = $file -> fetch_assoc()["path"];
$database -> query("DELETE FROM `main_files` WHERE `id` = {$_id};");
unlink($file);
return "OK";
} else
return "FILE_IS_NOT_FOUND";
$database -> close();
} else
return "ID_IS_EMPTY";
}
public function update(int $_id = 0, $_file = [], string $_name = "", $_isCommon = NULL, array $_shared = []) {
if (!empty($_id)) {
require __DIR__. "/../configurations/database/class.php";
$file = $database -> query("SELECT `path` FROM `main_files` WHERE `id` = {$_id};");
if ($file -> num_rows!= 0) {
$file = $file -> fetch_assoc()["path"];
$returned = [];
if (!empty($_file)) {
$mime = [
"ok" => false,
"extension" => NULL,
];
foreach ($this -> mimes as $value)
if ($value -> mime == $_file["type"])
$mime = [
"ok" => true,
"extension" => $value -> extension,
];
if ($mime["ok"]) {
if ($_file["size"] > 2000 && $_file["size"] < 15000000) {
$thumbname = md5(strval(time()). $_name. strval(microtime())). $mime["extension"];
if (move_uploaded_file($_file["tmp_name"], $this -> absolute. "/{$thumbname}")) {
$database -> query("UPDATE `main_files` SET `path` = '{$this -> absolute}/{$thumbname}', `mime` = '{$_file["type"]}' WHERE `id` = {$_id};");
if (!empty($database -> error))
$returned[] = $database -> error;
unlink($file);
} else
$returned[] = "FILE_DOES_NOT_UPLOAD";
} else
$returned[] = "WRONG_FILE_SIZE";
} else
$returned[] = "NOT_GRANTED_MIME_TYPE";
}
if (!empty($_name)) {
$_name = $database -> real_escape_string(strval($_name));
$database -> query("UPDATE `main_files` SET `name` = '$_name' WHERE `id` = {$_id};");
if (!empty($database -> error))
$returned[] = "NAME_IS_NOT_EDITED";
}
if (!empty($_isCommon)) {
if ($_isCommon) {
$database -> query("UPDATE `main_flies` SET `isCommon` = 1, `shared` = NULL WHERE `id` = {$_id};");
if (!empty($database -> error))
$returned[] = "COMMON_ATTRIBUTE_IS_NOT_SET";
} else {
if (!empty($_shared)) {
$levels_ok = true;
foreach ($_shared as $value)
if (!in_array($value, $this -> levels))
$levels_ok = false;
if ($levels_ok) {
$_shared = json_encode($_shared);
$database -> query("UPDATE `main_files` SET `isCommon` = 0, `levels` = '{$_shared}' WHERE `id` = {$_id};");
} else
$returned[] = "LEVELS_DOES_NOT_CORRECT";
} else
$returned[] = "LEVELS_ARE_EMPTY";
}
}
if (!empty($returned))
return [
"status" => "ERRORS",
"errors" => $returned,
];
else
return "OK";
} else
return "FILE_IS_NOT_FOUND";
$database -> close();
} else
return "ID_IS_EMPTY";
}
public function get(int $_id = 0, int $_level = -1) {
if (!empty($_id)) {
require __DIR__. "/../configurations/database/class.php";
$f = $database -> query("SELECT * FROM `main_files` WHERE `id` = {$_id};");
if ($f -> num_rows!= 0) {
$f = $f -> fetch_assoc();
if (!boolval($f["isCommon"])) {
if (in_array($_level, json_decode($f["shared"])))
return [
"id" => $f["id"],
"name" => $f["name"],
"mime" => $f["mime"],
"path" => $f["path"],
];
else
return "ACCESS_DENIED";
} else
return [
"id" => $f["id"],
"name" => $f["name"],
"mime" => $f["mime"],
"path" => $f["path"],
];
} else
return "FILE_IS_NOT_FOUND";
$database -> close();
} else
return "ID_IS_EMPTY";
}
public function download(int $_id = 0, int $_level = -1) {
$f = $this -> get($_id, $_level);
if (is_array($f)) {
if (ob_get_level())
ob_end_clean();
header("Content-Description: File Transfer");
header("Content-Type: {$f["mime"]}");
header("Content-Disposition: inline; filename=". basename($f["path"]));
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: must-revalidate");
header("Pragma: public");
header("Content-Length: ". filesize($f["path"]));
if ($fd = fopen($f["path"], 'rb')) {
while (!feof($fd))
echo fread($fd, 1024);
fclose($fd);
}
} else
switch ($f) {
case "ACCESS_DENIED":
http_response_code(403);
break;
case "FILE_IS_NOT_FOUND":
http_response_code(404);
break;
case "ID_IS_EMPTY":
http_response_code(500);
break;
}
}
public function createFolder(string $_path = "") {
if (!empty($_path)) {
if (!file_exists($this -> absolute. $_path))
return mkdir($this -> absolute. $_path, 0777, true);
} else
return false;
}
}
?>
Листинг 2
<?php
class template {
public $dirTemplates;
public $data = array();
public function __construct(string $dirTemplates) {
$this -> dirTemplates = $dirTemplates;
}
public function set(string $name, $values) {
$this -> data[$name] = $values;
}
public function delete(string $name) {
unset($this -> $data[$name]);
}
public function __get(string $name) {
if (isset($this -> data[$name]))
return $this -> data[$name];
else
return null;
}
public function display(string $template) {
$template = $this -> dirTemplates. $template. ".tpl";
ob_start();
include($template);
echo ob_get_clean();
}
}
?>
Листинг 3
<?php
class user {
private $_db;
public $_authId;
private $_encrypt;
private $_cipher_key;
public $_isFound = true;
public function __construct(string $_token = "") {
require __DIR__. "/../configurations/database/class.php";
require __DIR__. "/../configurations/main.php";
require __DIR__. "/../configurations/cipher-keys.php";
$this -> _encrypt = new cryptService($ciphers["database"]);
$this -> _cipher_key = $ciphers["database"];
$this -> _db = $database;
if (!empty($_token)) {
$_tkn = $this -> _encrypt -> decrypt($_token);
$user = $this -> _db -> query("SELECT `id` FROM `main_user_auth` WHERE `token` = '$_tkn';");
if ($user -> num_rows!= 0)
$this -> _authId = $user -> fetch_assoc()["id"];
else
$this -> _isFound =!$this -> _isFound;
}
}
public function c() {
$this -> _db -> close();
}
public function auth(string $login, string $password) {
if (!empty($login) &&!empty($password)) {
$login = hash("SHA256", $login);
$user = $this -> _db -> query("SELECT `id`, `password`, `token` FROM `main_user_auth` WHERE `login` = '$login';");
if ($user -> num_rows == 1) {
$user = $user -> fetch_assoc();
if (password_verify($password, $user["password"])) {
$this -> _authId = $user["id"];
if (!empty($user["token"]))
return $this -> _encrypt -> encrypt($user["token"]);
else {
$thumb_token = bin2hex(random_bytes(256));
while ($this -> _db -> query("SELECT `id` FROM `main_user_auth` WHERE `token` = '$thumb_token';") -> num_rows!= 0)
$thumb_token = bin2hex(random_bytes(256));
$this -> _db -> query("UPDATE `main_user_auth` SET `token` = '$thumb_token' WHERE `id` = {$this -> _authId};");
return $this -> _encrypt -> encrypt($thumb_token);
}
} else
return "PASSWORD_DO_NOT_MATCH";
} else
return "USER_NOT_FOUND";
} else
return "EMPTY_LOGIN_OR_PASSWORD";
}
public function exit() {
if (!empty($this -> _authId)) {
$this -> _db -> query("UPDATE `main_user_auth` SET `token` = NULL WHERE `id` = {$this -> _authId};");
$this -> _authId = NULL;
return true;
} else
return false;
}
public function edit(array $data, int $userId = 0) {
if (!empty($this -> _authId)) {
if ($userId == 0)
$userId = $this -> _authId;
$userId = intval($userId);
$user = $this -> _db -> query("SELECT `main_users`.`id`, `lastname`, `firstname`, `patronymic`, `birthday`, `email`, `telephone`, `login`, `password`, `levels` FROM `main_users` INNER JOIN `main_user_auth` ON `main_user_auth`.`usersId` = `main_users`.`id` WHERE `main_user_auth`.`id` = {$userId};");
if ($user -> num_rows!= 0) {
$sql = [
"auth" => "",
"user" => "",
];
$user = $user -> fetch_assoc();
if (!empty($data["login"])) {
$data["login"] = hash("SHA256", $data["login"]);
if ($this -> _db -> query("SELECT `id` FROM `main_user_auth` WHERE `login` = '{$data["login"]}';") -> num_rows!= 0) {
return "LOGIN_IS_NOT_UNIQUE";
exit;
}
$sql["auth"].= "`login` = '{$data["login"]}', ";
}
if (!empty($data["password"])) {
if (strlen($data["password"]) < 8) {
return "PASSWORD_IS_TINY";
exit;
}
$data["password"] = password_hash($data["password"], PASSWORD_DEFAULT);
$sql["auth"].= "`password` = '{$data["password"]}', ";
}
if (!empty($data["levels"]) && $this -> _authId!= 1) {
if (!is_array($data["levels"])) {
return "LEVELS_MUST_BE_ARRAY";
exit;
}
$data["levels"] = $this -> _encrypt -> encrypt(json_encode($data["levels"]));
$sql["auth"].= "`levels` = '{$data["levels"]}', ";
}
if (!empty($data["lastname"])) {
$data["lastname"] = $this -> _encrypt -> encrypt($data["lastname"]);
$sql["user"].= "`lastname` = '{$data["lastname"]}', ";
}
if (!empty($data["firstname"])) {
$data["firstname"] = $this -> _encrypt -> encrypt($data["firstname"]);
$sql["user"].= "`firstname` = '{$data["firstname"]}', ";
}
if (!empty($data["patronymic"])) {
$data["patronymic"] = $this -> _encrypt -> encrypt($data["patronymic"]);
$sql["user"].= "`patronymic` = '{$data["patronymic"]}', ";
}
if (!empty($data["birthday"])) {
$data["birthday"] = $this -> _encrypt -> encrypt($data["birthday"]);
$sql["user"].= "`birthday` = '{$data["birthday"]}', ";
}
if (!empty($data["email"])) {
$data["email"] = $this -> _encrypt -> encrypt($data["email"]);
$sql["user"].= "`email` = '{$data["email"]}', ";
}
if (!empty($data["telephone"])) {
$data["telephone"] = $this -> _encrypt -> encrypt($data["telephone"]);
$sql["user"].= "`telephone` = '{$data["telephone"]}', ";
}
if (!empty($sql["auth"])) {
$sql["auth"] = substr($sql["auth"], 0, -2);
$this -> _db -> query("UPDATE `main_user_auth` SET {$sql["auth"]} WHERE `id` = {$userId};");
}
if (!empty($sql["user"])) {
$sql["user"] = substr($sql["user"], 0, -2);
$this -> _db -> query("UPDATE `main_users` SET {$sql["user"]} WHERE `id` = {$user["id"]};");
}
return "OK";
} else
return "USER_IS_NOT_FOUND";
} else
return false;
}
public function check_level(int $level) {
if (!empty($this -> _authId)) {
$levels = json_decode($this -> _encrypt -> decrypt($this -> _db -> query("SELECT `levels` FROM `main_user_auth` WHERE `id` = {$this -> _authId};") -> fetch_assoc()["levels"]));
return in_array($level, $levels);
} else
return false;
}
public function getDecrypted() {
if (!empty($this -> _authId)) {
$user = $this -> _db -> query("SELECT `firstname`, `lastname`, `patronymic`, `birthday`, `email`, `telephone`, `levels` FROM `main_users` INNER JOIN `main_user_auth` ON `main_users`.`id` = `main_user_auth`.`usersId` WHERE `main_user_auth`.`id` = {$this -> _authId};");
$user = $user -> fetch_assoc();
$thumb = [
"firstname" => $this -> _encrypt -> decrypt($user["firstname"]),
"lastname" => $this -> _encrypt -> decrypt($user["lastname"]),
"patronymic" => $this -> _encrypt -> decrypt($user["patronymic"]),
"birthday" => $this -> _encrypt -> decrypt($user["birthday"]),
"email" => $this -> _encrypt -> decrypt($user["email"]),
"telephone" => $this -> _encrypt -> decrypt($user["telephone"]),
"levels" => json_decode($this -> _encrypt -> decrypt($user["levels"])),
];
return $thumb;
} else
return false;
}
public function register(array $data) {
if (!empty($this -> _authId)) {
if ($this -> check_level(0)) {
if (!empty($data["login"]) &&!empty($data["password"]) &&!empty($data["levels"]) &&!empty($data["firstname"]) &&!empty($data["lastname"]) &&!empty($data["birthday"]) &&!empty($data["email"]) &&!empty($data["telephone"])) {
if (strlen($data["password"]) > 8) {
$login = hash("SHA256", $data["login"]);
if ($this -> _db -> query("SELECT `id` FROM `main_user_auth` WHERE `login` = '$login';") -> num_rows == 0) {
$valid = [];
foreach (json_decode(file_get_contents(__DIR__. "/../configurations/json/levels.json")) as $value)
$valid[] = $value -> level;
$levels = [];
foreach ($data["levels"] as $value) {
if (in_array($value, $valid))
$levels[] = intval($value);
else {
return "LEVEL_OUT_OF_RANGE";
exit;
}
}
$thumb = [
"login" => $login,
"password" => password_hash($data["password"], PASSWORD_DEFAULT),
"levels" => $this -> _encrypt -> encrypt(json_encode($levels)),
"firstname" => $this -> _encrypt -> encrypt($data["firstname"]),
"lastname" => $this -> _encrypt -> encrypt($data["lastname"]),
"patronymic" => $this -> _encrypt -> encrypt($data["patronymic"]),
"birthday" => $this -> _encrypt -> encrypt($data["birthday"]),
"email" => $this -> _encrypt -> encrypt($data["email"]),
"telephone" => $this -> _encrypt -> encrypt($data["telephone"]),
];
$this -> _db -> query("INSERT INTO `main_users` (`firstname`, `lastname`, `patronymic`, `birthday`, `email`, `telephone`) VALUES ('$thumb[firstname]', '$thumb[lastname]', '$thumb[patronymic]', '$thumb[birthday]', '$thumb[email]', '$thumb[telephone]');");
$t_id = $this -> _db -> insert_id;
$this -> _db -> query("INSERT INTO `main_user_auth` (`login`, `password`, `levels`, `usersId`) VALUES ('$thumb[login]', '$thumb[password]', '$thumb[levels]', $t_id);");
return true;
} else
return "LOGIN_IS_NOT_UNIQUE";
} else
return "TINY_PASSWORD";
} else
return "SOME_DATA_IS_EMPTY";
} else
return "ACCESS_DENIED";
} else
return false;
}
public function delete($id) {
if (!empty($this -> _authId)) {
if ($this -> check_level(0)) {
$parsed = intval($id);
if ($parsed!= 1)
$this -> _db -> multi_query("DELETE FROM `main_user_auth` WHERE `usersId` = $parsed; DELETE FROM `main_users` WHERE `id` = $parsed;");
return true;
} else
return false;
} else
return false;
}
public function get_all_users() {
if (!empty($this -> _authId)) {
if ($this -> check_level(0)) {
$users = $this -> _db -> query("SELECT `main_users`.`id`, `firstname`, `lastname`, `patronymic`, `birthday`, `email`, `telephone`, `levels` FROM `main_users` INNER JOIN `main_user_auth` ON `main_users`.`id` = `main_user_auth`.`usersId`;");
$return = [];
while ($row = $users -> fetch_assoc()) {
$return[] = [
"id" => $row["id"],
"firstname" => $this -> _encrypt -> decrypt($row["firstname"]),
"lastname" => $this -> _encrypt -> decrypt($row["lastname"]),
"patronymic" => $this -> _encrypt -> decrypt($row["patronymic"]),
"birthday" => $this -> _encrypt -> decrypt($row["birthday"]),
"email" => $this -> _encrypt -> decrypt($row["email"]),
"telephone" => $this -> _encrypt -> decrypt($row["telephone"]),
"levels" => json_decode($this -> _encrypt -> decrypt($row["levels"])),
];
}
return $return;
} else
return false;
} else
return false;
}
public function check_login(string $_login) {
if (!empty($this -> _authId)) {
if ($this -> check_level(0)) {
$login = hash("SHA256", $data["login"]);
if ($this -> _db -> query("SELECT `id` FROM `main_user_auth` WHERE `login` = '$login';") -> num_rows == 0)
return true;
else
return false;
} else
return false;
} else
return false;
}
}
?>