Merge pull request #47 from diegosouzapw/fix/vm-onboarding-auth

fix: auto-skip onboarding and enforce login on VM deployments
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-02-16 11:25:06 -03:00
committed by GitHub
5 changed files with 24 additions and 6 deletions

2
.gitignore vendored
View File

@@ -80,3 +80,5 @@ test-results/
playwright-report/
blob-report/
cloud/
omnirouteCloud/
omnirouteSite/

View File

@@ -13,7 +13,7 @@ export async function GET() {
return NextResponse.json({
...safeSettings,
enableRequestLogs,
hasPassword: !!password,
hasPassword: !!password || !!process.env.INITIAL_PASSWORD,
});
} catch (error) {
console.log("Error getting settings:", error);

View File

@@ -108,9 +108,11 @@ export default function LoginPage() {
Login
</Button>
<p className="text-xs text-center text-text-muted mt-2">
Default password is <code className="bg-sidebar px-1 rounded">123456</code>
</p>
{!hasPassword && (
<p className="text-xs text-center text-text-muted mt-2">
Default password is <code className="bg-sidebar px-1 rounded">123456</code>
</p>
)}
<p className="text-xs text-center mt-1">
<a href="/forgot-password" className="text-primary hover:underline">

View File

@@ -15,6 +15,20 @@ export async function getSettings() {
for (const row of rows) {
settings[row.key] = JSON.parse(row.value);
}
// Auto-complete onboarding for pre-configured deployments (Docker/VM)
// If INITIAL_PASSWORD is set via env, this is a headless deploy — skip the wizard
if (!settings.setupComplete && process.env.INITIAL_PASSWORD) {
settings.setupComplete = true;
settings.requireLogin = true;
db.prepare(
"INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'setupComplete', 'true')"
).run();
db.prepare(
"INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'requireLogin', 'true')"
).run();
}
return settings;
}

View File

@@ -49,9 +49,9 @@ export async function proxy(request) {
if (settings.requireLogin === false) {
return response;
}
// Skip auth if no password has been set yet (fresh install)
// Skip auth if no password has been set yet (fresh install with no env override)
// This prevents an unresolvable loop where requireLogin=true but no password exists
if (!settings.password) {
if (!settings.password && !process.env.INITIAL_PASSWORD) {
return response;
}
} catch (err) {