A social knowledge tool for researchers built on ATProto
at development 1.1 kB view raw
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}