Refactor authentication actions and add user verification functionality

- Updated signin and signup actions to correctly handle phone number redirection and date of birth formatting.
- Introduced a new user-actions file to implement user verification logic.
- Added an auth guard to restrict access based on user roles.
- Enhanced the auth configuration to include user roles and language settings.
- Improved validation schemas for user input in the signup form.
This commit is contained in:
2024-11-27 14:17:06 +05:00
parent 1b43c85491
commit 3f68d835fe
5 changed files with 69 additions and 7 deletions

View File

@ -44,7 +44,9 @@ export async function signin(previousState: ActionState, formData: FormData) {
await authClient.phoneNumber.sendOtp({
phoneNumber: NUMBER_WITH_COUNTRY_CODE,
});
redirect(`/verify-otp?phone_number=${encodeURIComponent(phoneNumber)}`);
redirect(
`/verify-otp?phone_number=${encodeURIComponent(NUMBER_WITH_COUNTRY_CODE)}`,
);
}
type ActionState = {
@ -112,16 +114,17 @@ export async function signup(_actionState: ActionState, formData: FormData) {
atollId: parsedData.data.atoll_id,
house_name: parsedData.data.house_name,
id_card: parsedData.data.id_card,
dob: parsedData.data.dob,
dob: new Date(parsedData.data.dob),
role: "USER",
phoneNumber: NUMBER_WITH_COUNTRY_CODE,
},
});
await authClient.phoneNumber.sendOtp({
phoneNumber: newUser.phoneNumber,
});
// redirect(
// `/verify-otp?phone_number=${encodeURIComponent(newUser.phoneNumber)}`,
// );
redirect(
`/verify-otp?phone_number=${encodeURIComponent(newUser.phoneNumber)}`,
);
return { message: "Post created" };
}

25
actions/user-actions.ts Normal file
View File

@ -0,0 +1,25 @@
"use server";
import prisma from "@/lib/db";
import { revalidatePath } from "next/cache";
export async function VerifyUser(userId: string) {
const user = await prisma.user.findUnique({
where: {
id: userId,
},
});
if (!user) {
throw new Error("User not found");
}
user.verified = true;
await prisma.user.update({
where: {
id: userId,
},
data: {
verified: true,
},
});
revalidatePath("/users");
}