Skip to content

Commit 9609fe2

Browse files
authored
fix: allowlist guard on setup pages + login UX (#11)
## Summary - `setupPage` wrapper now checks `isAllowed()` — routes like /setup/metadata, /setup/fund, /setup/join no longer bypass the allowlist - Login early return renders invite-only screen instead of falling through to sign-in form - Disconnect uses `navigate("/login", { force: true })` to re-render on same hash - Version bump 0.2.5 → 0.2.6 ## Test plan - [x] CI passes (test + build)
1 parent 1eaa858 commit 9609fe2

3 files changed

Lines changed: 13 additions & 5 deletions

File tree

deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@moonlight-protocol/provider-console",
3-
"version": "0.2.5",
3+
"version": "0.2.6",
44
"license": "MIT",
55
"tasks": {
66
"dev": "deno run --allow-all --allow-env --watch src/server.ts",

src/views/login.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import { isAllowed, API_BASE_URL } from "../lib/config.ts";
77

88
export function loginView(): HTMLElement {
99
const existingAddr = getConnectedAddress();
10-
if (isAuthenticated() && isMasterSeedReady() && (!existingAddr || isAllowed(existingAddr))) {
10+
if (isAuthenticated() && isMasterSeedReady()) {
11+
if (existingAddr && !isAllowed(existingAddr)) {
12+
const container = document.createElement("div");
13+
container.className = "login-container";
14+
renderInviteOnly(container, existingAddr);
15+
return container;
16+
}
1117
navigate("/");
1218
return document.createElement("div");
1319
}
@@ -186,6 +192,6 @@ function renderInviteOnly(container: HTMLElement, address: string): void {
186192
e.preventDefault();
187193
clearSession();
188194
clearPlatformAuth();
189-
navigate("/login");
195+
navigate("/login", { force: true });
190196
});
191197
}

src/views/setup/layout.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
* Shared setup layout with progress stepper.
33
*/
44
import { isAuthenticated } from "../../lib/api.ts";
5-
import { isMasterSeedReady } from "../../lib/wallet.ts";
5+
import { isMasterSeedReady, getConnectedAddress } from "../../lib/wallet.ts";
6+
import { isAllowed } from "../../lib/config.ts";
67
import { navigate } from "../../lib/router.ts";
78
import { renderNav } from "../../components/nav.ts";
89
import { SETUP_STEPS, type SetupStepId } from "../../lib/setup.ts";
@@ -12,7 +13,8 @@ export function setupPage(
1213
renderStep: () => HTMLElement | Promise<HTMLElement>,
1314
): () => Promise<HTMLElement> {
1415
return async () => {
15-
if (!isAuthenticated() || !isMasterSeedReady()) {
16+
const addr = getConnectedAddress();
17+
if (!isAuthenticated() || !isMasterSeedReady() || (addr && !isAllowed(addr))) {
1618
navigate("/login");
1719
return document.createElement("div");
1820
}

0 commit comments

Comments
 (0)