eletrotupi / tcc/ api/src/controllers/users.ts30e8babc0ef57b3aad96d854007a54810eb9e1fc
982 B | 39 lines Raw
1
import { Request, Response, NextFunction } from 'express';
2
import {
3
  createUser,
4
  generateToken
5
} from '@app/models/user';
6

7
import {
8
  validateRequiredFields
9
} from '@app/utils/validators'
10

11
export const UsersController = {
12
  create: async (req: Request, res: Response, next: NextFunction) => {
13
    try {
14
      const { email, password, first_name: firstName, last_name: lastName } = req.body;
15

16
      // Validate required fields
17
      const requiredValidation = validateRequiredFields(req.body, [
18
        'email', 'password', 'first_name'
19
      ]);
20

21
      if (!requiredValidation.valid) {
22
        return res.status(400).json({
23
          error: "Campos faltantes",
24
          missing: requiredValidation.missing
25
        });
26
      }
27

28
      const user = await createUser(
29
        email, firstName, lastName, password
30
      );
31

32
      const jwtToken = generateToken(user.id, user.email);
33

34
      res.status(201).json({ token: jwtToken });
35
    } catch (err) {
36
      next(err);
37
    }
38
  }
39
};