Skip to content

Instantly share code, notes, and snippets.

@victor-shelepen
Created September 12, 2017 08:45
Show Gist options
  • Save victor-shelepen/bb173ee36a9a209120bfd79018d4687b to your computer and use it in GitHub Desktop.
Save victor-shelepen/bb173ee36a9a209120bfd79018d4687b to your computer and use it in GitHub Desktop.
I try to add a decorator to express-js handler, that has been already wrapped into. The context of the controller class is lost.
@web.get('/quotes')
@IsAuthenticated()
public getQuotesAction(request: Request, response: Response) {
...
}
let IsAuthenticated = () => {
return (target: Object, key: string | symbol, descriptor: TypedPropertyDescriptor<Handler>) => {
let standardHandler: Handler = descriptor.value;
// descriptor.value
let newHandler = (request: IAppRequest, response: Response, next: NextFunction):any => {
if (!request.context.forexTokenData || !request.context.forexTokenData.id) {
response
.status(403)
.json({
message: 'The user have to be authenticated.'
})
}
else {
let data = web.getRouteMetadata(target);
let data1 = web.getRoutes(target);
standardHandler.bind(data);
standardHandler(request, response, next);
// standardHandler.apply(this, [request, response, next]);
}
};
descriptor.value = newHandler;
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment