session mapping private endpoint
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
import type { NextFunction, Request, Response } from "express";
|
||||||
|
import { generateMap } from "./mapper.repository.js";
|
||||||
|
|
||||||
|
export function checkSession(req: Request, res: Response, next: NextFunction) {
|
||||||
|
if (!(req.session as any)?.adminUser) {
|
||||||
|
return res.status(401).json({ error: 'Unauthorized' })
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getRedisMapping(req: Request, res: Response) {
|
||||||
|
try {
|
||||||
|
res.status(200).send(await generateMap());
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({ error: 'Failed to fetch sessions' })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
import { getRedis } from "../../redis/redis.js";
|
||||||
|
import { prisma } from "../../lib/prisma.js";
|
||||||
|
|
||||||
|
export async function generateMap() {
|
||||||
|
const redis = getRedis();
|
||||||
|
|
||||||
|
const keys = await redis.keys('user:*')
|
||||||
|
|
||||||
|
const sessions = await Promise.all(keys.map(async (key) => {
|
||||||
|
const raw = await redis.get(key)
|
||||||
|
const session = JSON.parse(raw!)
|
||||||
|
const realUserId = key.replace('user:', '')
|
||||||
|
|
||||||
|
const user = await prisma.user.findUnique({
|
||||||
|
where: { id: realUserId },
|
||||||
|
select: { id: true, firstName: true, lastName: true }
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
realUserId,
|
||||||
|
firstName: user?.firstName ?? 'Unknown',
|
||||||
|
lastName: user?.lastName ?? 'Unknown',
|
||||||
|
pseudoId: session.userID,
|
||||||
|
pseudoName: session.name
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
|
||||||
|
return sessions;
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import express from "express";
|
||||||
|
import { getRedisMapping, checkSession } from "./mapper.controller.js";
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
router.get("/map", checkSession, getRedisMapping);
|
||||||
|
|
||||||
|
export default router;
|
||||||
Reference in New Issue
Block a user