diff --git a/assistant/src/command/user/me.ts b/assistant/src/command/user/me.ts index 1722657..70bd875 100644 --- a/assistant/src/command/user/me.ts +++ b/assistant/src/command/user/me.ts @@ -7,7 +7,7 @@ const me = new Command('me') .action(async () => { const aq = new AssistantQuery(assistantConfig); await aq.init() - const info = await aq.queryLogin.checkLocalUser() + const info = await aq.getToken() logger.info(info); }); diff --git a/assistant/src/module/assistant/local-app-manager/assistant-app.ts b/assistant/src/module/assistant/local-app-manager/assistant-app.ts index 93b67fe..aeadcce 100644 --- a/assistant/src/module/assistant/local-app-manager/assistant-app.ts +++ b/assistant/src/module/assistant/local-app-manager/assistant-app.ts @@ -257,48 +257,52 @@ export class AssistantApp extends Manager { * 检查本地用户登录状态,如果未登录且存在 CNB_TOKEN,则尝试使用 CNB_TOKEN 登录并更新用户信息 */ async checkLocalUser() { - const config = this.config.getConfig(); - const auth = config?.auth; - let checkCNB = false; - if (!auth?.username) { - checkCNB = true; - } else { - let temp = await assistantQuery.queryLogin.getToken() - if (temp) { - const isExpired = await assistantQuery.queryLogin.checkTokenValid() - console.log('Token 是否过期', isExpired); + return checkLocalUser({ assistantApp: this }); + } +} + + +const checkLocalUser = async (opts: { assistantApp: AssistantApp }) => { + const { assistantApp } = opts; + const config = assistantApp.config.getConfig(); + const auth = config?.auth; + let checkCNB = false; + if (!auth?.username) { + checkCNB = true; + // 没有登录过,自动检测ci进行登录 + // 检测条件1:环境变量中存在 CNB_TOKEN + } else { + let temp = await assistantQuery.getToken() + logger.info('[assistant] 当前登录用户', auth.username, 'token有效性检查结果', !!temp); + } + const cnbToken = useKey('CNB_TOKEN'); + if (!checkCNB && cnbToken) { + const res = await assistantQuery.query.post({ + path: 'user', + key: 'cnb-login', + payload: { + data: { + cnbToken: cnbToken, + } } - logger.info('[assistant] 当前登录用户', auth.username, 'token有效性检查结果', !!temp); - } - const cnbToken = useKey('CNB_TOKEN'); - if (!checkCNB && cnbToken) { - const res = await assistantQuery.query.post({ - path: 'user', - key: 'cnb-login', - payload: { - data: { - cnbToken: cnbToken, - } - } - }); - if (res.code === 200) { - logger.info('CNB登录成功,用户信息已更新'); - const resUser = await assistantQuery.queryLogin.beforeSetLoginUser(res.data) - if (resUser.code === 200) { - const userInfo = resUser.data; - auth.username = userInfo.username; - auth.share = 'protected' - const app = config?.app || {}; - if (!app?.id) { - app.id = 'dev-cnb' - } - this.config.setConfig({ - auth, - app - }); - } else { - console.error('CNB登录失败,无法获取用户信息', resUser); + }); + if (res.code === 200) { + logger.info('CNB登录成功,用户信息已更新'); + const resUser = await assistantQuery.queryLogin.beforeSetLoginUser(res.data) + if (resUser.code === 200) { + const userInfo = resUser.data; + auth.username = userInfo.username; + auth.share = 'protected' + const app = config?.app || {}; + if (!app?.id) { + app.id = 'dev-cnb' } + assistantApp.config.setConfig({ + auth, + app + }); + } else { + console.error('CNB登录失败,无法获取用户信息', resUser); } } } diff --git a/assistant/src/module/assistant/query/index.ts b/assistant/src/module/assistant/query/index.ts index ba5e0ae..7bb6918 100644 --- a/assistant/src/module/assistant/query/index.ts +++ b/assistant/src/module/assistant/query/index.ts @@ -35,7 +35,12 @@ export class AssistantQuery { get(body: any, options?: DataOpts) { return this.query.get(body, options); } - getToken() { - return this.queryLogin.getToken(); + async getToken() { + const token = await this.queryLogin.getToken(); + if (!token) return ''; + const isExpired = await this.queryLogin.checkTokenValid() + console.log('Token 是否过期', isExpired, token); + console.log('info', this.queryLogin.cacheStore.cacheData) + return token; } }