Skip to content

Commit 7f261c3

Browse files
committed
Fix DB auth foundation seed ownership, grouped DDL DML artifacts, guest seed data, reseed routing, and DB Viewer ordering - PR_26164_101-db-auth-foundation-fixes
1 parent 603a22a commit 7f261c3

56 files changed

Lines changed: 2251 additions & 3932 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

account/create-account.html

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>Create Account - GameFoundryStudio</title>
8+
<meta name="description" content="Create a GameFoundryStudio account.">
9+
<link rel="icon" href="/favicon.svg">
10+
<link rel="stylesheet" href="../assets/theme-v2/css/theme.css">
11+
</head>
12+
13+
<body>
14+
<div data-partial="header-nav"></div>
15+
<main>
16+
<section class="page-title">
17+
<div class="container">
18+
<div class="kicker">Account</div>
19+
<h1>Create Account</h1>
20+
<p class="lede">Create a GameFoundryStudio account.</p>
21+
</div>
22+
</section>
23+
<section class="section">
24+
<div class="container">
25+
<div class="card">
26+
<div class="card-body content-stack">
27+
<div>
28+
<div class="kicker">Coming Soon</div>
29+
<h2>Account Creation</h2>
30+
</div>
31+
<p>Account creation will be available with the production auth provider.</p>
32+
<div class="action-group">
33+
<a class="btn primary" href="sign-in.html">Back to Sign In</a>
34+
</div>
35+
</div>
36+
</div>
37+
</div>
38+
</section>
39+
</main>
40+
<div data-partial="footer"></div>
41+
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
42+
</body>
43+
44+
</html>

account/lost-password.html

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>Lost Password - GameFoundryStudio</title>
8+
<meta name="description" content="Recover access to your GameFoundryStudio account.">
9+
<link rel="icon" href="/favicon.svg">
10+
<link rel="stylesheet" href="../assets/theme-v2/css/theme.css">
11+
</head>
12+
13+
<body>
14+
<div data-partial="header-nav"></div>
15+
<main>
16+
<section class="page-title">
17+
<div class="container">
18+
<div class="kicker">Account</div>
19+
<h1>Lost Password</h1>
20+
<p class="lede">Recover access to your GameFoundryStudio account.</p>
21+
</div>
22+
</section>
23+
<section class="section">
24+
<div class="container">
25+
<div class="card">
26+
<div class="card-body content-stack">
27+
<div>
28+
<div class="kicker">Coming Soon</div>
29+
<h2>Password Reset</h2>
30+
</div>
31+
<p>Password reset will be available with the production auth provider. No reset tokens are stored in this build.</p>
32+
<div class="action-group">
33+
<a class="btn primary" href="sign-in.html">Back to Sign In</a>
34+
</div>
35+
</div>
36+
</div>
37+
</div>
38+
</section>
39+
</main>
40+
<div data-partial="footer"></div>
41+
<script src="../assets/theme-v2/js/gamefoundry-partials.js" defer></script>
42+
</body>
43+
44+
</html>

account/sign-in.html

Lines changed: 21 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta charset="utf-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1">
77
<title>Sign In - GameFoundryStudio</title>
8-
<meta name="description" content="Choose a local development session for GameFoundryStudio.">
8+
<meta name="description" content="Sign in to your GameFoundryStudio account.">
99
<link rel="icon" href="/favicon.svg">
1010
<link rel="stylesheet" href="../assets/theme-v2/css/theme.css">
1111
</head>
@@ -15,57 +15,36 @@
1515
<main>
1616
<section class="page-title">
1717
<div class="container">
18-
<div class="kicker">Session</div>
18+
<div class="kicker">Account</div>
1919
<h1>Sign In</h1>
20-
<p class="lede">Use the Local DB-backed development session for project data.</p>
20+
<p class="lede">Access your GameFoundryStudio account.</p>
2121
</div>
2222
</section>
2323
<section class="section">
2424
<div class="container content-stack">
25-
<div class="account-panel">
26-
<aside class="side-menu" aria-label="Session mode">
27-
<button class="btn btn--compact" type="button" data-login-mode="local-db">Local DB</button>
28-
<p class="status" role="status" data-login-mode-disabled-message hidden>Use the API-backed local server for sign-in. Run npm run dev:local-api and open http://127.0.0.1:5501/account/sign-in.html. Local DB is disabled until the local API server is running.</p>
29-
</aside>
30-
<div class="card">
31-
<div class="card-body content-stack">
32-
<div>
33-
<div class="kicker">Mode</div>
34-
<h2 data-login-mode-title>Local DB</h2>
35-
<p class="lede" data-login-mode-description>Uses LocalDbAdapter backed by server SQLite storage.</p>
36-
</div>
37-
<div class="status" role="status" data-login-mode-status>Session mode ready.</div>
38-
<section class="content-stack" aria-labelledby="login-users-title">
39-
<div>
40-
<div class="kicker">Local Users</div>
41-
<h2 id="login-users-title">Session User</h2>
42-
</div>
43-
<div class="action-group" role="group" aria-label="Local test users" data-login-user-controls></div>
44-
<div class="status" role="status" data-login-user-status>Choose a local test user.</div>
45-
</section>
46-
<div class="action-group">
47-
<a class="btn primary" href="toolbox/index.html" data-login-continue>Continue</a>
48-
</div>
49-
</div>
50-
</div>
51-
</div>
52-
<section class="card" aria-labelledby="login-local-status-title">
25+
<div class="card">
5326
<div class="card-body content-stack">
5427
<div>
55-
<div class="kicker">Diagnostics</div>
56-
<h2 id="login-local-status-title">Local Development Status</h2>
28+
<div class="kicker">Secure Access</div>
29+
<h2>Welcome Back</h2>
5730
</div>
58-
<div class="content-stack" data-login-local-status>
59-
<p><strong>Current URL:</strong> <span data-login-status-current-url>Checking...</span></p>
60-
<p><strong>Detected server mode:</strong> <span data-login-status-server-mode>Checking...</span></p>
61-
<p><strong>Local API availability:</strong> <span data-login-status-api>Checking...</span></p>
62-
<p><strong>Disabled reason:</strong> <span data-login-status-disabled-reason>Checking...</span></p>
63-
<p><strong>Expected API endpoint:</strong> <span data-login-status-endpoint>/api/session/current</span></p>
64-
<p><strong>Correct local URL:</strong> <span data-login-status-api-url>http://127.0.0.1:5501/account/sign-in.html</span></p>
65-
<p><strong>Startup command:</strong> <span data-login-status-command>npm run dev:local-api</span></p>
31+
<form class="content-stack" data-login-form>
32+
<label for="signInIdentity">Email or username</label>
33+
<input id="signInIdentity" name="identity" type="text" autocomplete="username" data-login-identity>
34+
<label for="signInPassword">Password</label>
35+
<input id="signInPassword" name="password" type="password" autocomplete="current-password" data-login-password>
36+
<div class="action-group">
37+
<button class="btn primary" type="submit" data-login-submit>Sign In</button>
38+
<a class="btn" href="create-account.html" data-login-create-account>Create Account</a>
39+
<a class="btn btn--compact" href="lost-password.html" data-login-lost-password>Lost Password</a>
40+
</div>
41+
<div class="status" role="status" data-login-status>Secure account sign-in is not available in this build.</div>
42+
</form>
43+
<div class="action-group">
44+
<a class="btn btn--compact" href="toolbox/index.html" data-login-continue>Continue Browsing</a>
6645
</div>
6746
</div>
68-
</section>
47+
</div>
6948
</div>
7049
</section>
7150
</main>

admin/db-viewer.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ <h2 data-admin-db-mode-title>Local DB</h2>
3434
<div class="accordion-body content-stack">
3535
<p data-admin-db-scope-description>Current tool Local DB records are displayed as a read-only human-readable dump.</p>
3636
<p>Use the diagnostics panel to confirm table attribution, relationships, and table bleed checks.</p>
37-
<button class="btn btn--compact" type="button" data-admin-setup-reseed>Reseed Local DB</button>
38-
<p class="status" role="status" data-admin-setup-status>SKIP: No setup action has been run.</p>
3937
</div>
4038
</details>
4139
</div>
@@ -57,6 +55,20 @@ <h2 id="admin-db-viewer-title" data-admin-db-mode-title>Local DB</h2>
5755
<h2>DB Inspector</h2>
5856
</div>
5957
<div class="accordion-stack">
58+
<details class="vertical-accordion" open data-admin-db-local-status-card>
59+
<summary>Local DB Status</summary>
60+
<div class="accordion-body content-stack">
61+
<div class="content-stack content-stack--compact" data-admin-db-local-status>
62+
<p><strong>Current URL:</strong> <span data-admin-db-status-current-url>Checking...</span></p>
63+
<p><strong>Detected server mode:</strong> <span data-admin-db-status-server-mode>Checking...</span></p>
64+
<p><strong>Local API availability:</strong> <span data-admin-db-status-api>Checking...</span></p>
65+
<p><strong>Expected API endpoint:</strong> <span data-admin-db-status-endpoint>/api/session/current</span></p>
66+
<p><strong>Admin setup endpoint:</strong> <span data-admin-db-status-setup-endpoint>/api/admin/setup/reseed</span></p>
67+
</div>
68+
<button class="btn btn--compact" type="button" data-admin-setup-reseed>Reseed Local DB</button>
69+
<p class="status" role="status" data-admin-setup-status>SKIP: No setup action has been run.</p>
70+
</div>
71+
</details>
6072
<details class="vertical-accordion" open>
6173
<summary>Diagnostics</summary>
6274
<div class="accordion-body">
@@ -79,6 +91,7 @@ <h2>DB Inspector</h2>
7991
<script src="assets/theme-v2/js/gamefoundry-partials.js" defer></script>
8092
<script src="assets/theme-v2/js/tool-display-mode.js" defer></script>
8193
<script type="module" src="assets/theme-v2/js/admin-setup-actions.js"></script>
94+
<script type="module" src="assets/theme-v2/js/admin-db-status-panel.js"></script>
8295
<script type="module" src="admin/db-viewer.js"></script>
8396
</body>
8497

admin/grouping-colors.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ <h2>Planned Sections</h2>
6868
<div class="container">
6969
<div class="card">
7070
<div class="card-body">
71-
<h2>Restored Group Color Model</h2>
71+
<h2>Group Color Model</h2>
7272
<p>Group colors are independent from Project Build Path progress. Group view supports browsing
7373
by semantic color category; Build Path answers what to do next for a project.</p>
7474
<div class="table-wrapper">
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { safeRequestServerApi } from "../../../src/engine/api/server-api-client.js";
2+
3+
const fields = {
4+
api: document.querySelector("[data-admin-db-status-api]"),
5+
currentUrl: document.querySelector("[data-admin-db-status-current-url]"),
6+
endpoint: document.querySelector("[data-admin-db-status-endpoint]"),
7+
serverMode: document.querySelector("[data-admin-db-status-server-mode]"),
8+
setupEndpoint: document.querySelector("[data-admin-db-status-setup-endpoint]"),
9+
};
10+
11+
function setText(field, value) {
12+
if (field) {
13+
field.textContent = value;
14+
}
15+
}
16+
17+
function renderAdminDbStatus() {
18+
setText(fields.currentUrl, window.location.href);
19+
setText(fields.endpoint, "/api/session/current");
20+
setText(fields.setupEndpoint, "/api/admin/setup/reseed");
21+
22+
const sessionResponse = safeRequestServerApi("/session/current");
23+
if (!sessionResponse.ok) {
24+
setText(fields.serverMode, "FAIL: Local API unavailable.");
25+
setText(fields.api, `FAIL: ${sessionResponse.error}`);
26+
return;
27+
}
28+
29+
const session = sessionResponse.payload?.data || {};
30+
const mode = session.mode || "unknown";
31+
const persistence = session.persistence || "unknown persistence";
32+
setText(fields.serverMode, `PASS: ${mode} (${persistence}).`);
33+
setText(fields.api, "PASS: /api/session/current responded.");
34+
}
35+
36+
renderAdminDbStatus();

assets/theme-v2/js/gamefoundry-partials.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@
8787
support: "docs/support.html",
8888
reference: "docs/reference.html",
8989
"sign-in": "account/sign-in.html",
90+
"create-account": "account/create-account.html",
91+
"lost-password": "account/lost-password.html",
9092
contact: "company/contact.html",
9193
vision: "company/vision.html",
9294
mission: "company/mission.html",
@@ -512,7 +514,11 @@
512514
message: "Sign in as Admin to open this Admin page."
513515
};
514516
}
515-
if (pagePath === "account/sign-in.html") {
517+
if ([
518+
"account/sign-in.html",
519+
"account/create-account.html",
520+
"account/lost-password.html"
521+
].includes(pagePath)) {
516522
return null;
517523
}
518524
if (pagePath.indexOf("account/") === 0) {

0 commit comments

Comments
 (0)