A social knowledge tool for researchers built on ATProto
1import { Controller } from '../../../../../shared/infrastructure/http/Controller';
2import { Request, Response } from 'express';
3import { LoginWithAppPasswordUseCase } from '../../../application/use-cases/LoginWithAppPasswordUseCase';
4
5export class LoginWithAppPasswordController extends Controller {
6 constructor(
7 private loginWithAppPasswordUseCase: LoginWithAppPasswordUseCase,
8 ) {
9 super();
10 }
11
12 async executeImpl(req: Request, res: Response): Promise<any> {
13 try {
14 const { identifier, appPassword } = req.body;
15
16 if (!identifier || !appPassword) {
17 return this.badRequest(res, 'Missing identifier or app password');
18 }
19
20 const result = await this.loginWithAppPasswordUseCase.execute({
21 identifier,
22 appPassword,
23 });
24
25 if (result.isErr()) {
26 return this.badRequest(res, result.error.message);
27 }
28
29 return this.ok(res, {
30 accessToken: result.value.accessToken,
31 refreshToken: result.value.refreshToken,
32 });
33 } catch (error: any) {
34 return this.fail(res, error.message || 'Unknown error');
35 }
36 }
37}