1import { Inject, Controller, Delete, Get, Param, Query, Req } from "@nestjs/common"; 2import type { Request } from "express"; 3import { SessionsService } from "./sessions.service.js"; 4import { requireUser } from "../../common/types.js"; 5import { z } from "zod"; 6import { ZodValidate } from "../../common/pipes/zod-validation.pipe.js"; 7 8const ListQuery = z.object({ cursor: z.string().optional(), limit: z.string().optional() }); 9 10@Controller("sessions") 11export class SessionsController { 12 constructor(@Inject(SessionsService) private readonly sessions: SessionsService) {} 13 14 @Get() 15 list(@Query(ZodValidate(ListQuery)) query: z.infer<typeof ListQuery>, @Req() req: Request) { 16 return this.sessions.list(requireUser(req), query); 17 } 18 19 @Delete(":id") 20 revoke(@Param("id") id: string, @Req() req: Request) { 21 return this.sessions.revoke(requireUser(req), id, { req }); 22 } 23 24 @Delete() 25 revokeAll(@Req() req: Request) { 26 return this.sessions.revokeAll(requireUser(req)); 27 } 28} 29