|
|
@@ -1,9 +1,10 @@
|
|
|
import crypto from "crypto";
|
|
|
import {
|
|
|
- User
|
|
|
+ User
|
|
|
} from "../../../models/User";
|
|
|
import {
|
|
|
- RegisterInput, RegisterResult
|
|
|
+ RegisterResult,
|
|
|
+ RegisterInput
|
|
|
} from "./types";
|
|
|
|
|
|
const isValidEmail = (mail: string): boolean => {
|
|
|
@@ -18,45 +19,45 @@ const isValidPhone = (phone: string): boolean => {
|
|
|
|
|
|
const isStrongPassword = (password: string): { valid: boolean; message: string } => {
|
|
|
if (password.length < 8) return {
|
|
|
- valid: false, message: "Şifre en az 8 karakter olmalı"
|
|
|
+ valid: false, message: "Şifre en az 8 karakter olmalı"
|
|
|
};
|
|
|
|
|
|
if (!/[A-Z]/.test(password)) return {
|
|
|
- valid: false, message: "Şifre en az 1 büyük harf içermeli"
|
|
|
+ valid: false, message: "Şifre en az 1 büyük harf içermeli"
|
|
|
};
|
|
|
|
|
|
if (!/[a-z]/.test(password)) return {
|
|
|
- valid: false, message: "Şifre en az 1 küçük harf içermeli"
|
|
|
+ valid: false, message: "Şifre en az 1 küçük harf içermeli"
|
|
|
};
|
|
|
|
|
|
if (!/[0-9]/.test(password)) return {
|
|
|
- valid: false, message: "Şifre en az 1 sayı içermeli"
|
|
|
+ valid: false, message: "Şifre en az 1 sayı içermeli"
|
|
|
};
|
|
|
|
|
|
if (!/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password)) return {
|
|
|
- valid: false, message: "Şifre en az 1 özel karakter içermeli"
|
|
|
+ valid: false, message: "Şifre en az 1 özel karakter içermeli"
|
|
|
};
|
|
|
|
|
|
return {
|
|
|
- valid: true,
|
|
|
- message: ""
|
|
|
+ valid: true,
|
|
|
+ message: ""
|
|
|
};
|
|
|
};
|
|
|
|
|
|
export const register = async (input: RegisterInput): Promise<RegisterResult> => {
|
|
|
const {
|
|
|
- firstName, lastName, companyName, mail, phoneNumber, password
|
|
|
+ firstName, lastName, companyName, mail, phoneNumber, password
|
|
|
} = input;
|
|
|
|
|
|
if (!isValidEmail(mail)) {
|
|
|
return {
|
|
|
- success: false, message: "Geçersiz email formatı" , statusCode: 400
|
|
|
+ success: false, message: "Geçersiz email formatı", statusCode: 400
|
|
|
};
|
|
|
}
|
|
|
|
|
|
if (!isValidPhone(phoneNumber)) {
|
|
|
return {
|
|
|
- success: false, message: "Geçersiz telefon numarası formatı" , statusCode: 400
|
|
|
+ success: false, message: "Geçersiz telefon numarası formatı", statusCode: 400
|
|
|
};
|
|
|
}
|
|
|
|
|
|
@@ -64,27 +65,27 @@ export const register = async (input: RegisterInput): Promise<RegisterResult> =>
|
|
|
|
|
|
if (!passwordCheck.valid) {
|
|
|
return {
|
|
|
- success: false, message: passwordCheck.message ,statusCode: 400
|
|
|
+ success: false, message: passwordCheck.message, statusCode: 400
|
|
|
};
|
|
|
}
|
|
|
|
|
|
const existingUser = await User.findOne({
|
|
|
- mail
|
|
|
+ mail
|
|
|
});
|
|
|
|
|
|
if (existingUser) {
|
|
|
return {
|
|
|
- success: false, message: "Bu email zaten kayıtlı" , statusCode: 409
|
|
|
+ success: false, message: "Bu email zaten kayıtlı", statusCode: 409
|
|
|
};
|
|
|
}
|
|
|
|
|
|
const existingPhone = await User.findOne({
|
|
|
- phoneNumber
|
|
|
+ phoneNumber
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
if (existingPhone) {
|
|
|
return {
|
|
|
- success: false, message: "Bu telefon numarası zaten kayıtlı" , statusCode: 409
|
|
|
+ success: false, message: "Bu telefon numarası zaten kayıtlı", statusCode: 409
|
|
|
};
|
|
|
}
|
|
|
const hashedPassword = crypto.createHash("md5").update(password).digest("hex");
|