Compare commits
4 Commits
c0edd2cbbf
...
c00062d704
| Author | SHA1 | Date | |
|---|---|---|---|
| c00062d704 | |||
| 4c2b5fc9fa | |||
| 75953498e6 | |||
| a4a5ed0b50 |
@@ -44,7 +44,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@inquirer/prompts": "^8.2.1",
|
"@inquirer/prompts": "^8.2.1",
|
||||||
"@kevisual/ai": "^0.0.24",
|
"@kevisual/ai": "^0.0.24",
|
||||||
"@kevisual/api": "^0.0.57",
|
"@kevisual/api": "^0.0.58",
|
||||||
"@kevisual/load": "^0.0.6",
|
"@kevisual/load": "^0.0.6",
|
||||||
"@kevisual/local-app-manager": "^0.1.32",
|
"@kevisual/local-app-manager": "^0.1.32",
|
||||||
"@kevisual/logger": "^0.0.4",
|
"@kevisual/logger": "^0.0.4",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const me = new Command('me')
|
|||||||
.action(async () => {
|
.action(async () => {
|
||||||
const aq = new AssistantQuery(assistantConfig);
|
const aq = new AssistantQuery(assistantConfig);
|
||||||
await aq.init()
|
await aq.init()
|
||||||
const info = await aq.queryLogin.checkLocalUser()
|
const info = await aq.getToken()
|
||||||
logger.info(info);
|
logger.info(info);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -257,49 +257,42 @@ export class AssistantApp extends Manager {
|
|||||||
* 检查本地用户登录状态,如果未登录且存在 CNB_TOKEN,则尝试使用 CNB_TOKEN 登录并更新用户信息
|
* 检查本地用户登录状态,如果未登录且存在 CNB_TOKEN,则尝试使用 CNB_TOKEN 登录并更新用户信息
|
||||||
*/
|
*/
|
||||||
async checkLocalUser() {
|
async checkLocalUser() {
|
||||||
const config = this.config.getConfig();
|
return checkLocalUser({ assistantApp: this });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const checkLocalUser = async (opts: { assistantApp: AssistantApp }) => {
|
||||||
|
const { assistantApp } = opts;
|
||||||
|
const config = assistantApp.config.getConfig();
|
||||||
const auth = config?.auth;
|
const auth = config?.auth;
|
||||||
let checkCNB = false;
|
let checkCNB = false;
|
||||||
if (!auth?.username) {
|
if (!auth?.username) {
|
||||||
checkCNB = true;
|
checkCNB = true;
|
||||||
|
// 没有登录过,自动检测ci进行登录
|
||||||
|
// 检测条件1:环境变量中存在 CNB_TOKEN
|
||||||
} else {
|
} else {
|
||||||
let temp = await assistantQuery.queryLogin.getToken()
|
let temp = await assistantQuery.getToken()
|
||||||
if (temp) {
|
|
||||||
const isExpired = await assistantQuery.queryLogin.checkTokenValid()
|
|
||||||
console.log('Token 是否过期', isExpired);
|
|
||||||
}
|
|
||||||
logger.info('[assistant] 当前登录用户', auth.username, 'token有效性检查结果', !!temp);
|
logger.info('[assistant] 当前登录用户', auth.username, 'token有效性检查结果', !!temp);
|
||||||
}
|
}
|
||||||
const cnbToken = useKey('CNB_TOKEN');
|
const cnbToken = useKey('CNB_TOKEN');
|
||||||
if (!checkCNB && cnbToken) {
|
if (!checkCNB && cnbToken) {
|
||||||
const res = await assistantQuery.query.post({
|
const res = await assistantQuery.queryLogin.loginByCnb({ cnbToken })
|
||||||
path: 'user',
|
|
||||||
key: 'cnb-login',
|
|
||||||
payload: {
|
|
||||||
data: {
|
|
||||||
cnbToken: cnbToken,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
logger.info('CNB登录成功,用户信息已更新');
|
logger.info('CNB登录成功,用户信息已更新');
|
||||||
const resUser = await assistantQuery.queryLogin.beforeSetLoginUser(res.data)
|
const userInfo = await assistantQuery.queryLogin.checkLocalUser()
|
||||||
if (resUser.code === 200) {
|
|
||||||
const userInfo = resUser.data;
|
|
||||||
auth.username = userInfo.username;
|
auth.username = userInfo.username;
|
||||||
auth.share = 'protected'
|
auth.share = 'protected'
|
||||||
const app = config?.app || {};
|
const app = config?.app || {};
|
||||||
if (!app?.id) {
|
if (!app?.id) {
|
||||||
app.id = 'dev-cnb'
|
app.id = 'dev-cnb'
|
||||||
}
|
}
|
||||||
this.config.setConfig({
|
assistantApp.config.setConfig({
|
||||||
auth,
|
auth,
|
||||||
app
|
app
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.error('CNB登录失败,无法获取用户信息', resUser);
|
console.error('CNB登录失败,无法获取用户信息', res);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,12 @@ export class AssistantQuery {
|
|||||||
get(body: any, options?: DataOpts) {
|
get(body: any, options?: DataOpts) {
|
||||||
return this.query.get(body, options);
|
return this.query.get(body, options);
|
||||||
}
|
}
|
||||||
getToken() {
|
async getToken() {
|
||||||
return this.queryLogin.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",
|
"name": "@kevisual/cli",
|
||||||
"version": "0.1.7",
|
"version": "0.1.8",
|
||||||
"description": "envision 命令行工具",
|
"description": "envision 命令行工具",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"basename": "/root/cli",
|
"basename": "/root/cli",
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
"unstorage": "^1.17.4"
|
"unstorage": "^1.17.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@kevisual/api": "^0.0.57",
|
"@kevisual/api": "^0.0.58",
|
||||||
"@kevisual/cnb": "^0.0.28",
|
"@kevisual/cnb": "^0.0.28",
|
||||||
"@kevisual/dts": "^0.0.4",
|
"@kevisual/dts": "^0.0.4",
|
||||||
"@kevisual/load": "^0.0.6",
|
"@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))
|
version: 1.17.4(idb-keyval@6.2.2)(ioredis@5.9.3(supports-color@10.2.2))
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@kevisual/api':
|
'@kevisual/api':
|
||||||
specifier: ^0.0.57
|
specifier: ^0.0.58
|
||||||
version: 0.0.57(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
version: 0.0.58(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
'@kevisual/cnb':
|
'@kevisual/cnb':
|
||||||
specifier: ^0.0.28
|
specifier: ^0.0.28
|
||||||
version: 0.0.28(dotenv@17.3.1)(idb-keyval@6.2.2)(ioredis@5.9.3)
|
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
|
specifier: ^0.0.24
|
||||||
version: 0.0.24
|
version: 0.0.24
|
||||||
'@kevisual/api':
|
'@kevisual/api':
|
||||||
specifier: ^0.0.57
|
specifier: ^0.0.58
|
||||||
version: 0.0.57(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
version: 0.0.58(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
'@kevisual/load':
|
'@kevisual/load':
|
||||||
specifier: ^0.0.6
|
specifier: ^0.0.6
|
||||||
version: 0.0.6
|
version: 0.0.6
|
||||||
@@ -1290,8 +1290,8 @@ packages:
|
|||||||
'@kevisual/api@0.0.28':
|
'@kevisual/api@0.0.28':
|
||||||
resolution: {integrity: sha512-WQluRlu2qGM1qktIhPLODie8x382a6jEMfFOcay/rnkCgXK0BRpnqOKwlX7IMLdMqka7GY/BD69kSMnK1Exf5g==}
|
resolution: {integrity: sha512-WQluRlu2qGM1qktIhPLODie8x382a6jEMfFOcay/rnkCgXK0BRpnqOKwlX7IMLdMqka7GY/BD69kSMnK1Exf5g==}
|
||||||
|
|
||||||
'@kevisual/api@0.0.57':
|
'@kevisual/api@0.0.58':
|
||||||
resolution: {integrity: sha512-U2nz+ckWZ4XGASC08xJT6WKQajhFQDd1iDb9tU1dHZECsvNvIzpHLG7RHFN1vahG1MdbQtppPmHgVTF2Zw7RWg==}
|
resolution: {integrity: sha512-ontJswmD5LS4EjYZDGF/SI1oYI1/zCM6ovC8rviNzxI22294yQ5y8Lb/rYV2qsKaxJbC3uuOjjsjPWap0nSvAQ==}
|
||||||
|
|
||||||
'@kevisual/app@0.0.1':
|
'@kevisual/app@0.0.1':
|
||||||
resolution: {integrity: sha512-PEx8P3l0iNSqrz9Ib9kVCYfqNMX6/LfNu+cEafmY6ECP1cV5Vmv+TH2fuasMosKjtbH2fAdDi97sbd29tdEK+g==}
|
resolution: {integrity: sha512-PEx8P3l0iNSqrz9Ib9kVCYfqNMX6/LfNu+cEafmY6ECP1cV5Vmv+TH2fuasMosKjtbH2fAdDi97sbd29tdEK+g==}
|
||||||
@@ -6609,7 +6609,7 @@ snapshots:
|
|||||||
fuse.js: 7.1.0
|
fuse.js: 7.1.0
|
||||||
nanoid: 5.1.6
|
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:
|
dependencies:
|
||||||
'@kevisual/context': 0.0.8
|
'@kevisual/context': 0.0.8
|
||||||
'@kevisual/js-filter': 0.0.5
|
'@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