Files
web_work/migrations/grant_admin.php
kirill.khorkov 29b9aaac50 Исправление багов авторизации, корзины и админки
- Исправлено выпадающее меню профиля (hover-баг с margin-top)
- Исправлена авторизация: правильные пути к API (api/auth.php)
- Исправлены ссылки на админку (admin/index.php вместо admin_panel.php)
- Исправлены пути API корзины в catalog.php и checkout.php
- Добавлена форма добавления/редактирования товаров в админке
- Исправлены кнопки +/- в корзине (улучшена обработка AJAX)
- Исправлена регистрация: правильные пути и обработка boolean в PostgreSQL
- Добавлена миграция для назначения прав админа пользователю admin@mail.ru
- Удален тестовый блок 'Быстрый вход' для неавторизованных пользователей
- Улучшена обработка ошибок во всех API-эндпоинтах
2025-12-16 02:58:44 +03:00

95 lines
3.9 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
/**
* Быстрый скрипт для назначения прав администратора пользователю admin@mail.ru
* Запуск: php migrations/grant_admin.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";
// Создаем пользователя с правами админа
// Пароль по умолчанию: admin123
$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);
}