Files
web_work/migrations/grant_admin.php
kirill.khorkov 8a93cf8657 Delete comment
2025-12-16 19:18:03 +03:00

86 lines
3.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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);
}