eletrotupi / tcc/ api/src/models/user.ts9c4943c11759d2e55f2a973b2ff41c9ef57b66ec
1.0 KB | 50 lines Raw
1
import bcrypt from "bcryptjs";
2
import { prisma } from '../lib/prisma'
3

4
import {
5
  isValidEmail,
6
  isValidPassword,
7
  sanitizeString,
8
  validateRequiredFields
9
} from "@app/utils/validators";
10

11
import { InvalidEmailError, ShortPasswordError } from '@app/lib/errors/UserErrors'
12

13
const createUser = async (email: string, firstName: string, lastName: string, password: string) => {
14
  // Validate email format
15
  if (!isValidEmail(email)) {
16
    throw new InvalidEmailError()
17
  }
18

19
  // Validate password strength
20
  if (!isValidPassword(password)) {
21
    throw new ShortPasswordError()
22
  }
23
  
24
  const encryptedPassword = bcrypt.hashSync(password, 10);
25

26
  try {
27
    const user = await prisma.user.create({
28
      data: {
29
        email,
30
        firstName,
31
        lastName,
32
        encryptedPassword
33
      }
34
    });
35

36
    return user;
37
  } catch (err: any) {
38
    console.log(err)
39
    throw new Error("Something was off when creating user")
40
  }
41
}
42

43
const generateToken = (userId: number) => {
44
  return 'xxx' + userId
45
}
46

47
export {
48
  createUser,
49
  generateToken
50
}