| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import {
- plainToInstance
- } from "class-transformer";
- import {
- validate
- } from "class-validator";
- import {
- User
- } from "../../../models/User";
- import {
- RegisterInput, RegisterResult
- } from "./types";
- /* const isStrongPassword = (password: string): { valid: boolean; message: string } => {
- if (password.length < 8) return { message: "Password must be at least 8 characters", valid: false };
- if (!/[A-Z]/.test(password)) return { message: "Password must contain at least 1 uppercase letter", valid: false };
- if (!/[a-z]/.test(password)) return { message: "Password must contain at least 1 lowercase letter", valid: false };
- if (!/[0-9]/.test(password)) return { message: "Password must contain at least 1 number", valid: false };
- if (!/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password)) return { message: "Password must contain at least 1 special character", valid: false };
- return { message: "", valid: true };
- }; */
- export const register = async (input: RegisterInput): Promise<RegisterResult> => {
- const dto = plainToInstance(RegisterInput, input);
- const errors = await validate(dto);
- if (errors.length > 0) {
- const message = Object.values(errors[0].constraints!)[0];
- return {
- code: 400,
- message,
- };
- }
- const {
- companyName,
- phoneNumber,
- firstName,
- lastName,
- password,
- mail
- } = input;
- const existingUser = await User.findOne({
- mail
- });
- if (existingUser) {
- return {
- message: "Email already in use",
- code: 409
- };
- }
- const existingPhone = await User.findOne({
- phoneNumber
- });
-
- if (existingPhone) {
- return {
- message: "Phone number already in use",
- code: 409
- };
- }
- await User.create({
- fullName: `${firstName} ${lastName}`,
- phoneNumber,
- companyName,
- firstName,
- lastName,
- password,
- mail
- });
- return {
- message: "Registration successful",
- code: 201
- };
- };
- export default register;
|