Skip to content

Commit eb640f0

Browse files
committed
feat(auth): read credentials from editor config.
1 parent fff7e23 commit eb640f0

File tree

4 files changed

+55
-306
lines changed

4 files changed

+55
-306
lines changed

package.json

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "codingplugin",
2+
"name": "coding-hbuilderx",
33
"description": "",
44
"displayName": "CODING 代码仓库插件",
55
"version": "1.0.0",
@@ -91,6 +91,25 @@
9191
"title": "WEBVIEW"
9292
}
9393
]
94+
},
95+
"configuration": {
96+
"type": "object",
97+
"title": "CODING 代码仓库插件配置",
98+
"properties": {
99+
"codingPlugin.email": {
100+
"type": "string",
101+
"description": "CODING 用户邮箱"
102+
},
103+
"codingPlugin.token": {
104+
"type": "string",
105+
"description": "CODING 服务令牌,请勿擅自更改"
106+
},
107+
"codingPlugin.hbToken": {
108+
"type": "string",
109+
"description": "请勿修改"
110+
}
111+
112+
}
94113
}
95114
},
96115
"extensionDependencies": [
@@ -117,7 +136,6 @@
117136
"dependencies": {
118137
"axios": "^0.21.0",
119138
"isomorphic-git": "^1.8.0",
120-
"keytar": "^7.1.0",
121139
"querystring": "^0.2.0",
122140
"react": "^17.0.1",
123141
"react-dom": "^17.0.1"

src/init.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,14 @@ export function createTreeViews(context: IContext) {
6767

6868
async function initialize() {
6969
try {
70-
let aToken = await DCloudService.readToken(ITokenType.AccessToken);
71-
if (!aToken) {
70+
let hbToken = await DCloudService.readToken(`hbToken`);
71+
console.log(`hb token: ${hbToken}`);
72+
if (!hbToken) {
7273
const code = await DCloudService.grantForUserInfo();
7374
const tokenResult = await DCloudService.applyForToken(code);
74-
aToken = tokenResult.data.access_token;
75+
hbToken = tokenResult.data.access_token;
7576
}
76-
const resp = await DCloudService.fetchUser(aToken);
77+
const resp = await DCloudService.fetchUser(hbToken);
7778
console.info(resp);
7879
toast.info(`logged in as DCloud user: ${resp.data.nickname} ${resp.data.email}`);
7980
} catch (err) {

src/services/dcloud.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import keytar from 'keytar';
21
import hx from 'hbuilderx';
32

43
import axios from '../utils/axios';
@@ -25,8 +24,7 @@ export const applyForToken = async (code: string | null) => {
2524
return Promise.reject(resp);
2625
}
2726

28-
await keytar.setPassword(appId, ITokenType.AccessToken, resp.data.access_token);
29-
await keytar.setPassword(appId, ITokenType.RefreshToken, resp.data.refresh_token);
27+
await setConfig(`hbToken`, resp.data.access_token);
3028
return resp;
3129
} catch (e) {
3230
return Promise.reject(e);
@@ -44,23 +42,32 @@ export const fetchUser = async (accessToken: string) => {
4442
if (resp.ret) {
4543
return Promise.reject(resp);
4644
}
45+
46+
if (!resp.data.email) {
47+
return Promise.reject(resp);
48+
}
49+
50+
await setConfig(`email`, resp.data.email);
4751
return resp;
4852
} catch (e) {
4953
return Promise.reject(e);
5054
}
5155
};
5256

53-
export const setToken = async (name: ITokenType, value: string) => {
54-
return await keytar.setPassword(appId, name, value);
55-
};
56-
57-
export const readToken = async (name: ITokenType) => {
58-
const val = await keytar.getPassword(appId, name);
59-
if (!val) {
60-
return Promise.reject(null);
57+
export const setConfig = async (prop: string, value: string) => {
58+
const codingPlugin = hx.workspace.getConfiguration(`codingPlugin`);
59+
try {
60+
await codingPlugin.update(prop, value);
61+
return true;
62+
} catch {
63+
return false;
6164
}
65+
};
6266

63-
return val;
67+
export const readToken = async (prop: string) => {
68+
const codingPlugin = hx.workspace.getConfiguration(`codingPlugin`);
69+
const token = codingPlugin.get(prop, ``);
70+
return token;
6471
};
6572

6673
export const grantForUserInfo = (): Promise<string | null> =>
@@ -76,6 +83,7 @@ export const grantForUserInfo = (): Promise<string | null> =>
7683
return reject(null);
7784
}
7885

86+
console.log(`hbuilder oauth code: `, code);
7987
return resolve(code);
8088
});
8189
});

0 commit comments

Comments
 (0)