feat: Add DatabaseManager and LinkPlayer components, implement authentication and linking logic

- Created DatabaseManager component for managing database access via phpMyAdmin.
- Developed LinkPlayer component to link Discord accounts with game characters, including user authentication and error handling.
- Added mock data files for players, organizations, and projects to handle backend unavailability.
- Implemented AuthService for managing user authentication and session checks.
- Created DatabaseService to fetch and manage player, organization, and project data with fallback to mock data.
- Added HTML page for handling authentication unavailability.
- Developed a test script for validating Docker setup and required files.
This commit is contained in:
Lars Behrends
2025-12-28 16:46:04 +01:00
parent 6abdffe22a
commit d3d7ec46e6
40 changed files with 5967 additions and 102 deletions

77
docker-compose.yml Normal file
View File

@@ -0,0 +1,77 @@
services:
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
labels:
- traefik.enable=true
- traefik.http.routers.vollidioten.rule=Host(`vollidioten.ceraticsoft.de`)
- traefik.http.routers.vollidioten.entrypoints=websecure
- traefik.http.routers.vollidioten.tls.certresolver=lets-encrypt
- traefik.http.services.vollidioten.loadbalancer.server.port=80
networks:
- external_web
- default
depends_on:
- backend
restart: always
backend:
build:
context: .
dockerfile: Dockerfile.backend
environment:
- DISCORD_CLIENT_ID=${DISCORD_CLIENT_ID}
- DISCORD_CLIENT_SECRET=${DISCORD_CLIENT_SECRET}
- SESSION_SECRET=${SESSION_SECRET}
- CALLBACK_URL=https://vollidioten.ceraticsoft.de/auth/discord/callback
- FRONTEND_URL=https://vollidioten.ceraticsoft.de
- DB_HOST=${DB_HOST:-db}
- DB_USER=${DB_USER:-obsidian_user}
- DB_PASS=${DB_PASS:-obsidian_pass}
- DB_NAME=${DB_NAME:-obsidian_db}
restart: always
networks:
- external_web
- default
#db:
# image: mysql:8.0
# command: --default-authentication-plugin=mysql_native_password
# restart: always
# environment:
# MYSQL_DATABASE: obsidian_db
# MYSQL_USER: obsidian_user
# MYSQL_PASSWORD: obsidian_pass
# MYSQL_ROOT_PASSWORD: root_secret_pass
# volumes:
# - db_data:/var/lib/mysql
# networks:
# - default
db:
image: mariadb:latest
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: fgterherthethehdfghfghdfghdfgh
MYSQL_DATABASE: obsidian_db
MYSQL_USER: obsidian_user
MYSQL_PASSWORD: obsidian_pass
volumes:
- ./database:/var/lib/mysql
networks:
- default
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8081:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: root_secret_pass
depends_on:
- db
networks:
- default
networks:
external_web:
external: true
volumes:
db_data: null