forked from EduCraft/curriculum-project-hub
fix(admin-web): break /admin/login returnTo redirect loop in dev
vite dev only proxied /api and /auth, so /admin/login hit the SPA root layout, re-ran loadSession, got 401, and redirected back to /admin/login with an ever-nesting returnTo. Proxy /admin/login to the backend (which owns it before the SPA fallback) and guard redirectToLogin against re-entering /admin/login. Replace the only emoji-as-icon (the back-arrow on project detail) with the Icon component (new arrow-left glyph). Add scripts/dev-bootstrap.ts for seeding a local Silo (stub probes) so npm run dev can start on a fresh dev DB.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { config } from "dotenv";
|
||||
config();
|
||||
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
import { bootstrapAlphaSilo } from "../src/deployment/bootstrap-silo.js";
|
||||
import { loadLocalSecretKeyring, LocalSecretEnvelope } from "../src/security/secretEnvelope.js";
|
||||
|
||||
async function main(): Promise<void> {
|
||||
const keyringFile = process.env["HUB_SECRET_KEYRING_FILE"];
|
||||
if (!keyringFile) throw new Error("HUB_SECRET_KEYRING_FILE is required");
|
||||
const secrets = new LocalSecretEnvelope(await loadLocalSecretKeyring());
|
||||
const prisma = new PrismaClient();
|
||||
try {
|
||||
const result = await bootstrapAlphaSilo(
|
||||
prisma,
|
||||
secrets,
|
||||
{
|
||||
organization: {
|
||||
id: "org_default",
|
||||
slug: "default",
|
||||
name: "Default Organization",
|
||||
},
|
||||
owner: {
|
||||
openId: process.env["FEISHU_BOT_OPEN_ID"] ?? "dev-owner",
|
||||
displayName: "Dev Owner",
|
||||
},
|
||||
feishu: {
|
||||
appId: process.env["FEISHU_APP_ID"] ?? "dev-app",
|
||||
appSecret: process.env["FEISHU_APP_SECRET"] ?? "dev-secret",
|
||||
botOpenId: process.env["FEISHU_BOT_OPEN_ID"] ?? "dev-bot",
|
||||
},
|
||||
provider: {
|
||||
providerId: "openrouter",
|
||||
baseUrl: process.env["ANTHROPIC_BASE_URL"] ?? "https://openrouter.ai/api",
|
||||
authToken: process.env["ANTHROPIC_AUTH_TOKEN"] ?? "dev-token",
|
||||
},
|
||||
},
|
||||
{
|
||||
feishu: async () => undefined,
|
||||
provider: async () => undefined,
|
||||
},
|
||||
);
|
||||
console.log("bootstrap ok:", JSON.stringify(result, null, 2));
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
main().catch((error: unknown) => {
|
||||
console.error("[dev-bootstrap] failed:", error instanceof Error ? error.message : String(error));
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user