mirror of
https://github.com/i701/sarlink-portal.git
synced 2025-04-19 20:56:52 +00:00
feat: implement AuthLayout component and streamline OTP verification forms with enhanced messaging
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 1m49s
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 1m49s
This commit is contained in:
parent
3703b3e8fc
commit
a4ffb1e34a
22
app/(auth)/auth/layout.tsx
Normal file
22
app/(auth)/auth/layout.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
|
||||||
|
export default function AuthLayout({
|
||||||
|
children,
|
||||||
|
}: { children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<div className="bg-gray-100 dark:bg-black w-full h-screen flex items-center justify-center font-sans">
|
||||||
|
<div className="flex flex-col items-center justify-center w-full h-full ">
|
||||||
|
<Image alt="Sar Link Logo" src="/logo.png" width={100} height={100} />
|
||||||
|
<div className="mt-4 flex flex-col items-center justify-center">
|
||||||
|
<h4 className="font-bold text-xl text-sarLinkOrange dark:text-gray-400">
|
||||||
|
SAR Link Portal
|
||||||
|
</h4>
|
||||||
|
<p className="text-gray-400">
|
||||||
|
Pay for your devices and track your bills.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -2,18 +2,5 @@ import LoginForm from "@/components/auth/login-form";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
|
||||||
export default async function LoginPage() {
|
export default async function LoginPage() {
|
||||||
return (
|
return <LoginForm />;
|
||||||
<div className="dark:bg-black w-full h-screen flex items-center justify-center font-sans">
|
|
||||||
<div className="flex flex-col items-center justify-center w-full h-full ">
|
|
||||||
<Image alt="Sar Link Logo" src="/logo.png" width={100} height={100} />
|
|
||||||
<div className="mt-4 flex flex-col items-center justify-center">
|
|
||||||
<h4 className="font-bold text-xl text-gray-600">SAR Link Portal</h4>
|
|
||||||
<p className="text-gray-500">
|
|
||||||
Pay for your devices and track your bills.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<LoginForm />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -13,25 +13,5 @@ export default async function SignupPage({
|
|||||||
return redirect("/auth/login");
|
return redirect("/auth/login");
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return <SignUpForm />;
|
||||||
<div className="dark:bg-black w-full h-screen flex items-center justify-center font-sans">
|
|
||||||
<div className="flex flex-col items-center justify-center w-full h-full ">
|
|
||||||
<Image
|
|
||||||
priority
|
|
||||||
alt="Sar Link Logo"
|
|
||||||
src="/logo.png"
|
|
||||||
width={100}
|
|
||||||
height={100}
|
|
||||||
style={{ width: "auto", height: "auto" }}
|
|
||||||
/>
|
|
||||||
<div className="mt-4 flex flex-col items-center justify-center">
|
|
||||||
<h4 className="font-bold text-xl text-gray-600">SAR Link Portal</h4>
|
|
||||||
<p className="text-gray-500">
|
|
||||||
Pay for your devices and track your bills.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<SignUpForm />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -26,18 +26,5 @@ export default async function VerifyRegistrationOTP({
|
|||||||
return <ClientErrorMessage message={error.message} />;
|
return <ClientErrorMessage message={error.message} />;
|
||||||
}
|
}
|
||||||
if (response.otp_verified) redirect("/auth/signin");
|
if (response.otp_verified) redirect("/auth/signin");
|
||||||
return (
|
return <VerifyRegistrationOTPForm phone_number={phone_number} />;
|
||||||
<div className="bg-gray-100 dark:bg-black w-full h-screen flex items-center justify-center font-sans">
|
|
||||||
<div className="flex flex-col items-center justify-center w-full h-full ">
|
|
||||||
<Image alt="Sar Link Logo" src="/logo.png" width={100} height={100} />
|
|
||||||
<div className="mt-4 flex flex-col items-center justify-center">
|
|
||||||
<h4 className="font-bold text-xl text-gray-600">SAR Link Portal</h4>
|
|
||||||
<p className="text-gray-500">
|
|
||||||
Pay for your devices and track your bills.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<VerifyRegistrationOTPForm phone_number={phone_number} />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -17,18 +17,5 @@ export default async function VerifyOTP({
|
|||||||
phone_number,
|
phone_number,
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return <VerifyOTPForm phone_number={phone_number} />;
|
||||||
<div className="bg-gray-100 dark:bg-black w-full h-screen flex items-center justify-center font-sans">
|
|
||||||
<div className="flex flex-col items-center justify-center w-full h-full ">
|
|
||||||
<Image alt="Sar Link Logo" src="/logo.png" width={100} height={100} />
|
|
||||||
<div className="mt-4 flex flex-col items-center justify-center">
|
|
||||||
<h4 className="font-bold text-xl text-gray-600">SAR Link Portal</h4>
|
|
||||||
<p className="text-gray-500">
|
|
||||||
Pay for your devices and track your bills.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<VerifyOTPForm phone_number={phone_number} />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,9 @@ export default function VerifyOTPForm({
|
|||||||
>
|
>
|
||||||
<div className="grid pb-4 pt-4 gap-4 px-4">
|
<div className="grid pb-4 pt-4 gap-4 px-4">
|
||||||
<div className="flex flex-col gap-4">
|
<div className="flex flex-col gap-4">
|
||||||
|
<p className="text-center text-sm text-sarLinkOrange">
|
||||||
|
Login OTP Sent to {phone_number}
|
||||||
|
</p>
|
||||||
<Label htmlFor="otp-number" className="sr-only text-gray-500">
|
<Label htmlFor="otp-number" className="sr-only text-gray-500">
|
||||||
Enter the OTP
|
Enter the OTP
|
||||||
</Label>
|
</Label>
|
||||||
@ -70,7 +73,7 @@ export default function VerifyOTPForm({
|
|||||||
{...register("pin")}
|
{...register("pin")}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter OTP"
|
placeholder="Enter OTP"
|
||||||
className="bg-white dark:bg-sarLinkOrange/10"
|
className="bg-white dark:bg-black"
|
||||||
/>
|
/>
|
||||||
{errors.pin && (
|
{errors.pin && (
|
||||||
<p className="text-red-500 text-sm">{errors.pin.message}</p>
|
<p className="text-red-500 text-sm">{errors.pin.message}</p>
|
||||||
@ -81,9 +84,9 @@ export default function VerifyOTPForm({
|
|||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<div className="mb-4 text-center text-sm">
|
<div className="mb-4 text-center text-sm">
|
||||||
Go back to{" "}
|
Change{" "}
|
||||||
<Link href="signin" className="underline">
|
<Link href="signin" className="underline">
|
||||||
login
|
phone number
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -36,8 +36,7 @@ export default function VerifyRegistrationOTPForm({
|
|||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
<p className="bg-sarLinkOrange/50 border border-yellow-900/50 dark:border-sarLinkOrange/50 rounded p-2 text-center text-sm text-gray-900 dark:text-gray-300">
|
<p className="bg-sarLinkOrange/50 border border-yellow-900/50 dark:border-sarLinkOrange/50 rounded p-2 text-center text-sm text-gray-900 dark:text-gray-300">
|
||||||
Please enter the OTP sent to your mobile number [{phone_number}]
|
Account verification OTP sent to [{phone_number}]
|
||||||
to verify and complete your registration.
|
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@ -84,12 +83,14 @@ export default function VerifyRegistrationOTPForm({
|
|||||||
)}
|
)}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<div className="mb-4 text-center text-sm">
|
{state.status === "verify_success" && (
|
||||||
Go back to{" "}
|
<div className="mb-4 text-center text-sm">
|
||||||
<Link href="signin" className="underline">
|
Go to{" "}
|
||||||
login
|
<Link href="signin" className="underline">
|
||||||
</Link>
|
login
|
||||||
</div>
|
</Link>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -199,7 +199,9 @@ export async function VerifyRegistrationOTP(
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
message: "Your account could not be verified. Please contact support.",
|
message:
|
||||||
|
data.message ||
|
||||||
|
"Your account could not be verified. Please contact support.",
|
||||||
status: "verify_error",
|
status: "verify_error",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user