aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-10 20:50:19 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-12 12:20:41 +0000
commit140311d7419fa2192e5149df8f589c3c3733a399 (patch)
treeddf532bbf09e4f7c947854b5515c0e8674030645 /apps/web/app
parent385f9f0b055678420e820b8ed30e595871630e58 (diff)
downloadkarakeep-140311d7419fa2192e5149df8f589c3c3733a399.tar.zst
feat: Support forget and reset password
Diffstat (limited to 'apps/web/app')
-rw-r--r--apps/web/app/forgot-password/page.tsx22
-rw-r--r--apps/web/app/reset-password/page.tsx36
2 files changed, 58 insertions, 0 deletions
diff --git a/apps/web/app/forgot-password/page.tsx b/apps/web/app/forgot-password/page.tsx
new file mode 100644
index 00000000..1faa8967
--- /dev/null
+++ b/apps/web/app/forgot-password/page.tsx
@@ -0,0 +1,22 @@
+import { redirect } from "next/navigation";
+import KarakeepLogo from "@/components/KarakeepIcon";
+import ForgotPasswordForm from "@/components/signin/ForgotPasswordForm";
+import { getServerAuthSession } from "@/server/auth";
+
+export default async function ForgotPasswordPage() {
+ const session = await getServerAuthSession();
+ if (session) {
+ redirect("/");
+ }
+
+ return (
+ <div className="flex min-h-screen items-center justify-center bg-gray-50 px-4 py-12 sm:px-6 lg:px-8">
+ <div className="w-full max-w-md space-y-8">
+ <div className="flex items-center justify-center">
+ <KarakeepLogo height={80} />
+ </div>
+ <ForgotPasswordForm />
+ </div>
+ </div>
+ );
+}
diff --git a/apps/web/app/reset-password/page.tsx b/apps/web/app/reset-password/page.tsx
new file mode 100644
index 00000000..1d05606e
--- /dev/null
+++ b/apps/web/app/reset-password/page.tsx
@@ -0,0 +1,36 @@
+import { redirect } from "next/navigation";
+import KarakeepLogo from "@/components/KarakeepIcon";
+import ResetPasswordForm from "@/components/signin/ResetPasswordForm";
+import { getServerAuthSession } from "@/server/auth";
+
+interface ResetPasswordPageProps {
+ searchParams: {
+ token?: string;
+ };
+}
+
+export default async function ResetPasswordPage({
+ searchParams,
+}: ResetPasswordPageProps) {
+ const session = await getServerAuthSession();
+ if (session) {
+ redirect("/");
+ }
+
+ const { token } = searchParams;
+
+ if (!token) {
+ redirect("/signin");
+ }
+
+ return (
+ <div className="flex min-h-screen items-center justify-center bg-gray-50 px-4 py-12 sm:px-6 lg:px-8">
+ <div className="w-full max-w-md space-y-8">
+ <div className="flex items-center justify-center">
+ <KarakeepLogo height={80} />
+ </div>
+ <ResetPasswordForm token={token} />
+ </div>
+ </div>
+ );
+}