Skip to content

Commit 90c6acf

Browse files
committed
created baseController and used authenticate user method on request
1 parent 27e23cc commit 90c6acf

File tree

4 files changed

+43
-5
lines changed

4 files changed

+43
-5
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import express from 'express';
2+
import { Authorizer } from '../../auth/authorizer';
3+
import { ApiError } from '../../common/api.error';
4+
import { Loader } from '../../startup/loader';
5+
6+
///////////////////////////////////////////////////////////////////////////////////////
7+
8+
export class BaseController {
9+
_authorizer: Authorizer = null;
10+
11+
constructor() {
12+
this._authorizer = Loader.authorizer;
13+
}
14+
15+
setContext = async (context: string, request: express.Request, response: express.Response, authorize = true) => {
16+
if (context === undefined || context === null) {
17+
throw new ApiError(500, 'Invalid request context');
18+
}
19+
const tokens = context.split('.');
20+
if (tokens.length < 2) {
21+
throw new ApiError(500, 'Invalid request context');
22+
}
23+
const resourceType = tokens[0];
24+
request.context = context;
25+
request.resourceType = resourceType;
26+
if (request.params.id !== undefined && request.params.id !== null) {
27+
request.resourceId = request.params.id;
28+
}
29+
if (authorize) {
30+
await Loader.authorizer.authorize(request, response);
31+
}
32+
};
33+
}

Projects/BooksLibrary/src/api/controllers/user.controller.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ import { UserDetailsDto } from 'domain.types/user/user.dto';
66
import express from 'express';
77
import { UserService } from 'services/user.service';
88
import { 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
}
@@ -27,7 +29,7 @@ export class UserController {
2729

2830
getById = async (request: express.Request, response: express.Response): Promise<void> => {
2931
try {
30-
// request.context = 'User.create';
32+
await this.setContext('User.getById', request, response);
3133

3234
const userId: string = await UserValidator.get(request, response);
3335

@@ -54,7 +56,7 @@ export class UserController {
5456

5557
create = async (request: express.Request, response: express.Response): Promise<void> => {
5658
try {
57-
// request.context = 'User.create';
59+
this.setContext('User.create', request, response);
5860

5961
const domainData: UserDomainModel = await UserValidator.create(request, response);
6062

Projects/BooksLibrary/src/api/routes/user.routes.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import express, { Router } from 'express';
2-
// import { Loader } from '../../startup/loader';
2+
import { Loader } from '../../startup/loader';
33
import { UserController } from '../controllers/user.controller';
44

55
///////////////////////////////////////////////////////////////////////////////////
@@ -9,8 +9,10 @@ export const register = (app: express.Application): void => {
99
// const authenticator = Loader.authenticator;
1010
const controller = new UserController();
1111

12+
const authenticator = Loader.authenticator;
13+
1214
router.post('/', controller.create);
13-
router.get('/:id', controller.getById);
15+
router.get('/:id', authenticator.authenticateUser, controller.getById);
1416
// router.get('/:id', authenticator.authenticateUser, controller.getById);
1517
// router.delete('/:id', authenticator.authenticateUser, controller.delete);
1618

Projects/BooksLibrary/src/startup/loader.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export class Loader {
4747

4848
Loader._seeder = container.resolve(Seeder);
4949

50+
Loader._authenticator = container.resolve(Authenticator);
5051
Loader._authorizer = container.resolve(Authorizer);
5152

5253
return true;

0 commit comments

Comments
 (0)