mirror of
https://github.com/ceratic/project_vollidioten_website.git
synced 2026-05-14 00:16:47 +02:00
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:
70
public/auth-unavailable.html
Normal file
70
public/auth-unavailable.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Authentifizierung nicht verfügbar</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #1a1a1a;
|
||||
color: #ffffff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
}
|
||||
.container {
|
||||
text-align: center;
|
||||
max-width: 600px;
|
||||
padding: 20px;
|
||||
}
|
||||
h1 {
|
||||
color: #ff5555;
|
||||
}
|
||||
.logo {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.button {
|
||||
background-color: #ff5555;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.button:hover {
|
||||
background-color: #ff3333;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Authentifizierung nicht verfügbar</h1>
|
||||
<p>Der Authentifizierungsdienst ist derzeit nicht erreichbar. Bitte versuchen Sie es später erneut.</p>
|
||||
<p>Sie können die Anwendung weiterhin im Nur-Lese-Modus verwenden.</p>
|
||||
<button class="button" onclick="window.location.href='/'">Zurück zur Startseite</button>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<task_progress>
|
||||
- [x] Analyze current project structure and requirements
|
||||
- [x] Examine existing docker-compose.yml
|
||||
- [x] Check backend and frontend configuration
|
||||
- [x] Create Dockerfile for frontend
|
||||
- [x] Create Dockerfile for backend
|
||||
- [x] Create nginx configuration with fallback
|
||||
- [x] Create mock data files
|
||||
- [x] Update docker-compose.yml with Traefik integration
|
||||
- [x] Implement backend fallback mechanism in frontend
|
||||
- [ ] Update frontend Dockerfile to include public folder
|
||||
- [ ] Test the setup
|
||||
</task_progress>
|
||||
</write_to_file>
|
||||
14
public/mock/orgs.json
Normal file
14
public/mock/orgs.json
Normal file
@@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Mock Organization",
|
||||
"description": "This is a mock organization that appears when the backend is unavailable.",
|
||||
"leader": "DrKButz",
|
||||
"members": ["8984c0b5-d912-4462-b189-c864fba4a1af"],
|
||||
"gallery": [],
|
||||
"cityStats": {
|
||||
"influence": 50,
|
||||
"reputation": 75
|
||||
}
|
||||
}
|
||||
]
|
||||
37
public/mock/players.json
Normal file
37
public/mock/players.json
Normal file
@@ -0,0 +1,37 @@
|
||||
[
|
||||
{
|
||||
"uuid": "8984c0b5-d912-4462-b189-c864fba4a1af",
|
||||
"name": "DrKButz",
|
||||
"discordId": "mock_discord_id",
|
||||
"storyMarkdown": "# Mock Player Story\n\nThis is a mock player story that appears when the backend is unavailable.",
|
||||
"tags": ["admin", "developer"],
|
||||
"stats": {
|
||||
"health": 100,
|
||||
"armor": 50,
|
||||
"money": 10000
|
||||
},
|
||||
"inventory": [
|
||||
{"id": "weapon_pistol", "name": "Pistol", "quantity": 1},
|
||||
{"id": "item_medkit", "name": "Medkit", "quantity": 3}
|
||||
],
|
||||
"isOnline": false,
|
||||
"lastSeen": "2025-01-01T12:00:00Z"
|
||||
},
|
||||
{
|
||||
"uuid": "123e4567-e89b-12d3-a456-426614174000",
|
||||
"name": "TestPlayer",
|
||||
"discordId": null,
|
||||
"storyMarkdown": "# Test Player\n\nThis is a test player for mock data purposes.",
|
||||
"tags": ["player"],
|
||||
"stats": {
|
||||
"health": 80,
|
||||
"armor": 30,
|
||||
"money": 5000
|
||||
},
|
||||
"inventory": [
|
||||
{"id": "item_food", "name": "Food", "quantity": 5}
|
||||
],
|
||||
"isOnline": true,
|
||||
"lastSeen": "2025-01-01T10:00:00Z"
|
||||
}
|
||||
]
|
||||
13
public/mock/projects.json
Normal file
13
public/mock/projects.json
Normal file
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Mock Project",
|
||||
"description": "This is a mock project that appears when the backend is unavailable.",
|
||||
"leader": "DrKButz",
|
||||
"employees": ["8984c0b5-d912-4462-b189-c864fba4a1af"],
|
||||
"shopCatalog": [],
|
||||
"gallery": [],
|
||||
"hiring": false,
|
||||
"status": "active"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user