File size: 2,139 Bytes
22f0230
a6fbb8d
1628025
 
433085e
260547f
433085e
a6fbb8d
02fcdf7
1628025
22f0230
 
ac9dbd5
 
1628025
433085e
ac9dbd5
1628025
ac9dbd5
1628025
a6fbb8d
22f0230
1628025
22f0230
1628025
 
 
 
 
 
 
 
a6fbb8d
22f0230
a6fbb8d
22f0230
1628025
 
 
 
 
 
 
22f0230
1628025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a6fbb8d
22f0230
1628025
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { UsersService } from "../services/users.service";
import { jwtHelper } from "../../../../helpers/jwt.helper";
import { BaseController } from "../../../../lib/controllers/controller.base";
import { Prefix } from "../../../common/decorators/prefix.decorator";
import { bodyValidator } from "../../../../helpers/validation.helper";
import { userRegisterValidation } from "../../../common/users/validation/user-register.validation";
import { loginValidation } from "../validation/user.Validation";

@Prefix("/user/auth")
export class AuthController extends BaseController {
  private usersService = new UsersService();

  setRoutes(): void {
    this.router.post(
      "/register",
      bodyValidator(userRegisterValidation),
      this.register
    );
    this.router.post("/login", bodyValidator(loginValidation), this.login);
  }

  register = async (req, res) => {
    try {
      let result = await this.usersService.create(req.body);
      return res.status(result.code).json(result);
    } catch (err) {
      console.log(`err.message`, err.message);
      return res.status(500).json({
        success: false,
        code: 500,
        error: err.message,
      });
    }
  };

  login = async (req, res) => {
    try {
      const { email, password } = req.body;
      let result: {
        success: boolean;
        code: number;
        record?: any;
        message?: string;
      } = await this.usersService.comparePassword(email, password);
      if (!result.success) return res.status(result.code).json(result);
      let payload = {
        _id: result.record?._id,
        name: result.record?.name,
        email: result.record?.email,
        number: result.record?.number,
        role: result.record?.role,
      };
      const token = jwtHelper.generateToken(payload);
      return res.status(result.code).json({
        success: result.success,
        token,
        code: result.code,
        record: result.record,
      });
    } catch (err) {
      console.log(`err.message`, err.message);
      return res.status(500).json({
        success: false,
        message: err.message,
      });
    }
  };
}