@pubinfo/module-auth 2.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +221 -0
- package/dist/index.d.cts +33 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +196 -0
- package/dist/interface-C_qnbvmk.d.cts +50 -0
- package/dist/interface-C_qnbvmk.d.ts +50 -0
- package/dist/providers/4A.cjs +43 -0
- package/dist/providers/4A.d.cts +9 -0
- package/dist/providers/4A.d.ts +9 -0
- package/dist/providers/4A.js +22 -0
- package/dist/providers/credentials.cjs +34 -0
- package/dist/providers/credentials.d.cts +12 -0
- package/dist/providers/credentials.d.ts +12 -0
- package/dist/providers/credentials.js +13 -0
- package/dist/providers/ding-zj.cjs +80 -0
- package/dist/providers/ding-zj.d.cts +17 -0
- package/dist/providers/ding-zj.d.ts +17 -0
- package/dist/providers/ding-zj.js +59 -0
- package/package.json +33 -0
- package/src/core.ts +114 -0
- package/src/index.ts +86 -0
- package/src/interface.ts +60 -0
- package/src/pages/auth.ts +42 -0
- package/src/providers/4A.ts +24 -0
- package/src/providers/credentials.ts +19 -0
- package/src/providers/ding-zj.ts +76 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Authorization, ProviderConfig, ProviderUserConfig } from '../interface';
|
|
2
|
+
|
|
3
|
+
interface DingZJConfig extends ProviderUserConfig {
|
|
4
|
+
/**
|
|
5
|
+
* 登录方式
|
|
6
|
+
* - `redirect` 跳转浙政钉的扫码页面
|
|
7
|
+
* - `embed` 内嵌浙政钉的登录二维码
|
|
8
|
+
*/
|
|
9
|
+
mode: 'redirect' | 'embed'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 浙政钉扫码登录
|
|
14
|
+
*/
|
|
15
|
+
export default function DingZJ(options: DingZJConfig): ProviderConfig {
|
|
16
|
+
const { clientId, redirectUri } = options;
|
|
17
|
+
|
|
18
|
+
const authorization: Record<string, Authorization> = {
|
|
19
|
+
/** 跳转外部页面 */
|
|
20
|
+
redirect: {
|
|
21
|
+
url: 'https://openplatform-pro.ding.zj.gov.cn/oauth2/auth.htm',
|
|
22
|
+
params: {
|
|
23
|
+
response_type: 'code',
|
|
24
|
+
client_id: clientId,
|
|
25
|
+
redirect_uri: redirectUri,
|
|
26
|
+
scope: 'get_user_info',
|
|
27
|
+
authType: 'QRCODE',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
/** 内嵌二维码 */
|
|
32
|
+
embed: {
|
|
33
|
+
url: 'https://login-pro.ding.zj.gov.cn/oauth2/auth.htm',
|
|
34
|
+
params: {
|
|
35
|
+
response_type: 'code',
|
|
36
|
+
client_id: clientId,
|
|
37
|
+
redirect_uri: redirectUri,
|
|
38
|
+
scope: 'get_user_info',
|
|
39
|
+
authType: 'QRCODE',
|
|
40
|
+
embedMode: 'true',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const initQRCode: ProviderConfig['initQRCode'] = (url, options) => {
|
|
46
|
+
const target = document.getElementById(options.id);
|
|
47
|
+
|
|
48
|
+
if (!target) {
|
|
49
|
+
throw new Error(`未找到id为${options.id}的DOM元素`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const iframe = document.createElement('iframe');
|
|
53
|
+
iframe.src = url;
|
|
54
|
+
iframe.width = '200';
|
|
55
|
+
iframe.height = '200';
|
|
56
|
+
document.appendChild(iframe);
|
|
57
|
+
|
|
58
|
+
window.addEventListener('message', (e) => {
|
|
59
|
+
if (options.redirectUri) {
|
|
60
|
+
const url = new URL(options.redirectUri);
|
|
61
|
+
url.search = new URLSearchParams(e.data).toString();
|
|
62
|
+
window.location.href = url.toString();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
id: 'ding-zj',
|
|
69
|
+
name: '浙政钉登录',
|
|
70
|
+
type: 'oauth',
|
|
71
|
+
authorization: authorization[options.mode],
|
|
72
|
+
callbackUrl: '/bs/loginByDingZJ',
|
|
73
|
+
initQRCode: options.mode === 'embed' ? initQRCode : undefined,
|
|
74
|
+
...options,
|
|
75
|
+
};
|
|
76
|
+
}
|