From 53ded6d158d98d17cd1f5ba67558f3fb73500780 Mon Sep 17 00:00:00 2001 From: Junseo Park Date: Wed, 17 Feb 2021 15:56:37 +0900 Subject: [PATCH] feat: added csrftoken at addbot --- pages/addbot.tsx | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/pages/addbot.tsx b/pages/addbot.tsx index 5e917a7..0eeab92 100644 --- a/pages/addbot.tsx +++ b/pages/addbot.tsx @@ -9,8 +9,11 @@ import { parseCookie, redirectTo } from '@utils/Tools' import { AddBotSubmitSchema } from '@utils/Yup' import { categories, library } from '@utils/Constants' import { User } from '@types' +import { getToken } from '@utils/Csrf' +import Fetch from '@utils/Fetch' const CheckBox = dynamic(() => import('@components/Form/CheckBox')) +const CsrfToken = dynamic(() => import('@components/Form/CsrfToken')) const Label = dynamic(() => import('@components/Form/Label')) const Input = dynamic(() => import('@components/Form/Input')) const Divider = dynamic(() => import('@components/Divider')) @@ -24,12 +27,19 @@ const Container = dynamic(() => import('@components/Container')) const Message = dynamic(() => import('@components/Message')) const SEO = dynamic(() => import('@components/SEO')) -const AddBot:NextPage = ({ logged, user }) => { +const AddBot:NextPage = ({ logged, user, csrfToken }) => { const router = useRouter() function toLogin() { localStorage.redirectTo = window.location.href redirectTo(router, 'login') } + + async function submitBot(value) { + const res = await Fetch(`/bots/${value.id}`, { method: 'POST', body: JSON.stringify(value), headers: { 'content-type': 'application/json' } }) + console.log(res) + + return res + } if(!logged) { toLogin() return @@ -51,10 +61,13 @@ const AddBot:NextPage = ({ logged, user }) => { discord: '', category: [], intro: '', - desc: '' + desc: '', + _csrf: csrfToken }} validationSchema={AddBotSubmitSchema} - onSubmit={(values) => { alert(JSON.stringify(values)) }}> + onSubmit={async(values) => { + submitBot(values) + }}> {({ errors, touched, values, setFieldTouched, setFieldValue }) => (
@@ -142,14 +155,15 @@ const AddBot:NextPage = ({ logged, user }) => { } export const getServerSideProps = async (ctx: NextPageContext) => { - const parsed = parseCookie(ctx) + const parsed = parseCookie(ctx.req) const user = await get.Authorization(parsed?.token) - return { props: { logged: !!user, user: await get.user.load(user || '') } } + return { props: { logged: !!user, user: await get.user.load(user || ''), csrfToken: getToken(ctx.req, ctx.res) } } } interface AddBotProps { - logged: boolean, + logged: boolean user: User + csrfToken: string } export default AddBot \ No newline at end of file