From 57d49bcf788d36b7056053c1e1394dbb98b9ec21 Mon Sep 17 00:00:00 2001 From: Lukas Pupka-Lipinski Date: Mon, 6 Oct 2025 13:32:35 +0200 Subject: [PATCH] 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 --- data/aniworld.db | Bin 106496 -> 8192 bytes data/cache.db | Bin 20480 -> 12288 bytes data/config.json | 10 +++-- data/user_preferences.json | 48 --------------------- logs/aniworld.log | 29 +++++++++++++ src/server/fastapi_app.py | 51 +++++++++++++++++++++++ src/server/web/templates/base/setup.html | 4 +- 7 files changed, 90 insertions(+), 52 deletions(-) delete mode 100644 data/user_preferences.json diff --git a/data/aniworld.db b/data/aniworld.db index a0291282c3d80e2c758f61f534c527fd11e8e5a4..739aa1463fdee8294776fe228648b44c40a7031e 100644 GIT binary patch delta 273 zcmZoTz}Da}L0XWBfq?;pVSsU>jxj$IgI<>qFHne)U!H+qezTy$M!uNFI7W7HMMcJD z_L9V;oYdmflG1|s%)GRG1dGWz$kj2#RUyRD$;VXzA+DgorGN)yrc5s2*AjxMfaps} zEJ>Z5$SH0E69&;`sYS(^`FRQKYp8 c8kmI`8d@1ySQ#1VnVMRf8JQdE8R!`R0PYVu^Z)<= literal 106496 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 K0T4Jj1pWsx$J(+0 diff --git a/data/cache.db b/data/cache.db index adc45f2c18d2ebf6fdab935da1be5613c25618e8..15f318bdd27d5e06231373f110d087042817a95f 100644 GIT binary patch delta 228 zcmZozz}S#5L0XWJfq{V;h+%+nqK+|8P_Ijfm;VO?6W;{}z6<W}S$Q>^PmGh##DNF`@j^-=L?gd;^J}$= zxVZ}Q*I;A+uWds-{&v5;|5G&EM%+{T-`hX(4GRGT5I_I{1Q0*~0R#}Jqd?Ydg^xPH z=LhL@WS8k^sZEmDEYrzsF?ESauC2CHH&1Q0do)y0tYq)xSe?tiQ{~$e>7^fTKB&7V zH`b)l3cGpH@J~^@yh-Oa)5b5^+$y8d+m6=!R*y_O&|7C7YAs=0=UaO%zR{a8M!etMREvikDY*=+TR>b!|{W@MZxTiWWn z`+Vn4IOqhToO1SYoS)>iS-4plYfoN3^}^yTf4BI%wTs(9abqEX00IagfB*srAb 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) diff --git a/src/server/web/templates/base/setup.html b/src/server/web/templates/base/setup.html index b4e1a95..2ac40de 100644 --- a/src/server/web/templates/base/setup.html +++ b/src/server/web/templates/base/setup.html @@ -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');