import { createId } from "@paralleldrive/cuid2"; export function generateSessionToken() { return createId(); } export const fromDate = (time: number, date = Date.now()) => { return new Date(date + time * 1000); }; // CredentialsProvider({ // name: "Credentials", // credentials: { // email: { label: "Email", type: "email" }, // password: { label: "Password", type: "password" }, // }, // authorize: async (credentials) => { // let user: Session["user"] | null = null; // if (!credentials?.email || !credentials?.password) return null; // if ( // typeof credentials.password !== "string" || // typeof credentials.email !== "string" // ) { // console.log("WARN: Password or Email is not a string."); // return null; // } // try { // // Add your own database logic here // const response = await db.query.users.findFirst({ // where: eq(users.email, String(credentials.email)), // }); // // No user found // if (!response || !response.password) { // if (!response?.password) return null; // } // user = response; // // Check password - using timing-safe comparison via bcrypt // const isValidPassword = await argon.verify( // String(response.password), // String(credentials?.password), // ); // if (!isValidPassword) return null; // console.log("User authenticated successfully:", user.id); // return { // name: user.name, // email: user.email, // image: user.image, // id: user.id, // role: user.role, // } as User; // } catch (e) { // console.log("WARN: Error while validating credentials."); // return null; // } // }, // }), // callback // async signIn({ user, account, profile, email, credentials }) { // console.log("πŸ‘‰ SignIn callback triggered", user?.id); // console.log("πŸ‘‰ SignIn callback credentials", credentials); // if (credentials && user.id) await createSession(user.id!); // // Return true to allow sign-in // return true; // }, // server action // export async function login(values: z.infer) { // return await signIn("credentials", values); // } // export async function register(values: z.infer) { // try { // const { success } = await api.auth.register({ // user: { // email: values.email, // name: values.name, // }, // password: values.password, // }); // await signIn("credentials", { // email: values.email, // password: values.password, // }); // return success; // } catch (e) { // return false; // } // } // export async function createSession(userId: string) { // if (!adapter.createSession) throw new Error("Adapter not initialized"); // const sessionToken = generateSessionToken(); // const sessionExpiry = fromDate(authConfig.session.maxAge); // console.log("πŸ‘‰ createSession", sessionToken); // const session = await adapter.createSession({ // sessionToken: sessionToken, // userId: userId, // expires: sessionExpiry, // }); // console.log("πŸ‘‰ createSession session", session); // const cookieStore = await cookies(); // cookieStore.set("authjs.session-token", sessionToken, { // expires: sessionExpiry, // }); // } // register page // "use client"; // import { cn } from "@/lib/utils"; // import { Button } from "@/components/ui/button"; // import { Card, CardContent } from "@/components/ui/card"; // import { Input } from "@/components/ui/input"; // import { zodResolver } from "@hookform/resolvers/zod"; // import { useForm } from "react-hook-form"; // import { z } from "zod"; // import { // Form, // FormControl, // FormField, // FormItem, // FormLabel, // FormMessage, // } from "@/components/ui/form"; // import { registerSchema } from "@/lib/validation/zod/user"; // import { appConfig, appRoutes } from "@/config"; // import Link from "next/link"; // import { login, register } from "@/server/actions/auth"; // import { toast } from "sonner"; // import { AuthProviderList, LeagalFooter } from "."; // export function RegisterForm({ // className, // ...props // }: React.ComponentProps<"div">) { // const form = useForm>({ // resolver: zodResolver(registerSchema), // defaultValues: { // name: "", // email: "", // password: "", // confirmPassword: "", // }, // }); // // 2. Define a submit handler. // async function onSubmit(values: z.infer) { // const success = await register(values); // if (!success) toast.error("Registrierung fehlgeschlagen"); // form.reset(); // } // return ( //
// // //
// //
//
//

Wilkommen

//

// Erstelle dein {appConfig.name} Konto //

//
// //
// // Oder mit // //
//
// ( // // Name // // // // // // )} // /> // ( // // Email // // // // // // )} // /> // ( // // Passwort // // // // // // )} // /> // ( // // Passwort Wiederholen // // // // // // )} // /> //
// //
// Du hast bereits ein Konto?{" "} // // Anmelden // //
//
//
// //
// Image //
//
//
// //
// ); // } // Login page // export function LoginForm({ // className, // ...props // }: React.ComponentProps<"div">) { // const form = useForm>({ // resolver: zodResolver(loginSchema), // defaultValues: { // email: "", // password: "", // }, // }); // // 2. Define a submit handler. // async function onSubmit(values: z.infer) { // const success = await login(values); // // if (!success) toast.error("Login fehlgeschlagen"); // // form.reset(); // } // return ( //
// // //
// //
//
//

Wilkommen ZurΓΌck

//

// Melde dich in deinem {appConfig.name} Konto an //

//
// //
// // Oder mit // //
//
// ( // // Email // // // // // // )} // /> // ( // //
// Passwort // // passwort vergessen? // //
// // // // //
// )} // /> //
// //
// Du hast noch kein Konto?{" "} // // Registrieren // //
//
//
// //
// Image //
//
//
// //
// ); // } // export function AuthProviderList() { // return ( //
// // // //
// ); // } // export function LeagalFooter() { // return ( //
// By clicking continue, you agree to our Terms of Service{" "} // and Privacy Policy. //
// ); // }