feat: setup auth

This commit is contained in:
Henry
2024-04-10 22:03:27 +01:00
parent b54cfe8f91
commit 1ba6fffd8b
4 changed files with 34 additions and 5 deletions

View File

@@ -1,22 +1,23 @@
"use client"; "use client";
import { Formik, Form, Field } from "formik"; import { Formik, Form, Field } from "formik";
import { signIn } from "next-auth/react"; import { api } from "~/trpc/react";
interface FormValues { interface FormValues {
email: string; email: string;
} }
export function Login() { export function Login() {
const login = api.auth.login.useMutation();
return ( return (
<Formik <Formik
initialValues={{ initialValues={{
email: "", email: "",
}} }}
onSubmit={async (values: FormValues) => { onSubmit={(values: FormValues) => {
await signIn("email", { login.mutate({
email: values.email, email: values.email,
callbackUrl: "/boards",
}); });
}} }}
> >

View File

@@ -1,3 +1,4 @@
import { authRouter } from "~/server/api/routers/auth";
import { boardRouter } from "~/server/api/routers/board"; import { boardRouter } from "~/server/api/routers/board";
import { cardRouter } from "~/server/api/routers/card"; import { cardRouter } from "~/server/api/routers/card";
import { labelRouter } from "~/server/api/routers/label"; import { labelRouter } from "~/server/api/routers/label";
@@ -12,6 +13,7 @@ import { createTRPCRouter } from "~/server/api/trpc";
* All routers added in /api/routers should be manually added here. * All routers added in /api/routers should be manually added here.
*/ */
export const appRouter = createTRPCRouter({ export const appRouter = createTRPCRouter({
auth: authRouter,
board: boardRouter, board: boardRouter,
card: cardRouter, card: cardRouter,
label: labelRouter, label: labelRouter,

View File

@@ -0,0 +1,25 @@
import { z } from "zod";
import { generateUID } from "~/utils/generateUID";
import {
createTRPCRouter,
publicProcedure,
} from "~/server/api/trpc";
export const authRouter = createTRPCRouter({
login: publicProcedure
.input(z.object({ email: z.string() }))
.mutation(async ({ ctx, input }) => {
const { data, error } = await ctx.supabase.auth.signInWithOtp({
email: input.email,
options: {
emailRedirectTo: '/boards',
},
})
console.log({ data })
console.log({ error })
return data;
})
});

View File

@@ -13,7 +13,7 @@ import superjson from "superjson";
import { ZodError } from "zod"; import { ZodError } from "zod";
import { auth } from "~/server/auth"; import { auth } from "~/server/auth";
import { db } from "~/server/db"; import { db, supabase } from "~/server/db";
/** /**
* 1. CONTEXT * 1. CONTEXT
@@ -44,6 +44,7 @@ export const createInnerTRPCContext = async (opts: CreateContextOptions) => {
session, session,
headers: opts.headers, headers: opts.headers,
db, db,
supabase
}; };
}; };