[update]
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { INTERFACE_TYPE } from './../../utils/constant/appConstant';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { Request, Response } from 'express';
|
||||
import { AsyncHandler } from "../../utils";
|
||||
import { IIamPrincipalInteractor, ITokenInteractor } from "../../interfaces/interactor";
|
||||
@@ -5,11 +7,15 @@ import ApiError from '../../utils/helper/ApiError';
|
||||
import { compareSync } from 'bcrypt';
|
||||
import ApiResponse from '../../utils/helper/ApiResponse';
|
||||
|
||||
@injectable()
|
||||
export class LoginController {
|
||||
private tokenInteractor: ITokenInteractor;
|
||||
private iamPrincipalInteractor: IIamPrincipalInteractor;
|
||||
|
||||
constructor(tokenInteractor: ITokenInteractor, iamPrincipalInteractor: IIamPrincipalInteractor) {
|
||||
constructor(
|
||||
@inject(INTERFACE_TYPE.TokenInteractor) tokenInteractor: ITokenInteractor,
|
||||
@inject(INTERFACE_TYPE.IamPrincipalInteractor) iamPrincipalInteractor: IIamPrincipalInteractor
|
||||
) {
|
||||
this.tokenInteractor = tokenInteractor;
|
||||
this.iamPrincipalInteractor = iamPrincipalInteractor;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { genSaltSync, hashSync } from 'bcrypt';
|
||||
import { Request, Response } from 'express';
|
||||
import { AsyncHandler } from "../../utils";
|
||||
import { AsyncHandler, INTERFACE_TYPE } from "../../utils";
|
||||
import { IIamPrincipalInteractor } from "../../interfaces/interactor";
|
||||
import ApiResponse from '../../utils/helper/ApiResponse';
|
||||
|
||||
@injectable()
|
||||
export class RegistrationController {
|
||||
private readonly interactor: IIamPrincipalInteractor;
|
||||
|
||||
constructor(interactor: IIamPrincipalInteractor) {
|
||||
constructor(
|
||||
@inject(INTERFACE_TYPE.IamPrincipalInteractor) interactor: IIamPrincipalInteractor
|
||||
) {
|
||||
this.interactor = interactor;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
import { INTERFACE_TYPE } from './../../utils/constant/appConstant';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { IamPrincipal } from "../../entities";
|
||||
import { IIamPrincipalInteractor } from "../../interfaces/interactor";
|
||||
import { IIamPrincipalRepository } from '../../interfaces/repository';
|
||||
|
||||
@injectable()
|
||||
export class IamPrincipalInteractor implements IIamPrincipalInteractor {
|
||||
private repository: IIamPrincipalRepository;
|
||||
|
||||
constructor(repository: IIamPrincipalRepository) {
|
||||
constructor(
|
||||
@inject(INTERFACE_TYPE.IamPrincipalRepository) repository: IIamPrincipalRepository
|
||||
) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { injectable } from 'inversify';
|
||||
import { INTERFACE_TYPE } from './../../utils/constant/appConstant';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { ITokenRepository } from "../../interfaces/repository";
|
||||
import { ITokenInteractor } from "../../interfaces/interactor";
|
||||
import { sign } from "jsonwebtoken";
|
||||
@@ -10,7 +11,9 @@ export class TokenInteractor implements ITokenInteractor {
|
||||
|
||||
private repository: ITokenRepository
|
||||
|
||||
constructor(repository: ITokenRepository) {
|
||||
constructor(
|
||||
@inject(INTERFACE_TYPE.TokenRepository) repository: ITokenRepository
|
||||
) {
|
||||
this.repository = repository
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { injectable } from 'inversify';
|
||||
import { AppDataSource } from "../../config/data-source";
|
||||
import { Token } from "../../entities";
|
||||
import { ITokenRepository } from "../../interfaces/repository";
|
||||
import { Repository } from "typeorm";
|
||||
|
||||
@injectable()
|
||||
export class TokenRepository implements ITokenRepository {
|
||||
private readonly tokenRepository: Repository<Token>;
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Container } from 'inversify';
|
||||
|
||||
import { IamPrincipalInteractor, TokenInteractor } from '../../interactors';
|
||||
import { IIamPrincipalInteractor, ITokenInteractor } from '../../interfaces/interactor';
|
||||
@@ -5,20 +6,23 @@ import { Router } from 'express';
|
||||
import { IIamPrincipalRepository, ITokenRepository } from '../../interfaces/repository';
|
||||
import { IamPrincipalRepository, TokenRepository } from '../../repositories';
|
||||
import { LoginController, RegistrationController } from '../../controllers';
|
||||
import { INTERFACE_TYPE } from '../../utils';
|
||||
|
||||
const container = new Container();
|
||||
|
||||
container.bind<ITokenRepository>(INTERFACE_TYPE.TokenRepository).to(TokenRepository);
|
||||
container.bind<IIamPrincipalRepository>(INTERFACE_TYPE.IamPrincipalRepository).to(IamPrincipalRepository);
|
||||
container.bind<ITokenInteractor>(INTERFACE_TYPE.TokenInteractor).to(TokenInteractor);
|
||||
container.bind<IIamPrincipalInteractor>(INTERFACE_TYPE.IamPrincipalInteractor).to(IamPrincipalInteractor);
|
||||
container.bind<LoginController>(INTERFACE_TYPE.LoginController).to(LoginController);
|
||||
container.bind<RegistrationController>(INTERFACE_TYPE.RegistrationController).to(RegistrationController);
|
||||
|
||||
const userRoutes = Router();
|
||||
|
||||
const tokenRepository: ITokenRepository = new TokenRepository();
|
||||
const principalRepository: IIamPrincipalRepository = new IamPrincipalRepository();
|
||||
const tokenInteractor: ITokenInteractor = new TokenInteractor(tokenRepository);
|
||||
const loginController = container.get<LoginController>(INTERFACE_TYPE.LoginController);
|
||||
const registrationController = container.get<RegistrationController>(INTERFACE_TYPE.RegistrationController);
|
||||
|
||||
const iamPrincipalInteractor: IIamPrincipalInteractor = new IamPrincipalInteractor(principalRepository);
|
||||
|
||||
|
||||
const controller = new LoginController(tokenInteractor, iamPrincipalInteractor);
|
||||
const registrationController = new RegistrationController(iamPrincipalInteractor);
|
||||
|
||||
userRoutes.route('/login-email').post(controller.login.bind(controller));
|
||||
userRoutes.route('/login-email').post(loginController.login.bind(loginController));
|
||||
userRoutes.route('/register').post(registrationController.registerEmail.bind(registrationController));
|
||||
|
||||
export default userRoutes;
|
||||
Reference in New Issue
Block a user