diff --git a/backend/dist/caStudioApi.js b/backend/dist/caStudioApi.js index 6dd870c..3a0d087 100644 --- a/backend/dist/caStudioApi.js +++ b/backend/dist/caStudioApi.js @@ -47,6 +47,7 @@ export function createCaStudioApi(db) { const labAccess = requireLabAccess(); app.use(cookieParser()); app.use(express.json({ limit: '1mb' })); + app.use(express.urlencoded({ extended: false })); app.use('/admin', labAccess); app.use('/view', labAccess); app.use('/api/ca', labAccess); diff --git a/backend/dist/caStudioApi.js.map b/backend/dist/caStudioApi.js.map index 68bcde1..a9072fd 100644 --- a/backend/dist/caStudioApi.js.map +++ b/backend/dist/caStudioApi.js.map @@ -1 +1 @@ -{"version":3,"file":"caStudioApi.js","sourceRoot":"","sources":["../src/caStudioApi.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"caStudioApi.js","sourceRoot":"","sources":["../src/caStudioApi.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/labAuth.js b/backend/dist/labAuth.js index 5dc7553..169bff2 100644 --- a/backend/dist/labAuth.js +++ b/backend/dist/labAuth.js @@ -17,6 +17,7 @@ export function labAuthConfig() { keycardMeritSlug: process.env.LAB_KEYCARD_MERIT_SLUG ?? 'lab-keycard', keycardRequired: envFlag('LAB_KEYCARD_REQUIRED', true), signInUrl: process.env.LAB_SIGN_IN_URL ?? `${gnommowebUrl}/auth/google`, + temporarySecretKey: process.env.LAB_TEMP_SECRET_KEY ?? 'supersecret', userProfileUrl: process.env.LAB_USER_PROFILE_URL ?? `${gnommowebUrl}/api/user/profile` }; } @@ -38,6 +39,112 @@ function loginUrl(request, config) { url.searchParams.set('returnTo', returnTo); return url.toString(); } +function temporaryCookieOptions(request) { + const secure = request.secure || request.get('x-forwarded-proto') === 'https'; + return { + httpOnly: true, + maxAge: 1000 * 60 * 60 * 12, + sameSite: 'lax', + secure + }; +} +function hasTemporaryAccess(request, config) { + return Boolean(config.temporarySecretKey && request.cookies?.lab_temp_key === config.temporarySecretKey); +} +function isLocalLoginPath(request) { + return request.path === '/lab-login' || request.path === '/admin/lab-login'; +} +function localLoginPage(config, error = '') { + return ` + + + + + CA Lab Login + + + +
+
CA Lab Computer
+
+

Insert lab keycard

+

Sign in with your Glitch University JWT, or use the temporary lab key while access is being repaired.

+ ${error ? `

${escapeHtml(error)}

` : ''} +
+ + +
+ + Glitch University sign in +
+
+
+
+ +`; +} function lockedPage(access, config) { const unlockUrl = access.unlockUrl ?? `${config.gnommowebUrl}/tech-tree`; const reason = access.reason ?? 'Your Glitch University account does not have the CA Lab Keycard yet.'; @@ -95,6 +202,13 @@ function lockedPage(access, config) {

${escapeHtml(reason)}

Earn the Cellular Automata lab merit on glitch.university, then return here.

Go to Glitch University +
+ + +
@@ -171,6 +285,31 @@ export function requireLabAccess(config = labAuthConfig()) { next(); return; } + if (request.method === 'GET' && isLocalLoginPath(request)) { + response.type('html').send(localLoginPage(config)); + return; + } + if (request.method === 'POST' && isLocalLoginPath(request)) { + const jwtToken = typeof request.body?.jwt_token === 'string' ? request.body.jwt_token.trim() : ''; + const secretKey = typeof request.body?.secret_key === 'string' ? request.body.secret_key.trim() : ''; + if (config.temporarySecretKey && secretKey === config.temporarySecretKey) { + response.cookie('lab_temp_key', config.temporarySecretKey, temporaryCookieOptions(request)); + response.redirect('/admin'); + return; + } + if (jwtToken) { + response.cookie('auth_token', jwtToken, temporaryCookieOptions(request)); + response.redirect('/admin'); + return; + } + response.status(401).type('html').send(localLoginPage(config, 'Enter a JWT token or the temporary secret key.')); + return; + } + if (hasTemporaryAccess(request, config)) { + request.labAccess = { allowed: true, reason: 'Temporary CA Lab secret key accepted.' }; + next(); + return; + } if (!config.jwtSecret) { response.status(500).json({ error: 'Lab authentication is enabled but JWT_SECRET is not configured' }); return; @@ -178,7 +317,7 @@ export function requireLabAccess(config = labAuthConfig()) { const token = request.cookies?.auth_token; if (!token) { if (wantsHtml(request)) { - response.redirect(loginUrl(request, config)); + response.status(401).type('html').send(localLoginPage(config)); return; } response.status(401).json({ diff --git a/backend/dist/labAuth.js.map b/backend/dist/labAuth.js.map index 30b563b..1cbd28a 100644 --- a/backend/dist/labAuth.js.map +++ b/backend/dist/labAuth.js.map @@ -1 +1 @@ -{"version":3,"file":"labAuth.js","sourceRoot":"","sources":["../src/labAuth.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"labAuth.js","sourceRoot":"","sources":["../src/labAuth.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/src/caStudioApi.ts b/backend/src/caStudioApi.ts index a5fa6c8..63f0c42 100644 --- a/backend/src/caStudioApi.ts +++ b/backend/src/caStudioApi.ts @@ -89,6 +89,7 @@ export function createCaStudioApi(db: Queryable) { const labAccess = requireLabAccess() app.use(cookieParser()) app.use(express.json({ limit: '1mb' })) + app.use(express.urlencoded({ extended: false })) app.use('/admin', labAccess) app.use('/view', labAccess) app.use('/api/ca', labAccess) diff --git a/backend/src/labAuth.ts b/backend/src/labAuth.ts index 934e054..2b384d6 100644 --- a/backend/src/labAuth.ts +++ b/backend/src/labAuth.ts @@ -26,6 +26,7 @@ interface LabAuthConfig { keycardMeritSlug: string keycardRequired: boolean signInUrl: string + temporarySecretKey?: string userProfileUrl: string } @@ -57,6 +58,7 @@ export function labAuthConfig(): LabAuthConfig { keycardMeritSlug: process.env.LAB_KEYCARD_MERIT_SLUG ?? 'lab-keycard', keycardRequired: envFlag('LAB_KEYCARD_REQUIRED', true), signInUrl: process.env.LAB_SIGN_IN_URL ?? `${gnommowebUrl}/auth/google`, + temporarySecretKey: process.env.LAB_TEMP_SECRET_KEY ?? 'supersecret', userProfileUrl: process.env.LAB_USER_PROFILE_URL ?? `${gnommowebUrl}/api/user/profile` } } @@ -83,6 +85,116 @@ function loginUrl(request: Request, config: LabAuthConfig) { return url.toString() } +function temporaryCookieOptions(request: Request) { + const secure = request.secure || request.get('x-forwarded-proto') === 'https' + return { + httpOnly: true, + maxAge: 1000 * 60 * 60 * 12, + sameSite: 'lax' as const, + secure + } +} + +function hasTemporaryAccess(request: Request, config: LabAuthConfig) { + return Boolean(config.temporarySecretKey && request.cookies?.lab_temp_key === config.temporarySecretKey) +} + +function isLocalLoginPath(request: Request) { + return request.path === '/lab-login' || request.path === '/admin/lab-login' +} + +function localLoginPage(config: LabAuthConfig, error = '') { + return ` + + + + + CA Lab Login + + + +
+
CA Lab Computer
+
+

Insert lab keycard

+

Sign in with your Glitch University JWT, or use the temporary lab key while access is being repaired.

+ ${error ? `

${escapeHtml(error)}

` : ''} +
+ + +
+ + Glitch University sign in +
+
+
+
+ +` +} + function lockedPage(access: LabAccessResponse, config: LabAuthConfig) { const unlockUrl = access.unlockUrl ?? `${config.gnommowebUrl}/tech-tree` const reason = access.reason ?? 'Your Glitch University account does not have the CA Lab Keycard yet.' @@ -140,6 +252,13 @@ function lockedPage(access: LabAccessResponse, config: LabAuthConfig) {

${escapeHtml(reason)}

Earn the Cellular Automata lab merit on glitch.university, then return here.

Go to Glitch University +
+ + +
@@ -227,6 +346,37 @@ export function requireLabAccess(config: LabAuthConfig = labAuthConfig()): Reque return } + if (request.method === 'GET' && isLocalLoginPath(request)) { + response.type('html').send(localLoginPage(config)) + return + } + + if (request.method === 'POST' && isLocalLoginPath(request)) { + const jwtToken = typeof request.body?.jwt_token === 'string' ? request.body.jwt_token.trim() : '' + const secretKey = typeof request.body?.secret_key === 'string' ? request.body.secret_key.trim() : '' + + if (config.temporarySecretKey && secretKey === config.temporarySecretKey) { + response.cookie('lab_temp_key', config.temporarySecretKey, temporaryCookieOptions(request)) + response.redirect('/admin') + return + } + + if (jwtToken) { + response.cookie('auth_token', jwtToken, temporaryCookieOptions(request)) + response.redirect('/admin') + return + } + + response.status(401).type('html').send(localLoginPage(config, 'Enter a JWT token or the temporary secret key.')) + return + } + + if (hasTemporaryAccess(request, config)) { + request.labAccess = { allowed: true, reason: 'Temporary CA Lab secret key accepted.' } + next() + return + } + if (!config.jwtSecret) { response.status(500).json({ error: 'Lab authentication is enabled but JWT_SECRET is not configured' }) return @@ -235,7 +385,7 @@ export function requireLabAccess(config: LabAuthConfig = labAuthConfig()): Reque const token = request.cookies?.auth_token if (!token) { if (wantsHtml(request)) { - response.redirect(loginUrl(request, config)) + response.status(401).type('html').send(localLoginPage(config)) return } response.status(401).json({ diff --git a/backend/test/labAuth.test.ts b/backend/test/labAuth.test.ts index 9bed4e5..4d5ee56 100644 --- a/backend/test/labAuth.test.ts +++ b/backend/test/labAuth.test.ts @@ -10,6 +10,7 @@ const secret = 'test-lab-secret' function testApp(config: Parameters[0]) { const app = express() app.use(cookieParser()) + app.use(express.urlencoded({ extended: false })) app.use(requireLabAccess(config)) app.get('/admin', (_request, response) => response.send('ok')) app.get('/api/ca/decks', (_request, response) => response.json([{ id: 'deck' }])) @@ -39,7 +40,7 @@ describe('lab auth middleware', () => { await request(app).get('/admin').expect(200, 'ok') }) - it('redirects browser requests without a shared auth cookie', async () => { + it('shows the local lab login form for browser requests without a shared auth cookie', async () => { const app = testApp({ enabled: true, gnommowebUrl: 'https://glitch.university', @@ -55,10 +56,59 @@ describe('lab auth middleware', () => { .set('accept', 'text/html') .set('host', 'lab.glitch.university') .set('x-forwarded-proto', 'https') + .expect(401) + + expect(response.text).toContain('Insert lab keycard') + expect(response.text).toContain('Temporary secret key') + }) + + it('allows browser requests with the temporary lab secret key', async () => { + const app = testApp({ + enabled: true, + gnommowebUrl: 'https://glitch.university', + jwtSecret: '', + keycardMeritSlug: 'lab-keycard', + keycardRequired: true, + signInUrl: 'https://glitch.university/auth/google', + temporarySecretKey: 'supersecret', + userProfileUrl: 'https://glitch.university/api/user/profile' + }) + + const unlock = await request(app) + .post('/admin/lab-login') + .type('form') + .send({ secret_key: 'supersecret' }) .expect(302) - expect(response.headers.location).toContain('https://glitch.university/auth/google?returnTo=') - expect(decodeURIComponent(response.headers.location)).toContain('https://lab.glitch.university/admin') + const cookie = unlock.headers['set-cookie'] + expect(String(cookie)).toContain('lab_temp_key=supersecret') + + await request(app) + .get('/admin') + .set('cookie', cookie) + .expect(200, 'ok') + }) + + it('rejects the temporary lab secret key when it is wrong', async () => { + const app = testApp({ + enabled: true, + gnommowebUrl: 'https://glitch.university', + jwtSecret: secret, + keycardMeritSlug: 'lab-keycard', + keycardRequired: true, + signInUrl: 'https://glitch.university/auth/google', + temporarySecretKey: 'supersecret', + userProfileUrl: 'https://glitch.university/api/user/profile' + }) + + await request(app) + .post('/admin/lab-login') + .type('form') + .send({ secret_key: 'not-it' }) + .expect(401) + .expect((response) => { + expect(response.text).toContain('Enter a JWT token or the temporary secret key') + }) }) it('rejects API requests with an invalid shared auth cookie', async () => {