From 461ad2b9d83f04c5497106157ab1ab106927fd48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=EB=8D=94?= Date: Wed, 27 Jan 2021 22:52:25 +0900 Subject: [PATCH] feat: added discord callback --- pages/callback/discord.tsx | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pages/callback/discord.tsx diff --git a/pages/callback/discord.tsx b/pages/callback/discord.tsx new file mode 100644 index 0000000..225414c --- /dev/null +++ b/pages/callback/discord.tsx @@ -0,0 +1,52 @@ +import { NextPage, NextPageContext } from 'next' +import { useEffect, useState } from 'react' +import { useRouter } from 'next/router' + +import { verify } from '@utils/Jwt' +import { get } from '@utils/Query' +import { parseCookie, redirectTo } from '@utils/Tools' +import Loader from '@components/Loader' +import { User } from '@types' + +const DiscordCallback:NextPage = ({ data }) => { + const router = useRouter() + const [ redirect, setRedirect ] = useState(false) + useEffect(() => { + localStorage.userCache = JSON.stringify({ + id: data.id, + username: data.username, + tag: data.tag, + perm: data.perm + }) + setRedirect(true) + }, [ data ]) + if(!data) { + router.push('/api/auth/discord') + return
+

리다이랙트중입니다.

+
+ } + + return <> + + { + redirect ? redirectTo(router, localStorage.redirectTo ?? '/') : '' + } + +} + +export const getServerSideProps = async(ctx: NextPageContext) => { + const parsed = parseCookie(ctx) + const token = verify(parsed?.token ?? '') + if(!token) return { props: { data: null } } + + const userinfo = await get.user.load(token.id) + + return { props: { data: userinfo } } +} + +interface DiscordCallbackProps { + data: User | null +} + +export default DiscordCallback \ No newline at end of file