import BaseController from 'common/base.controller' import { role, router } from 'decorators/router' import verifyAppleToken from 'verify-apple-id-token' import { Account, PlatEnum } from 'modules/Account' const CLIENT_ID_DEBUG = 'com.jc.tebg' const CLIENT_ID_RELEASE = 'com.cege.games.release' class AppleController extends BaseController { @role('anon') @router('post /apple/login-notify') async appleLoginCb(req, res) { const { code, token } = req.params return {} } @role('anon') @router('post /wallet/login/apple') async checkGoogleJwt(req, res) { const { token } = req.params const payload = await verifyAppleToken({ idToken: token, clientId: [CLIENT_ID_DEBUG, CLIENT_ID_RELEASE], }) const openId = payload.sub let data: any = { email: payload.email, emailVerified: payload.email_verified, } if (payload.locale) data.locale = payload.locale if (payload.name) data.nickname = payload.name if (payload.picture) data.avatar = payload.picture let user = await Account.insertOrUpdate({ plat: PlatEnum.APPLE, openId }, data) const ztoken = await res.jwtSign({ id: user.id }) return { token: ztoken } } }