- Исправлено выпадающее меню профиля (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-эндпоинтах
95 lines
3.9 KiB
PHP
95 lines
3.9 KiB
PHP
<?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);
|
||
}
|
||
|