fix: clean src
This commit is contained in:
@@ -1,20 +0,0 @@
|
|||||||
import { createClient } from "@/utils/supabase/server";
|
|
||||||
import { NextResponse } from "next/server";
|
|
||||||
import { cookies } from "next/headers";
|
|
||||||
|
|
||||||
export async function GET(request: Request) {
|
|
||||||
// The `/auth/callback` route is required for the server-side auth flow implemented
|
|
||||||
// by the Auth Helpers package. It exchanges an auth code for the user's session.
|
|
||||||
// https://supabase.com/docs/guides/auth/auth-helpers/nextjs#managing-sign-in-with-code-exchange
|
|
||||||
const requestUrl = new URL(request.url);
|
|
||||||
const code = requestUrl.searchParams.get("code");
|
|
||||||
|
|
||||||
if (code) {
|
|
||||||
const cookieStore = cookies();
|
|
||||||
const supabase = createClient(cookieStore);
|
|
||||||
await supabase.auth.exchangeCodeForSession(code);
|
|
||||||
}
|
|
||||||
|
|
||||||
// URL to redirect to after sign in process completes
|
|
||||||
return NextResponse.redirect(requestUrl.origin);
|
|
||||||
}
|
|
||||||
@@ -18,11 +18,7 @@ export default function RootLayout({
|
|||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" className={GeistSans.className}>
|
<html lang="en" className={GeistSans.className}>
|
||||||
<body className="bg-background text-foreground">
|
<body>{children}</body>
|
||||||
<main className="min-h-screen flex flex-col items-center">
|
|
||||||
{children}
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,118 +0,0 @@
|
|||||||
import Link from "next/link";
|
|
||||||
import { headers, cookies } from "next/headers";
|
|
||||||
import { createClient } from "@/utils/supabase/server";
|
|
||||||
import { redirect } from "next/navigation";
|
|
||||||
|
|
||||||
export default function Login({
|
|
||||||
searchParams,
|
|
||||||
}: {
|
|
||||||
searchParams: { message: string };
|
|
||||||
}) {
|
|
||||||
const signIn = async (formData: FormData) => {
|
|
||||||
"use server";
|
|
||||||
|
|
||||||
const email = formData.get("email") as string;
|
|
||||||
const password = formData.get("password") as string;
|
|
||||||
const cookieStore = cookies();
|
|
||||||
const supabase = createClient(cookieStore);
|
|
||||||
|
|
||||||
const { error } = await supabase.auth.signInWithPassword({
|
|
||||||
email,
|
|
||||||
password,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
return redirect("/login?message=Could not authenticate user");
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect("/");
|
|
||||||
};
|
|
||||||
|
|
||||||
const signUp = async (formData: FormData) => {
|
|
||||||
"use server";
|
|
||||||
|
|
||||||
const origin = headers().get("origin");
|
|
||||||
const email = formData.get("email") as string;
|
|
||||||
const password = formData.get("password") as string;
|
|
||||||
const cookieStore = cookies();
|
|
||||||
const supabase = createClient(cookieStore);
|
|
||||||
|
|
||||||
const { error } = await supabase.auth.signUp({
|
|
||||||
email,
|
|
||||||
password,
|
|
||||||
options: {
|
|
||||||
emailRedirectTo: `${origin}/auth/callback`,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
return redirect("/login?message=Could not authenticate user");
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect("/login?message=Check email to continue sign in process");
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="flex-1 flex flex-col w-full px-8 sm:max-w-md justify-center gap-2">
|
|
||||||
<Link
|
|
||||||
href="/"
|
|
||||||
className="absolute left-8 top-8 py-2 px-4 rounded-md no-underline text-foreground bg-btn-background hover:bg-btn-background-hover flex items-center group text-sm"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth="2"
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
className="mr-2 h-4 w-4 transition-transform group-hover:-translate-x-1"
|
|
||||||
>
|
|
||||||
<polyline points="15 18 9 12 15 6" />
|
|
||||||
</svg>{" "}
|
|
||||||
Back
|
|
||||||
</Link>
|
|
||||||
|
|
||||||
<form
|
|
||||||
className="animate-in flex-1 flex flex-col w-full justify-center gap-2 text-foreground"
|
|
||||||
action={signIn}
|
|
||||||
>
|
|
||||||
<label className="text-md" htmlFor="email">
|
|
||||||
Email
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
className="rounded-md px-4 py-2 bg-inherit border mb-6"
|
|
||||||
name="email"
|
|
||||||
placeholder="you@example.com"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
<label className="text-md" htmlFor="password">
|
|
||||||
Password
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
className="rounded-md px-4 py-2 bg-inherit border mb-6"
|
|
||||||
type="password"
|
|
||||||
name="password"
|
|
||||||
placeholder="••••••••"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
<button className="bg-green-700 rounded-md px-4 py-2 text-foreground mb-2">
|
|
||||||
Sign In
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
formAction={signUp}
|
|
||||||
className="border border-foreground/20 rounded-md px-4 py-2 text-foreground mb-2"
|
|
||||||
>
|
|
||||||
Sign Up
|
|
||||||
</button>
|
|
||||||
{searchParams?.message && (
|
|
||||||
<p className="mt-4 p-4 bg-foreground/10 text-foreground text-center">
|
|
||||||
{searchParams.message}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
24
app/page.tsx
24
app/page.tsx
@@ -1,25 +1,3 @@
|
|||||||
import { createClient } from "@/utils/supabase/server";
|
|
||||||
import { cookies } from "next/headers";
|
|
||||||
|
|
||||||
export default async function Index() {
|
export default async function Index() {
|
||||||
const cookieStore = cookies();
|
return <>Hello</>;
|
||||||
|
|
||||||
const canInitSupabaseClient = () => {
|
|
||||||
// This function is just for the interactive tutorial.
|
|
||||||
// Feel free to remove it once you have Supabase connected.
|
|
||||||
try {
|
|
||||||
createClient(cookieStore);
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const isSupabaseConnected = canInitSupabaseClient();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<h1 className="text-xl">hello</h1>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"start": "next start"
|
"start": "next start"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@radix-ui/react-slot": "^1.0.2",
|
||||||
"@supabase/ssr": "latest",
|
"@supabase/ssr": "latest",
|
||||||
"@supabase/supabase-js": "latest",
|
"@supabase/supabase-js": "latest",
|
||||||
"autoprefixer": "10.4.15",
|
"autoprefixer": "10.4.15",
|
||||||
|
|||||||
BIN
public/stan.jpg
Normal file
BIN
public/stan.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 130 KiB |
Reference in New Issue
Block a user