Исправление багов авторизации, корзины и админки
- Исправлено выпадающее меню профиля (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-эндпоинтах
This commit is contained in:
94
migrations/grant_admin.php
Normal file
94
migrations/grant_admin.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user