debug: /debug-session shows last audit log entries (impersonated_by)
This commit is contained in:
@@ -80,15 +80,22 @@ async function start() {
|
||||
app.get('/healthz', (req, res) => res.send('OK'));
|
||||
|
||||
// 🔧 DEBUG: показать IAM-данные из сессии (убрать после теста!)
|
||||
app.get('/debug-session', (req, res) => {
|
||||
app.get('/debug-session', async (req, res) => {
|
||||
if (!req.session || !req.session.user) return res.json({ error: 'no session' });
|
||||
const { token, idToken, ...safe } = req.session;
|
||||
// Последняя запись аудита для проверки impersonated_by
|
||||
let lastAudit = null;
|
||||
try {
|
||||
const { getAudit } = require('./src/queries');
|
||||
const audit = await getAudit(null);
|
||||
lastAudit = audit.slice(0, 3);
|
||||
} catch(e) { lastAudit = 'error: ' + e.message; }
|
||||
res.json({
|
||||
user: req.session.user,
|
||||
hasToken: !!token,
|
||||
tokenPreview: token ? token.slice(0, 50) + '...' : null,
|
||||
tokenPayload: token ? (() => { try { const p = JSON.parse(Buffer.from(token.split('.')[1], 'base64url').toString()); return { iss: p.iss, sub: p.sub, email: p.email, ClientID: p.ClientID, iat: p.iat }; } catch(e) { return 'decode error'; } })() : null,
|
||||
});
|
||||
lastAudit,
|
||||
});
|
||||
|
||||
// JWKS endpoint для валидации токенов внешними сервисами (только в mock-режиме)
|
||||
|
||||
Reference in New Issue
Block a user