A social knowledge tool for researchers built on ATProto
1import { Controller } from '../../../../../shared/infrastructure/http/Controller';
2import { Request, Response } from 'express';
3import { LogoutUseCase } from '../../../application/use-cases/LogoutUseCase';
4
5export class LogoutController extends Controller {
6 constructor(private logoutUseCase: LogoutUseCase) {
7 super();
8 }
9
10 async executeImpl(req: Request, res: Response): Promise<any> {
11 try {
12 const refreshToken = req.body?.refreshToken;
13
14 const result = await this.logoutUseCase.execute({
15 refreshToken,
16 });
17
18 if (result.isErr()) {
19 return this.fail(res, result.error);
20 }
21
22 return this.ok(res, result.value);
23 } catch (error: any) {
24 return this.ok(res, {
25 success: true,
26 message: 'Logged out (client-side cleanup completed)',
27 });
28 }
29 }
30}