11"use server"
22
3- import { redirect } from "next/navigation"
4-
3+ import bcrypt from "bcrypt"
54import { signIn , signOut } from "configs/auth"
65import { Prisma } from "database"
76import { createUser } from "database/src/users/queries"
8- import { z } from "zod"
97
10- import { SignUpDataOutput } from "./type"
8+ import { redirect } from "@/utils/navigation"
9+
10+ import { SignUpDataOutput , signUpSchema } from "./type"
1111
1212export const signInWithCredentials = async ( email : string , password : string ) => {
1313 await signIn ( "credentials" , {
@@ -31,13 +31,20 @@ export const signUp = async (
3131 data : Pick < Prisma . UserCreateInput , "email" | "password" >
3232) : Promise < SignUpDataOutput > => {
3333 try {
34- await createUser ( { data } )
35-
36- redirect ( "/login" )
34+ // hash password
35+ const { email, password } = data
36+ const hashedPassword = await bcrypt . hash ( password , 10 )
37+
38+ await createUser ( {
39+ data : {
40+ email,
41+ password : hashedPassword ,
42+ } ,
43+ } )
3744 } catch ( error ) {
38- if ( error . code === "P2002" ) {
45+ if ( error ?. error ? .code === "P2002" ) {
3946 return {
40- formErrors : [ ] ,
47+ formErrors : null ,
4148 fieldErrors : {
4249 email : [ "Email already exists" ] , // TODO: localize error message
4350 } ,
@@ -49,4 +56,7 @@ export const signUp = async (
4956 fieldErrors : { } ,
5057 }
5158 }
59+
60+ // TODO: white this redirect not work
61+ redirect ( "/login" )
5262}
0 commit comments