나의 봇
한국 디스코드봇 리스트 API를 활용하여 봇에 다양한 기능을 추가해보세요.
diff --git a/pages/manage/[id].tsx b/pages/manage/[id].tsx
index 987f91c..7615a73 100644
--- a/pages/manage/[id].tsx
+++ b/pages/manage/[id].tsx
@@ -35,6 +35,7 @@ const Message = dynamic(() => import('@components/Message'))
const Modal = dynamic(() => import('@components/Modal'))
const Captcha = dynamic(() => import('@components/Captcha'))
const SEO = dynamic(() => import('@components/SEO'))
+const Login = dynamic(() => import('@components/Login'))
const ManageBotPage:NextPage = ({ bot, user, csrfToken, theme }) => {
const [ data, setData ] = useState(null)
@@ -42,10 +43,6 @@ const ManageBotPage:NextPage = ({ bot, user, csrfToken, theme })
const [ transferModal, setTransferModal ] = useState(false)
const [ deleteModal, setDeleteModal ] = useState(false)
const router = useRouter()
- function toLogin() {
- localStorage.redirectTo = window.location.href
- redirectTo(router, 'login')
- }
async function submitBot(value: ManageBot) {
const res = await Fetch(`/bots/${bot.id}`, { method: 'PATCH', body: JSON.stringify(cleanObject(value)) })
@@ -59,10 +56,9 @@ const ManageBotPage:NextPage = ({ bot, user, csrfToken, theme })
}
if(!bot) return
- if(!user) {
- toLogin()
- return
- }
+ if(!user) return
+
+
if(!(bot.owners as User[]).find(el => el.id === user.id) && !checkUserFlag(user.flags, 'staff')) return
return
diff --git a/pages/panel.tsx b/pages/panel.tsx
index 1108f85..7d2304a 100644
--- a/pages/panel.tsx
+++ b/pages/panel.tsx
@@ -4,7 +4,7 @@ import dynamic from 'next/dynamic'
import { useRouter } from 'next/router'
import { get } from '@utils/Query'
-import { parseCookie, redirectTo } from '@utils/Tools'
+import { parseCookie } from '@utils/Tools'
import { Bot, SubmittedBot, User } from '@types'
import Fetch from '@utils/Fetch'
import { getToken } from '@utils/Csrf'
@@ -15,18 +15,14 @@ const ResponsiveGrid = dynamic(() => import('@components/ResponsiveGrid'))
const Button = dynamic(() => import('@components/Button'))
const BotCard = dynamic(() => import('@components/BotCard'))
const SubmittedBotCard = dynamic(() => import('@components/SubmittedBotCard'))
+const Login = dynamic(() => import('@components/Login'))
const Panel:NextPage = ({ logged, user, submits, csrfToken }) => {
const router = useRouter()
const [ submitLimit, setSubmitLimit ] = useState(8)
- function toLogin() {
- localStorage.redirectTo = window.location.href
- redirectTo(router, 'login')
- }
- if(!logged) {
- toLogin()
- return
- }
+ if(!logged) return
+
+
return
관리 패널
diff --git a/pages/search.tsx b/pages/search.tsx
index 09006c5..cf67dee 100644
--- a/pages/search.tsx
+++ b/pages/search.tsx
@@ -1,12 +1,10 @@
import { NextPage, NextPageContext } from 'next'
import dynamic from 'next/dynamic'
-import { useRouter } from 'next/router'
import { ParsedUrlQuery } from 'querystring'
import { BotList } from '@types'
import { get } from '@utils/Query'
import { SearchQuerySchema } from '@utils/Yup'
-import { redirectTo } from '@utils/Tools'
const Hero = dynamic(() => import('@components/Hero'))
@@ -16,13 +14,10 @@ const BotCard = dynamic(() => import('@components/BotCard'))
const Container = dynamic(() => import('@components/Container'))
const ResponsiveGrid = dynamic(() => import('@components/ResponsiveGrid'))
const Paginator = dynamic(() => import('@components/Paginator'))
+const Redirect = dynamic(() => import('@components/Redirect'))
const Search:NextPage = ({ data, query }) => {
- const router = useRouter()
- if(!query?.q) {
- redirectTo(router, '/')
- return <>>
- }
+ if(!query?.q) return
return <>
@@ -46,6 +41,11 @@ const Search:NextPage = ({ data, query }) => {
}
export const getServerSideProps = async(ctx: Context) => {
+ if(!ctx.query?.q) {
+ ctx.res.statusCode = 301
+ ctx.res.setHeader('Location', '/')
+ return { props: {} }
+ }
let data: BotList
if(!ctx.query.page) ctx.query.page = '1'
const validate = await SearchQuerySchema.validate(ctx.query).then(el => el).catch(() => null)
diff --git a/pages/users/[id].tsx b/pages/users/[id].tsx
index 71c30a3..3482a87 100644
--- a/pages/users/[id].tsx
+++ b/pages/users/[id].tsx
@@ -1,6 +1,5 @@
import { NextPage, NextPageContext } from 'next'
import { useState } from 'react'
-import { useRouter } from 'next/router'
import dynamic from 'next/dynamic'
import { SnowflakeUtil } from 'discord.js'
import { ParsedUrlQuery } from 'querystring'
@@ -9,7 +8,7 @@ import { Field, Form, Formik } from 'formik'
import { Bot, User, ResponseProps, Theme } from '@types'
import { get } from '@utils/Query'
-import { checkUserFlag, parseCookie, redirectTo } from '@utils/Tools'
+import { checkUserFlag, parseCookie } from '@utils/Tools'
import { getToken } from '@utils/Csrf'
import Fetch from '@utils/Fetch'
import { ReportSchema } from '@utils/Yup'
@@ -30,15 +29,11 @@ const Message = dynamic(() => import('@components/Message'))
const Modal = dynamic(() => import('@components/Modal'))
const Button = dynamic(() => import('@components/Button'))
const TextArea = dynamic(() => import('@components/Form/TextArea'))
+const Login = dynamic(() => import('@components/Login'))
const Users: NextPage = ({ user, data, csrfToken, theme }) => {
- const router = useRouter()
const [ reportModal, setReportModal ] = useState(false)
const [ reportRes, setReportRes ] = useState>(null)
- function toLogin() {
- localStorage.redirectTo = window.location.href
- redirectTo(router, 'login')
- }
if (!data?.id) return
return (
@@ -92,7 +87,7 @@ const Users: NextPage = ({ user, data, csrfToken, theme }) => {
)}