· 6 years ago · Dec 26, 2019, 12:36 AM
1 async login(payload) {
2 const ctx = 'domain-login';
3 const { username, password } = payload;
4 const user = await this.query.findOneUser({ username });
5 if (user.err) {
6 logger.log(ctx, user.message.toString(), 'error');
7 return wrapper.error(new NotFoundError('User not found'));
8 }
9 const userId = user.data._id;
10 const userName = user.data.username;
11 const pass = await commonUtil.decrypt(user.data.password, algorithm, secretKey);
12 if (username !== userName || pass !== password) {
13 return wrapper.error(new UnauthorizedError('Password invalid!'));
14 }
15 const data = {
16 username,
17 sub: userId
18 };
19 const token = await jwtAuth.generateToken(data);
20 return wrapper.data(token);
21 }