How to use JwtManager.middleware?
Triplecorpse opened this issue · 3 comments
Triplecorpse commented
Did't get, where to put jwt token in request?
seanpmaxwell commented
Do you mean in the request from the front-end? This feature use express-jwt under the hood so the JWT is used as a bearer token: headers: { 'Authorization':
Basic ${token} }
Triplecorpse commented
I tried both Basic ${token}
and Bearer ${token}
and both comes 401. I generated token with JwtManager.jwt({bla-bla}), have set up env variables
OVERNIGHT_JWT_SECRET="string as long as my life"
OVERNIGHT_JWT_EXP="7 days"
I have issue with validate
endpoint, login
works well.
this is my file
import {Request, Response} from 'express';
import {ClassMiddleware, Controller, Get, Middleware, Post, Put} from '@overnightjs/core';
import {Logger} from '@overnightjs/logger';
import {User} from "../models/user";
import {IUser} from "../interfaces/IUser";
import {BAD_CREDENTIALS, FORM_NOT_VALID, INTERNAL_SERVER_ERROR, NOT_IMPLEMENTED, RECAPTCHA_ERROR} from "../const/error";
import {Validators} from "../services/validators";
import {JwtManager} from "@overnightjs/jwt";
import {validateRecaptcha} from "../services/recaptcha";
import {hashPassword} from "../services/database-helpers";
import {CORS} from "../services/CORS";
import * as dotenv from "dotenv";
dotenv.config();
@Controller('user')
@ClassMiddleware(CORS)
export class UserController {
@Get('validate')
@Middleware(JwtManager.middleware)
private validateUser(req: Request, res: Response) {
res.sendStatus(200)
// .header('Access-Control-Allow-Headers:Origin,X-Requested-With,Content-Type,Accept')
// .header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE')
// .header('Access-Control-Allow-Origin: http://localhost:3000');
}
@Post('login')
private async loginUser(req: Request, res: Response) {
const password = hashPassword(req.body.password);
const user: IUser = (await User.findOne({login: req.body.login, password}) as any)
await validateRecaptcha(req.body.token)
.catch(err => {
Logger.Err(err);
res.status(400).json({error: RECAPTCHA_ERROR});
throw new Error(RECAPTCHA_ERROR);
});
if (!user) {
Logger.Warn(req.body);
res.status(401).json({error: BAD_CREDENTIALS});
throw new Error(BAD_CREDENTIALS);
}
const token = JwtManager.jwt({login: user.login, email: user.email, password: user.password});
Logger.Info(req.params.msg);
delete user.password;
return res.status(200).json({login: user.login, email: user.email, token});
}
}
Triplecorpse commented
I am sorry, currently it's one issue in my frontend. I'll resolve it and then return