add api to query twitter and discord divided

This commit is contained in:
CounterFire2023 2023-12-18 18:00:25 +08:00
parent ee66727523
commit 3465a63d06

View File

@ -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
}
}