im using nextauth for auth work in nextjs
this is my files
blog/server.tsx
"use server"
import { signIn } from "@/../auth"
const signin = async (prevState: any, formData: any) => {
await signIn("credentials", formData, {redirect:"/"});
return { message: "Sign in successful" }
}
export { signin }
this is blog/signin.tsx
"use client";
import React from "react";
import { useFormState } from 'react-dom';
import { signin } from "./server";
const initialState = {
message: "",
};
export default function Signin() {
let [state,actionforform] = useFormState(signin,initialState)
return (
<form
action={actionforform}>
<label>
Email
<input name="email" type="email" />
</label>
<label>
Password
<input name="password" type="password" />
</label>
<button>Sign In</button>
</form>
)
}
this is auth.ts
import NextAuth from "next-auth"
import Credentials from "next-auth/providers/credentials"
import bcrypt from 'bcrypt';
import { saltAndHashPassword } from "./password"
import { signInSchema } from "./signin"
async function getUserFromDb(email:string, pwHash:string) {
return {
id: "1",
email: email,
pwHash: pwHash,
name: "John Doe",
}
}
export const { handlers, signIn, signOut, auth } = NextAuth({
providers: [Credentials({
id: 'credentials',
name: 'Credentials',
credentials: { email: {}, password: {} },
authorize: async (credentials) => {
let user = null
const { email, password } = await signInSchema.parseAsync(credentials)
const pwHash = await saltAndHashPassword(String(credentials.password))
console.log(pwHash is ${pwHash} ok )
user = await getUserFromDb(String(credentials.email), pwHash)
if (!user) {
throw new Error("User not found.")
}
return user
},
}),
],
})
why am i not being redirected