Compare commits
4 Commits
c0edd2cbbf
...
c00062d704
| Author | SHA1 | Date | |
|---|---|---|---|
| c00062d704 | |||
| 4c2b5fc9fa | |||
| 75953498e6 | |||
| a4a5ed0b50 |
@@ -44,7 +44,7 @@
|
||||
"devDependencies": {
|
||||
"@inquirer/prompts": "^8.2.1",
|
||||
"@kevisual/ai": "^0.0.24",
|
||||
"@kevisual/api": "^0.0.57",
|
||||
"@kevisual/api": "^0.0.58",
|
||||
"@kevisual/load": "^0.0.6",
|
||||
"@kevisual/local-app-manager": "^0.1.32",
|
||||
"@kevisual/logger": "^0.0.4",
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
@@ -257,49 +257,42 @@ 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.queryLogin.loginByCnb({ cnbToken })
|
||||
if (res.code === 200) {
|
||||
logger.info('CNB登录成功,用户信息已更新');
|
||||
const userInfo = await assistantQuery.queryLogin.checkLocalUser()
|
||||
auth.username = userInfo.username;
|
||||
auth.share = 'protected'
|
||||
const app = config?.app || {};
|
||||
if (!app?.id) {
|
||||
app.id = 'dev-cnb'
|
||||
}
|
||||
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,
|
||||
}
|
||||
}
|
||||
assistantApp.config.setConfig({
|
||||
auth,
|
||||
app
|
||||
});
|
||||
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);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.error('CNB登录失败,无法获取用户信息', res);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kevisual/cli",
|
||||
"version": "0.1.7",
|
||||
"version": "0.1.8",
|
||||
"description": "envision 命令行工具",
|
||||
"type": "module",
|
||||
"basename": "/root/cli",
|
||||
@@ -59,7 +59,7 @@
|
||||
"unstorage": "^1.17.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kevisual/api": "^0.0.57",
|
||||
"@kevisual/api": "^0.0.58",
|
||||
"@kevisual/cnb": "^0.0.28",
|
||||
"@kevisual/dts": "^0.0.4",
|
||||
"@kevisual/load": "^0.0.6",
|
||||
|
||||
14
pnpm-lock.yaml
generated
14
pnpm-lock.yaml
generated
@@ -58,8 +58,8 @@ importers:
|
||||
version: 1.17.4(idb-keyval@6.2.2)(ioredis@5.9.3(supports-color@10.2.2))
|
||||
devDependencies:
|
||||
'@kevisual/api':
|
||||
specifier: ^0.0.57
|
||||
version: 0.0.57(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: ^0.0.58
|
||||
version: 0.0.58(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@kevisual/cnb':
|
||||
specifier: ^0.0.28
|
||||
version: 0.0.28(dotenv@17.3.1)(idb-keyval@6.2.2)(ioredis@5.9.3)
|
||||
@@ -170,8 +170,8 @@ importers:
|
||||
specifier: ^0.0.24
|
||||
version: 0.0.24
|
||||
'@kevisual/api':
|
||||
specifier: ^0.0.57
|
||||
version: 0.0.57(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: ^0.0.58
|
||||
version: 0.0.58(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@kevisual/load':
|
||||
specifier: ^0.0.6
|
||||
version: 0.0.6
|
||||
@@ -1290,8 +1290,8 @@ packages:
|
||||
'@kevisual/api@0.0.28':
|
||||
resolution: {integrity: sha512-WQluRlu2qGM1qktIhPLODie8x382a6jEMfFOcay/rnkCgXK0BRpnqOKwlX7IMLdMqka7GY/BD69kSMnK1Exf5g==}
|
||||
|
||||
'@kevisual/api@0.0.57':
|
||||
resolution: {integrity: sha512-U2nz+ckWZ4XGASC08xJT6WKQajhFQDd1iDb9tU1dHZECsvNvIzpHLG7RHFN1vahG1MdbQtppPmHgVTF2Zw7RWg==}
|
||||
'@kevisual/api@0.0.58':
|
||||
resolution: {integrity: sha512-ontJswmD5LS4EjYZDGF/SI1oYI1/zCM6ovC8rviNzxI22294yQ5y8Lb/rYV2qsKaxJbC3uuOjjsjPWap0nSvAQ==}
|
||||
|
||||
'@kevisual/app@0.0.1':
|
||||
resolution: {integrity: sha512-PEx8P3l0iNSqrz9Ib9kVCYfqNMX6/LfNu+cEafmY6ECP1cV5Vmv+TH2fuasMosKjtbH2fAdDi97sbd29tdEK+g==}
|
||||
@@ -6609,7 +6609,7 @@ snapshots:
|
||||
fuse.js: 7.1.0
|
||||
nanoid: 5.1.6
|
||||
|
||||
'@kevisual/api@0.0.57(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@kevisual/api@0.0.58(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@kevisual/context': 0.0.8
|
||||
'@kevisual/js-filter': 0.0.5
|
||||
|
||||
32
test/cnb.ts
Normal file
32
test/cnb.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { CNB } from '@kevisual/cnb'
|
||||
import { useKey } from '@kevisual/context'
|
||||
import { QueryLoginNode } from '@kevisual/api/query-login-node'
|
||||
import { Query } from '@kevisual/query'
|
||||
const queryLogin = new QueryLoginNode({
|
||||
query: new Query({ url: 'https://kevisual.cn/api/router' })
|
||||
})
|
||||
// const token = useKey('CNB_TOKEN');
|
||||
const token = '0054fuHjqpQ279mOva3H3ImIDlD'
|
||||
const cnb = new CNB({
|
||||
token
|
||||
})
|
||||
export const cnbLogin = async () => {
|
||||
const userInfo = await cnb.user.getUser()
|
||||
console.log('CNB用户信息', userInfo);
|
||||
}
|
||||
cnbLogin()
|
||||
|
||||
const testCnbLogin = async () => {
|
||||
const res = await queryLogin.loginByCnb({
|
||||
cnbToken: token,
|
||||
})
|
||||
console.log('CNB登录结果', res);
|
||||
if (res.code === 200) {
|
||||
const userInfo = await queryLogin.checkLocalUser()
|
||||
console.log('CNB登录成功,用户信息', userInfo);
|
||||
} else {
|
||||
console.log('CNB登录失败', res);
|
||||
}
|
||||
}
|
||||
|
||||
// testCnbLogin()
|
||||
Reference in New Issue
Block a user