11import { UserValidator } from 'api/validators/user.validator' ;
22import { Authorizer } from 'auth/authorizer' ;
33import { ResponseHandler } from 'common/response.handler' ;
4- import { UserDomainModel } from 'domain.types/user/user.domain.model' ;
4+ import { UserDomainModel , UserLoginDetails } from 'domain.types/user/user.domain.model' ;
55import { UserDetailsDto } from 'domain.types/user/user.dto' ;
66import express from 'express' ;
77import { UserService } from 'services/user.service' ;
88import { Loader } from 'startup/loader' ;
9+ import { BaseController } from './base.controller' ;
910
10- export class UserController {
11+ export class UserController extends BaseController {
1112 //#region member variables and constructors
1213
1314 _service : UserService = null ;
1415
1516 _authorizer : Authorizer = null ;
1617
1718 constructor ( ) {
19+ super ( ) ;
1820 this . _service = Loader . container . resolve ( UserService ) ;
1921 this . _authorizer = Loader . authorizer ;
2022 }
@@ -26,7 +28,26 @@ export class UserController {
2628 } ;
2729
2830 getById = async ( request : express . Request , response : express . Response ) : Promise < void > => {
29- throw new Error ( 'Method not implemented.' ) ;
31+ try {
32+ await this . setContext ( 'User.getById' , request , response ) ;
33+
34+ const userId : string = await UserValidator . get ( request , response ) ;
35+
36+ const userdetails : UserDetailsDto = await this . _service . getById ( userId ) ;
37+
38+ ResponseHandler . success (
39+ request ,
40+ response ,
41+ 'User get by id!' ,
42+ 200 ,
43+ {
44+ entity : userdetails ,
45+ } ,
46+ false
47+ ) ;
48+ } catch ( err ) {
49+ ResponseHandler . handleError ( request , response , err ) ;
50+ }
3051 } ;
3152
3253 search = async ( request : express . Request , response : express . Response ) : Promise < void > => {
@@ -35,7 +56,7 @@ export class UserController {
3556
3657 create = async ( request : express . Request , response : express . Response ) : Promise < void > => {
3758 try {
38- // request.context = 'User.create';
59+ this . setContext ( 'User.create' , request , response ) ;
3960
4061 const domainData : UserDomainModel = await UserValidator . create ( request , response ) ;
4162
@@ -55,4 +76,34 @@ export class UserController {
5576 ResponseHandler . handleError ( request , response , err ) ;
5677 }
5778 } ;
79+
80+ loginWithPassword = async ( request : express . Request , response : express . Response ) : Promise < void > => {
81+ try {
82+ // request.context = 'User.create';
83+
84+ const domainData : UserLoginDetails = await UserValidator . loginWithPassword ( request , response ) ;
85+
86+ const userdetails = await this . _service . loginWithPassword ( domainData ) ;
87+
88+ const message = `User '${ userdetails . user . FirstName } ' logged in successfully!` ;
89+
90+ const data = {
91+ AccessToken : userdetails . accessToken ,
92+ User : userdetails . user ,
93+ } ;
94+
95+ ResponseHandler . success (
96+ request ,
97+ response ,
98+ message ,
99+ 200 ,
100+ {
101+ entity : data ,
102+ } ,
103+ false
104+ ) ;
105+ } catch ( err ) {
106+ ResponseHandler . handleError ( request , response , err ) ;
107+ }
108+ } ;
58109}
0 commit comments