From 011e71e71510e31a84602efb41add2bc6e43cd95 Mon Sep 17 00:00:00 2001 From: MeowcaTheoRange Date: Sun, 24 Sep 2023 20:38:49 -0500 Subject: [PATCH] Tweaks and fixes, add code generator --- src/components/form/template/clan.tsx | 4 +++- src/pages/api/generate/code/index.ts | 23 +++++++++++++++++++++++ src/pages/edit/clan/[clan]/index.tsx | 6 +++++- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/pages/api/generate/code/index.ts diff --git a/src/components/form/template/clan.tsx b/src/components/form/template/clan.tsx index 742cf95..e183ef3 100644 --- a/src/components/form/template/clan.tsx +++ b/src/components/form/template/clan.tsx @@ -4,6 +4,7 @@ import globals from "@/styles/global.module.css"; import form_globals from "@/styles/global_form.module.css"; import { Color3 } from "@/types/assist/color"; import { SubmitClan, SubmitClanSchema } from "@/types/client/clan"; +import { getCookie } from "cookies-next"; import { ArrayHelpers, ErrorMessage, Field, FieldArray, Form, Formik } from "formik"; import { NextRouter } from "next/router"; import { useState } from "react"; @@ -34,7 +35,8 @@ export default function ClanFormTemplate({ name: "", pronouns: [["", "", ""]] } - ] + ], + code: getCookie("TROLLCALL_CODE") } as SubmitClan) } validationSchema={SubmitClanSchema} diff --git a/src/pages/api/generate/code/index.ts b/src/pages/api/generate/code/index.ts new file mode 100644 index 0000000..4a36e61 --- /dev/null +++ b/src/pages/api/generate/code/index.ts @@ -0,0 +1,23 @@ +import { mainDB } from "@/lib/db/mongodb"; +import { hash } from "argon2"; +import { NextApiRequest, NextApiResponse } from "next"; + +export async function addMany( + collection: string, + items: { [key: string]: any }[] +) { + const selectedCollection = mainDB.collection(collection); + return await selectedCollection.insertMany(items, { ordered: true }); +} + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse +) { + const { body, cookies, query, method } = req; + if (method === "GET") { + if (query.code == null) return res.status(400).end(); + + return res.status(200).send(await hash(query.code.toString())); + } else return res.status(405).end(); +} diff --git a/src/pages/edit/clan/[clan]/index.tsx b/src/pages/edit/clan/[clan]/index.tsx index 42a811a..8c18213 100644 --- a/src/pages/edit/clan/[clan]/index.tsx +++ b/src/pages/edit/clan/[clan]/index.tsx @@ -9,6 +9,7 @@ import { ClientClan } from "@/types/clan"; import { ThemerGetSet } from "@/types/generics"; import AuthContext from "@/utility/react/AuthContext"; import { defaultTheme } from "@/utility/react/Themer"; +import { getCookie } from "cookies-next"; import { GetServerSideProps, GetStaticPropsContext } from "next"; import { useRouter } from "next/router"; import { useContext, useEffect, useState } from "react"; @@ -38,7 +39,10 @@ export default function AddTroll({ router={router} method="PUT" onSubmitURI={`/api/clan/${clan.name}`} - initialValues={ClientClanToSubmitClan(clan)} + initialValues={{ + ...ClientClanToSubmitClan(clan), + code: getCookie("TROLLCALL_CODE") + }} /> ) : (