Fix setup to login redirect issue

- Fix setup.html to use redirect_url from API response instead of hardcoded '/'
- Add database creation (aniworld.db, cache.db) during setup process
- Setup now properly creates all required files for validation
- After setup completion, users are correctly redirected to /login
- Tested: setup API returns correct redirect_url, database files created, redirect works
This commit is contained in:
Lukas Pupka-Lipinski 2025-10-06 13:32:35 +02:00
parent 6d0c3fdf26
commit 57d49bcf78
7 changed files with 90 additions and 52 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,13 +1,13 @@
{
"security": {
"master_password_hash": "1353f6d9db7090c302864c2d6437dc11cc96cd66d59d7737d1b345603fdbdfda",
"salt": "a25e23440d681cef2d75c0adb6de0913359a1d8b9f98f9747fc75f53c79c4bd4",
"master_password_hash": "bab56314cf756abaa50615a4e5594683d0e5ce5ac1e051bc9eec683056eeacb0",
"salt": "salt_change_in_production_abcdef",
"session_timeout_hours": 24,
"max_failed_attempts": 5,
"lockout_duration_minutes": 30
},
"anime": {
"directory": "\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien",
"directory": "C:\\test\\anime",
"download_threads": 3,
"download_speed_limit": null,
"auto_rescan_time": "03:00",
@ -45,5 +45,9 @@
"read_timeout": 300,
"enable_debug_mode": false,
"cache_duration_minutes": 60
},
"setup": {
"completed": true,
"completed_at": "2025-10-06 11:28:22.571378"
}
}

View File

@ -1,48 +0,0 @@
{
"ui": {
"theme": "auto",
"density": "comfortable",
"language": "en",
"animations_enabled": true,
"sidebar_collapsed": false,
"grid_view": true,
"items_per_page": 20
},
"downloads": {
"auto_download": false,
"download_quality": "best",
"concurrent_downloads": 3,
"retry_failed": true,
"notification_sound": true,
"auto_organize": true
},
"notifications": {
"browser_notifications": true,
"email_notifications": false,
"webhook_notifications": false,
"notification_types": {
"download_complete": true,
"download_error": true,
"series_updated": false,
"system_alerts": true
}
},
"keyboard_shortcuts": {
"enabled": true,
"shortcuts": {
"search": "ctrl+f",
"download": "ctrl+d",
"refresh": "f5",
"select_all": "ctrl+a",
"help": "f1",
"settings": "ctrl+comma"
}
},
"advanced": {
"debug_mode": false,
"performance_mode": false,
"cache_enabled": true,
"auto_backup": true,
"log_level": "info"
}
}

View File

@ -9913,3 +9913,32 @@
2025-10-06 12:50:42,533 - src.server.fastapi_app - INFO - Starting AniWorld FastAPI server...
2025-10-06 12:50:42,533 - src.server.fastapi_app - INFO - Anime directory: ./downloads
2025-10-06 12:50:42,533 - src.server.fastapi_app - INFO - Log level: INFO
2025-10-06 12:55:41,451 - src.server.fastapi_app - INFO - Shutting down AniWorld FastAPI server...
2025-10-06 12:55:42,311 - src.server.fastapi_app - INFO - Starting AniWorld FastAPI server...
2025-10-06 12:55:42,312 - src.server.fastapi_app - INFO - Anime directory: ./downloads
2025-10-06 12:55:42,312 - src.server.fastapi_app - INFO - Log level: INFO
2025-10-06 12:55:43,204 - src.server.fastapi_app - INFO - Starting AniWorld FastAPI server...
2025-10-06 12:55:43,204 - src.server.fastapi_app - INFO - Anime directory: ./downloads
2025-10-06 12:55:43,204 - src.server.fastapi_app - INFO - Log level: INFO
2025-10-06 13:00:01,863 - src.server.middleware.application_flow_middleware - INFO - Redirecting / to /login
2025-10-06 13:00:08,924 - src.server.fastapi_app - INFO - Shutting down AniWorld FastAPI server...
2025-10-06 13:00:52,777 - src.server.fastapi_app - INFO - Starting AniWorld FastAPI server...
2025-10-06 13:00:52,777 - src.server.fastapi_app - INFO - Anime directory: ./downloads
2025-10-06 13:00:52,777 - src.server.fastapi_app - INFO - Log level: INFO
2025-10-06 13:00:59,094 - src.server.services.setup_service - INFO - Setup incomplete: Configuration file is missing or invalid
2025-10-06 13:00:59,094 - src.server.middleware.application_flow_middleware - INFO - Redirecting / to /setup
2025-10-06 13:00:59,102 - src.server.services.setup_service - INFO - Setup incomplete: Configuration file is missing or invalid
2025-10-06 13:05:05,978 - src.server.services.setup_service - INFO - Setup incomplete: Configuration file is missing or invalid
2025-10-06 13:05:05,979 - src.server.services.setup_service - INFO - Configuration saved to data\config.json
2025-10-06 13:05:05,980 - src.server.fastapi_app - INFO - Application setup completed successfully
2025-10-06 13:05:08,005 - src.server.services.setup_service - INFO - Setup incomplete: Database is not accessible
2025-10-06 13:05:08,005 - src.server.middleware.application_flow_middleware - INFO - Redirecting / to /setup
2025-10-06 13:05:08,013 - src.server.services.setup_service - INFO - Setup incomplete: Database is not accessible
2025-10-06 13:05:42,111 - src.server.services.setup_service - INFO - Setup incomplete: Database is not accessible
2025-10-06 13:05:42,112 - src.server.middleware.application_flow_middleware - INFO - Redirecting / to /setup
2025-10-06 13:05:42,120 - src.server.services.setup_service - INFO - Setup incomplete: Database is not accessible
2025-10-06 13:05:54,326 - src.server.fastapi_app - INFO - Shutting down AniWorld FastAPI server...
2025-10-06 13:06:51,970 - src.server.fastapi_app - INFO - Starting AniWorld FastAPI server...
2025-10-06 13:06:51,970 - src.server.fastapi_app - INFO - Anime directory: ./downloads
2025-10-06 13:06:51,970 - src.server.fastapi_app - INFO - Log level: INFO
2025-10-06 13:16:44,402 - src.server.fastapi_app - INFO - Shutting down AniWorld FastAPI server...

View File

@ -500,6 +500,57 @@ async def process_setup(request_data: SetupRequest) -> SetupResponse:
}
}
# Create database files if they don't exist
try:
db_path = Path("data/aniworld.db")
cache_db_path = Path("data/cache.db")
# Ensure data directory exists
db_path.parent.mkdir(parents=True, exist_ok=True)
# Create empty database files if they don't exist
if not db_path.exists():
import sqlite3
with sqlite3.connect(str(db_path)) as conn:
cursor = conn.cursor()
# Create a basic table to make the database valid
cursor.execute("""
CREATE TABLE IF NOT EXISTS setup_info (
id INTEGER PRIMARY KEY,
setup_date TEXT,
version TEXT
)
""")
cursor.execute("""
INSERT INTO setup_info (setup_date, version)
VALUES (?, ?)
""", (datetime.utcnow().isoformat(), "1.0.0"))
conn.commit()
logger.info("Created aniworld.db")
if not cache_db_path.exists():
import sqlite3
with sqlite3.connect(str(cache_db_path)) as conn:
cursor = conn.cursor()
# Create a basic cache table
cursor.execute("""
CREATE TABLE IF NOT EXISTS cache (
id INTEGER PRIMARY KEY,
key TEXT UNIQUE,
value TEXT,
created_at TEXT
)
""")
conn.commit()
logger.info("Created cache.db")
except Exception as e:
logger.error(f"Failed to create database files: {e}")
return SetupResponse(
status="error",
message=f"Failed to create database files: {str(e)}"
)
# Mark setup as complete and save configuration
success = setup_service.mark_setup_complete(config_updates)

View File

@ -513,7 +513,9 @@
if (data.status === 'success') {
showMessage('Setup completed successfully! Redirecting...', 'success');
setTimeout(() => {
window.location.href = '/';
// Use redirect_url from API response, fallback to /login
const redirectUrl = data.redirect_url || '/login';
window.location.href = redirectUrl;
}, 2000);
} else {
showMessage(data.message, 'error');