86 lines
3.4 KiB
PHP
86 lines
3.4 KiB
PHP
<?php
|
||
|
||
require_once __DIR__ . '/../config/database.php';
|
||
|
||
echo "===========================================\n";
|
||
echo " Назначение прав администратора\n";
|
||
echo "===========================================\n\n";
|
||
|
||
try {
|
||
$db = Database::getInstance()->getConnection();
|
||
echo "[OK] Подключение к базе данных успешно\n\n";
|
||
|
||
$email = 'admin@mail.ru';
|
||
|
||
$checkStmt = $db->prepare("SELECT user_id, email, full_name, is_admin, is_active FROM users WHERE email = ?");
|
||
$checkStmt->execute([$email]);
|
||
$user = $checkStmt->fetch(PDO::FETCH_ASSOC);
|
||
|
||
if ($user) {
|
||
echo "[INFO] Найден пользователь:\n";
|
||
echo " Email: {$user['email']}\n";
|
||
echo " ФИО: {$user['full_name']}\n";
|
||
echo " Админ: " . ($user['is_admin'] ? 'ДА' : 'НЕТ') . "\n";
|
||
echo " Активен: " . ($user['is_active'] ? 'ДА' : 'НЕТ') . "\n\n";
|
||
|
||
if ($user['is_admin']) {
|
||
echo "[INFO] Пользователь уже имеет права администратора\n";
|
||
} else {
|
||
|
||
$updateStmt = $db->prepare("
|
||
UPDATE users
|
||
SET is_admin = TRUE,
|
||
is_active = TRUE,
|
||
updated_at = CURRENT_TIMESTAMP
|
||
WHERE email = ?
|
||
");
|
||
$updateStmt->execute([$email]);
|
||
|
||
echo "[SUCCESS] Права администратора успешно назначены!\n";
|
||
}
|
||
} else {
|
||
echo "[WARN] Пользователь с email $email не найден\n";
|
||
echo "[INFO] Создаю нового пользователя с правами администратора...\n";
|
||
|
||
$password_hash = password_hash('admin123', PASSWORD_DEFAULT);
|
||
|
||
$insertStmt = $db->prepare("
|
||
INSERT INTO users (email, password_hash, full_name, phone, city, is_admin, is_active)
|
||
VALUES (?, ?, ?, ?, ?, CAST(? AS boolean), TRUE)
|
||
RETURNING user_id
|
||
");
|
||
|
||
$insertStmt->execute([
|
||
$email,
|
||
$password_hash,
|
||
'Администратор',
|
||
'+79129991223',
|
||
'Москва',
|
||
'true'
|
||
]);
|
||
|
||
$user_id = $insertStmt->fetchColumn();
|
||
echo "[SUCCESS] Пользователь создан с ID: $user_id\n";
|
||
echo "[INFO] Email: $email\n";
|
||
echo "[INFO] Пароль по умолчанию: admin123\n";
|
||
echo "[WARN] Рекомендуется сменить пароль после первого входа!\n";
|
||
}
|
||
|
||
$verifyStmt = $db->prepare("SELECT user_id, email, full_name, is_admin, is_active FROM users WHERE email = ?");
|
||
$verifyStmt->execute([$email]);
|
||
$finalUser = $verifyStmt->fetch(PDO::FETCH_ASSOC);
|
||
|
||
echo "\n===========================================\n";
|
||
echo " Итоговый статус:\n";
|
||
echo "===========================================\n";
|
||
echo " Email: {$finalUser['email']}\n";
|
||
echo " ФИО: {$finalUser['full_name']}\n";
|
||
echo " Админ: " . ($finalUser['is_admin'] ? 'ДА ✓' : 'НЕТ ✗') . "\n";
|
||
echo " Активен: " . ($finalUser['is_active'] ? 'ДА ✓' : 'НЕТ ✗') . "\n";
|
||
echo "===========================================\n";
|
||
|
||
} catch (PDOException $e) {
|
||
echo "[ERROR] Ошибка: " . $e->getMessage() . "\n";
|
||
exit(1);
|
||
}
|