first commit

This commit is contained in:
2026-03-11 22:04:36 +04:00
commit bae063a4fa
69 changed files with 12411 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
# Moonwell Web
Laravel 12-приложение с WoW-лендингом и публичной регистрацией игрового аккаунта напрямую в auth-базу AzerothCore.
## Что уже сделано
- Развёрнут Laravel `v12.12.1` со свежим `laravel/framework v12.x`.
- Главная страница оформлена в тёмной cinematic-стилистике с компоновкой, вдохновлённой официальным сайтом WoW.
- Форма регистрации создаёт аккаунт напрямую в `acore_auth` через отдельное соединение `azerothcore_auth`.
- При регистрации заполняются таблицы `account`, `realmcharacters` и `account_access`.
- Проект подготовлен под Laravel Sail: приложение работает в контейнере, а AzerothCore auth DB берётся с хоста через `host.docker.internal:3306`.
## Как запускать через Sail
```bash
cp .env.example .env
./vendor/bin/sail up -d
./vendor/bin/sail composer install
./vendor/bin/sail artisan key:generate
./vendor/bin/sail artisan migrate
```
Сайт будет доступен на `http://localhost:8080`.
## Деплой на Ubuntu
Скрипт деплоя лежит в `scripts/deploy-ubuntu.sh`. Он рассчитан на сервер, где уже установлены:
- `docker`
- `docker compose`
Перед первым запуском проверь `.env`:
- `APP_URL`
- `APP_PORT`
- `FORWARD_DB_PORT`
- `AZEROTHCORE_AUTH_DB_HOST`
- `AZEROTHCORE_AUTH_DB_PORT`
- `AZEROTHCORE_AUTH_DB_DATABASE`
- `AZEROTHCORE_AUTH_DB_USERNAME`
- `AZEROTHCORE_AUTH_DB_PASSWORD`
Запуск:
```bash
chmod +x scripts/deploy-ubuntu.sh
./scripts/deploy-ubuntu.sh
```
Что делает скрипт:
- создаёт `.env` из `.env.example`, если файла ещё нет;
- собирает контейнер приложения;
- ставит production-зависимости Composer;
- генерирует `APP_KEY`, если он пустой;
- поднимает контейнеры;
- ждёт готовности MySQL;
- выполняет `php artisan migrate --force`;
- прогревает `config`, `route` и `view` кэш.
Полезные флаги:
```bash
./scripts/deploy-ubuntu.sh --skip-build
./scripts/deploy-ubuntu.sh --skip-cache
```
## Как это связано с AzerothCore
По умолчанию Sail-контейнер подключается к auth-базе core-сервера так:
- хост: `host.docker.internal`
- порт: `3306`
- база: `acore_auth`
- пользователь: `root`
- пароль: `password`
Это рассчитано на вашу docker-сборку из `/home/sindo/moonwell-core`, где MySQL опубликован наружу на порт `3306`.
## Важные переменные
Основные настройки лежат в `.env.example`:
- `APP_PORT=8080`
- `FORWARD_DB_PORT=3307`
- `DB_HOST=mysql`
- `AZEROTHCORE_AUTH_DB_HOST=host.docker.internal`
- `AZEROTHCORE_AUTH_DB_PORT=3306`
- `AZEROTHCORE_AUTH_DB_DATABASE=acore_auth`
- `AZEROTHCORE_AUTH_DB_USERNAME=root`
- `AZEROTHCORE_AUTH_DB_PASSWORD=password`
## Архитектура
- `compose.yaml` — Sail-окружение с `laravel.test` и локальным MySQL для самого сайта.
- `config/database.php` — отдельное соединение `azerothcore_auth`.
- `config/moonwell.php` — настройки realm/landing и регистрации.
- `app/Services/AzerothCoreAccountRegistrar.php` — SRP6-совместимое создание учётной записи AzerothCore.
- `app/Http/Controllers/LandingController.php` — данные лендинга и обработка формы.
## Проверка
Вне Sail я уже проверил:
- рендер лендинга по HTTP;
- компиляцию Blade;
- маршруты;
- ручную валидацию `POST /register`;
- совпадение SRP6 verifier с формулой AzerothCore.
Для полноценного `php artisan test` внутри контейнера используйте:
```bash
./vendor/bin/sail artisan test
```