From 3465a63d06cb74bcc283d438815d3d179103e8fe Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Mon, 18 Dec 2023 18:00:25 +0800 Subject: [PATCH] add api to query twitter and discord divided --- src/controllers/main.controller.ts | 45 +++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/controllers/main.controller.ts b/src/controllers/main.controller.ts index 2f38b98..423d997 100644 --- a/src/controllers/main.controller.ts +++ b/src/controllers/main.controller.ts @@ -2,10 +2,20 @@ import BaseController, { ROLE_ANON } from 'common/base.controller' import { ZError } from 'common/ZError' import { role, router } from 'decorators/router' import logger from 'logger/logger' -import { AuthRecord } from 'modules/AuthRecord' +import { AuthRecord, PlatEnum } from 'modules/AuthRecord' import { DiscordSvr } from 'services/discord.svr' import { hmacsha256 } from 'utils/security.util' +const checkSign = (params: {address?: string, sign?: string}) => { + const {address, sign} = params; + if (!address || !sign) { + throw new ZError(10, 'invalid params') + } + let signCheck = hmacsha256(`address=${address}`, process.env.HASH_SALT) + if (sign !== signCheck) { + throw new ZError(11, 'invalid sign') + } +} class MainController extends BaseController { /** * Refresh token @@ -74,4 +84,37 @@ class MainController extends BaseController { let verified = await new DiscordSvr().checkUserRole(id) return { verified } } + + + @role(ROLE_ANON) + @router('get /activity/twitter/:address') + async checkTwitterFollow(req) { + let { address } = req.params + checkSign(req.params); + address = address.toLowerCase() + let record = await AuthRecord.findOne({ address, platform: PlatEnum.TWITTER }) + let result: any = { } + if (!!record) { + result.username = record.username + result.userid = record.openId + } + return result + } + + @role(ROLE_ANON) + @router('get /activity/discord/:address') + async checkDiscord(req) { + let { address } = req.params + checkSign(req.params); + address = address.toLowerCase() + let record = await AuthRecord.findOne({ address, platform: PlatEnum.DISCORD }) + let result: any = { } + if (!!record) { + result.verified = record.condition + result.username = record.username + result.userid = record.openId + result.discriminator = record.discriminator + } + return result + } }