From ad67ae700e83bf2ec1748090e224bf77ba22c8a3 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Thu, 5 Sep 2024 18:04:01 +0100 Subject: [PATCH] Stash for debug --- bun.lockb | Bin 279032 -> 281894 bytes package.json | 1 + src/app/(site)/(auth)/register/page.tsx | 110 ------------------ src/app/layout.tsx | 13 ++- .../forms/auth/RegistrationForm.tsx | 7 ++ src/server/api/routers/auth.ts | 16 +++ src/server/auth.ts | 55 ++------- 7 files changed, 44 insertions(+), 158 deletions(-) diff --git a/bun.lockb b/bun.lockb index 47b9e14229865d1d24eeda46178b954747e25478..5043618f986e826d92fcb7157ba3cc564ef7d439 100755 GIT binary patch delta 59945 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

-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

olQ#9Qs2#Sb@3>s<>=Y4= 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 Rv?@y7fJx;>t)kUi{tp#igP;Ha delta 57865 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¬N>{Wppl%hd>|oHps-nl! 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�bq#*Hb=V@C^%dkU#O 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 { }; export default RegisterPage; - -// const SignUpPage = () => { -// const router = useRouter(); -// -// const signup = api.auth.create.useMutation({ -// onSuccess: () => router.push("/auth/signin"), -// onError: (error) => { -// logger.error("signup", "error", error); -// }, -// }); -// const [userInfo, setUserInfo] = React.useState({ -// email: "fergal.moran+opengifame@gmail.com", -// password: "secret", -// repeatPassword: "secret", -// }); -// -// return ( -//

-//
-//

-// Create new account -//

-//
-// -//
-//
-//
{ -// e.preventDefault(); -// signup.mutate(userInfo); -// }} -// method="post" -// > -//
-// -//
-// -// setUserInfo({ ...userInfo, email: target.value }) -// } -// className="input input-bordered w-full" -// /> -//
-//
-// -//
-// -//
-// -// setUserInfo({ ...userInfo, password: target.value }) -// } -// className="input input-bordered w-full" -// /> -//
-//
-//
-// -//
-// -// setUserInfo({ ...userInfo, repeatPassword: target.value }) -// } -// className="input input-bordered w-full" -// /> -//
-//
-// -//
-// -//
-//
-// -//
-// -//
-//
-//
-//
-// ); -// }; -// -// export default SignUpPage; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d920f48..57b2271 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,27 +1,30 @@ import { Inter as FontSans } from "next/font/google"; import "@/styles/globals.css"; -import { type Metadata } from "next"; +import { type Metadata, Viewport } from "next"; import { TRPCReactProvider } from "@/trpc/react"; import { cn } from "@/lib/utils"; import { ThemeProvider } from "next-themes"; import { TailwindIndicator } from "@/components/tailwind-indicator"; import { Toaster } from "@/components/ui/toaster"; +import React from "react"; const fontSans = FontSans({ subsets: ["latin"], variable: "--font-sans", }); +export const viewport: Viewport = { + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "white" }, + { media: "(prefers-color-scheme: dark)", color: "black" }, + ], +}; export const metadata: Metadata = { title: "Open Gifame", description: "Contains traces of gifs", icons: [{ rel: "icon", url: "/favicon.ico" }], - themeColor: [ - { media: "(prefers-color-scheme: light)", color: "white" }, - { media: "(prefers-color-scheme: dark)", color: "black" }, - ], }; export default function RootLayout({ diff --git a/src/components/forms/auth/RegistrationForm.tsx b/src/components/forms/auth/RegistrationForm.tsx index 98b22d5..9cb37ba 100644 --- a/src/components/forms/auth/RegistrationForm.tsx +++ b/src/components/forms/auth/RegistrationForm.tsx @@ -19,6 +19,8 @@ import { logger } from "@/lib/logger"; import { Icons } from "@/components/icons"; import { cn } from "@/lib/utils"; import { toast } from "sonner"; +import { useRouter } from "next/navigation"; + const registrationSchema = z .object({ email: z.string().email({ message: "Invalid email address" }), @@ -41,6 +43,7 @@ type RegistrationFormValues = z.infer; const RegistrationForm: React.FC = () => { const [isLoading, setIsLoading] = React.useState(false); + const router = useRouter(); const form = useForm({ resolver: zodResolver(registrationSchema), }); @@ -52,6 +55,7 @@ const RegistrationForm: React.FC = () => { try { await createUser.mutateAsync(data); toast("User registered successfully"); + router.push("/signin"); } catch (error) { logger.error("RegistrationForm", "error", error); toast("Failed to register user"); @@ -68,6 +72,7 @@ const RegistrationForm: React.FC = () => { ( Email @@ -85,6 +90,7 @@ const RegistrationForm: React.FC = () => { ( Password @@ -102,6 +108,7 @@ const RegistrationForm: React.FC = () => { ( Confirm password diff --git a/src/server/api/routers/auth.ts b/src/server/api/routers/auth.ts index e6259f0..6802220 100644 --- a/src/server/api/routers/auth.ts +++ b/src/server/api/routers/auth.ts @@ -2,6 +2,7 @@ import { createTRPCRouter, publicProcedure } from "../trpc"; import { z } from "zod"; import { users } from "@/server/db/schema"; import bcrypt from "bcrypt"; +import { and, eq } from "drizzle-orm"; export const authRouter = createTRPCRouter({ create: publicProcedure @@ -14,4 +15,19 @@ export const authRouter = createTRPCRouter({ }); return user; }), + + login: publicProcedure + .input(z.object({ email: z.string().email(), password: z.string().min(5) })) + .query(async ({ ctx, input }) => { + const hashedPassword = await bcrypt.hash(input.password, 10); + const user = await ctx.db + .select() + .from(users) + .where( + and(eq(users.email, input.email), eq(users.password, hashedPassword)), + ) + .limit(1); + + return user[0]; + }), }); diff --git a/src/server/auth.ts b/src/server/auth.ts index 41fd773..cdd6ba5 100644 --- a/src/server/auth.ts +++ b/src/server/auth.ts @@ -4,9 +4,9 @@ import { getServerSession, type DefaultSession, type NextAuthOptions, + RequestInternal, } from "next-auth"; import { type Adapter } from "next-auth/adapters"; -import { db } from "@/server/db"; import { accounts, sessions, @@ -15,33 +15,18 @@ import { } from "@/server/db/schema"; import { api } from "@/trpc/server"; import { env } from "@/env"; +import { db } from "@/server/db"; + +import Credentials from "next-auth/providers/credentials"; -/** - * Module augmentation for `next-auth` types. Allows us to add custom properties to the `session` - * object and keep type safety. - * - * @see https://next-auth.js.org/getting-started/typescript#module-augmentation - */ declare module "next-auth" { interface Session extends DefaultSession { user: { id: string; - // ...other properties - // role: UserRole; } & DefaultSession["user"]; } - - // interface User { - // // ...other properties - // // role: UserRole; - // } } -/** - * Options for NextAuth.js used to configure adapters, providers, callbacks, etc. - * - * @see https://next-auth.js.org/configuration/options - */ export const authOptions: NextAuthOptions = { callbacks: { session: ({ session, user }) => ({ @@ -59,13 +44,13 @@ export const authOptions: NextAuthOptions = { verificationTokensTable: verificationTokens, }) as Adapter, providers: [ - CredentialsProvider({ - type: "credentials", + Credentials({ + name: "credentials", credentials: { email: { label: "Email", type: "email" }, password: { label: "Password", type: "password" }, }, - authorize: async (credentials, request) => { + authorize: async (credentials, _request) => { if (!credentials) { return null; } @@ -73,30 +58,14 @@ export const authOptions: NextAuthOptions = { email: credentials.email, password: credentials.password, }); - // const user = await prisma.users.findUnique({ - // where: { email: credentials.email }, - // select: { - // id: true, - // email: true, - // password: true, - // }, - // }); - // if (user && user.password) { - // const hashed = await confirmPassword( - // credentials.password, - // user.password, - // ); - // if (hashed) { - // return omit(user, "password"); - // } - // } - return null; + if (!result) { + return null; + } + return { id: result.id, email: result.email }; }, }), ], - session: { - strategy: "jwt", - }, + secret: env.NEXTAUTH_SECRET, debug: env.NODE_ENV === "development", pages: {