From e5a5f0534d6c16b081460b731863fde371edcf4a Mon Sep 17 00:00:00 2001 From: wonderlandpark Date: Wed, 2 Jun 2021 14:56:05 +0900 Subject: [PATCH] feat(api): blocking blocked user --- pages/api/auth/discord/callback.ts | 3 ++- utils/Query.ts | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pages/api/auth/discord/callback.ts b/pages/api/auth/discord/callback.ts index 7382e72..352cfca 100644 --- a/pages/api/auth/discord/callback.ts +++ b/pages/api/auth/discord/callback.ts @@ -56,7 +56,8 @@ const Callback = RequestHandler().get(async (req: ApiRequest, res) => { verified: user.verified }) - if(!userToken) return res.redirect(301, 'https://docs.koreanbots.dev/bots/account/unverified') + if(userToken === 1) return res.redirect(301, 'https://docs.koreanbots.dev/bots/account/unverified') + else if(userToken === 2) return res.redirect(301, 'https://docs.koreanbots.dev/bots/account/blocked') const info = verify(userToken) res.setHeader( 'set-cookie', diff --git a/utils/Query.ts b/utils/Query.ts index 9d0b5cf..2e0862c 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -324,15 +324,22 @@ async function getDiscordUser(id: string):Promise { return DiscordBot.users.cache.get(id) ?? await DiscordBot.users.fetch(id, false, true).then(u => u.toJSON()).catch(()=>null) } -async function assignToken(info: TokenRegister):Promise { - let token = await knex('users').select(['token']).where({ id: info.id }) +/** + * + * @param info + * @returns 1 - UnVerified + * @returns 2 - Blocked + */ +async function assignToken(info: TokenRegister):Promise { + let token = await knex('users').select(['token', 'perm']).where({ id: info.id }) let t: string - if(!info.verified) return null + if(!info.verified) return 1 if(token.length === 0) { t = sign({ id: info.id }, { expiresIn: '30d' }) await knex('users').insert({ token: t, date: Math.round(Number(new Date()) / 1000), id: info.id, email: info.email, tag: info.discriminator, username: info.username, discord: sign({ access_token: info.access_token, expires_in: info.expires_in, refresh_token: info.refresh_token }) }) token = await knex('users').select(['token']).where({ id: info.id }) } else await knex('users').update({ email: info.email, tag: info.discriminator, username: info.username, discord: sign({ access_token: info.access_token, expires_in: info.expires_in, refresh_token: info.refresh_token }) }).where({ id: info.id }) + if(token[0].perm !== 'user') return 2 if(!verify(token[0]?.token ?? '')) { t = sign({ id: info.id }, { expiresIn: '30d' }) await knex('users').update({ token: t }).where({ id: info.id })