i'm trying initialize AuthProvider as described on readme.
but i can not inject dependency in my CustomAuthProvider
If inject without constructor as described on readme, All injected dependencies are undefined.
@injectable()
export class CustomAuthProvider implements interfaces.AuthProvider {
@inject(LoggerService.name) private readonly _loggerService!: LoggerService;
@inject(DBService.name) private readonly _db!: DBService;
@injectHttpContext private readonly _httpContext!: HttpContext;
public async getUser(
req: express.Request,
res: express.Response,
next: express.NextFunction
): Promise<interfaces.Principal> {
let user: Auth.User|null = null;
try {
user = await this._db.SelectUserInfo(req.session.user.email);
// this._db is undefined
} catch (error) {
this._loggerService.logger.error(error);
// this._loggerService is undefined too.
}
const principal = new Principal(user);
return principal;
}
}
And if inject a dependency to CustomAuthProvider on constructor of CustomAuthProvider, error occured on line of initializing InversifyExpressServer.
//customAuthProvider.ts
@injectable()
export class CustomAuthProvider implements interfaces.AuthProvider {
constructor (
@inject(LoggerService.name) private readonly _loggerService: LoggerService,
@inject(DBService.name) private readonly _db: DBService,
@injectHttpContext private readonly _httpContext: HttpContext
) {
}
public async getUser(
req: express.Request,
res: express.Response,
next: express.NextFunction
): Promise<interfaces.Principal> {
let user: Auth.User|null = null;
try {
user = await this._db.SelectUserInfo(req.session.user.email);
} catch (error) {
this._loggerService.logger.error(error);
}
const principal = new Principal(user);
return principal;
}
}
// app.ts
this.container = new Container();
this.container.bind(LoggerService.name).to(LoggerService);
this.container.bind(DBService.name).to(DBService).inSingletonScope();
this.container.bind(CustomAuthProvider.name).to(CustomAuthProvider).inSingletonScope();
this.server = new InversifyExpressServer(this.container, null, null, null, CustomAuthProvider); // error is occured on this line.
//Argument of type 'typeof CustomAuthProvider' is not assignable to parameter of type 'new () => AuthProvider'.
//Types of construct signatures are incompatible.
//Type 'new (_loggerService: LoggerService, _db: DBService, _httpContext: HttpContext) => CustomAuthProvider' is not assignable to type 'new () => AuthProvider'.ts(2345)
How can i use another dependencies on CustomAuthProvider?
i'm trying initialize AuthProvider as described on readme.
but i can not inject dependency in my CustomAuthProvider
If inject without constructor as described on readme, All injected dependencies are undefined.
And if inject a dependency to CustomAuthProvider on constructor of CustomAuthProvider, error occured on line of initializing InversifyExpressServer.
How can i use another dependencies on CustomAuthProvider?