· 5 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  }