mirror of
https://github.com/i701/sarlink-portal.git
synced 2025-07-02 09:48:22 +00:00
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:
@ -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
25
actions/user-actions.ts
Normal 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");
|
||||
}
|
Reference in New Issue
Block a user