import { CNB } from '@kevisual/cnb' import { UserModel } from '../../../auth/index.ts'; import { CustomError } from '@kevisual/router'; export class CnbServices { cnb: CNB; constructor(token?: string) { this.cnb = new CNB({ token, }); } async login(): Promise> { const cnbUserRes = await this.cnb.user.getUser(); if (cnbUserRes.code !== 200) { throw new CustomError('CNB Token is invalid'); } const cnbUser = cnbUserRes?.data; const cnbUserId = cnbUser?.id if (!cnbUserId) { throw new CustomError('CNB User ID is missing'); } let user = await UserModel.findByCnbId(cnbUserId); if (!user) { const username = '@cnb-' + cnbUser.username; // 如果用户不存在,创建一个新用户 user = await UserModel.createUser(username, cnbUserId); user.data = { ...user.data, cnbId: cnbUserId, } await user.save(); } const token = await user.createToken(); return token; } }