Files
veridian/server/api/account/sessions/index.get.ts
T
2026-10-15 10:22:06 -05:00

31 lines
851 B
TypeScript

import { db } from '~~/server/lib/db';
/**
* Lists the signed in devices for the current user. Session tokens are left
* out on purpose: the client only ever needs the id to sign a device out.
*/
export default defineEventHandler(async (event) => {
const sessionData = await protectRoute(event);
const result = await db.query.sessions.findMany({
where: {
userId: sessionData.user.id,
expiresAt: {
gt: new Date(),
},
},
orderBy: {
updatedAt: 'desc',
},
});
return result.map(session => ({
id: session.id,
createdAt: session.createdAt,
updatedAt: session.updatedAt,
ipAddress: session.ipAddress,
userAgent: session.userAgent,
current: session.id === sessionData.session.id,
}));
});