31 lines
851 B
TypeScript
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,
|
|
}));
|
|
});
|