@cloudbase/oauth 2.23.3 → 2.24.0

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.
Files changed (43) hide show
  1. package/dist/cjs/auth/apis.js +170 -14
  2. package/dist/cjs/auth/auth-error.js +32 -0
  3. package/dist/cjs/auth/consts.js +24 -2
  4. package/dist/cjs/auth/models.js +1 -1
  5. package/dist/cjs/captcha/captcha-dom.js +223 -0
  6. package/dist/cjs/captcha/captcha.js +11 -102
  7. package/dist/cjs/index.js +25 -3
  8. package/dist/cjs/oauth2client/interface.js +1 -1
  9. package/dist/cjs/oauth2client/models.js +1 -1
  10. package/dist/cjs/oauth2client/oauth2client.js +384 -110
  11. package/dist/cjs/utils/base64.js +15 -2
  12. package/dist/esm/auth/apis.js +113 -2
  13. package/dist/esm/auth/auth-error.js +9 -0
  14. package/dist/esm/auth/consts.js +22 -0
  15. package/dist/esm/captcha/captcha-dom.js +129 -0
  16. package/dist/esm/captcha/captcha.js +14 -97
  17. package/dist/esm/index.js +18 -2
  18. package/dist/esm/oauth2client/oauth2client.js +162 -36
  19. package/dist/esm/utils/base64.js +12 -0
  20. package/dist/miniprogram/index.js +1 -1
  21. package/dist/types/auth/apis.d.ts +19 -1
  22. package/dist/types/auth/auth-error.d.ts +6 -0
  23. package/dist/types/auth/consts.d.ts +22 -0
  24. package/dist/types/auth/models.d.ts +2 -0
  25. package/dist/types/captcha/captcha-dom.d.ts +3 -0
  26. package/dist/types/captcha/captcha.d.ts +3 -1
  27. package/dist/types/index.d.ts +11 -2
  28. package/dist/types/oauth2client/interface.d.ts +1 -1
  29. package/dist/types/oauth2client/models.d.ts +14 -0
  30. package/dist/types/oauth2client/oauth2client.d.ts +58 -2
  31. package/dist/types/utils/base64.d.ts +5 -0
  32. package/package.json +4 -4
  33. package/src/auth/apis.ts +189 -4
  34. package/src/auth/auth-error.ts +21 -0
  35. package/src/auth/consts.ts +28 -0
  36. package/src/auth/models.ts +2 -0
  37. package/src/captcha/captcha-dom.ts +178 -0
  38. package/src/captcha/captcha.ts +25 -115
  39. package/src/index.ts +51 -3
  40. package/src/oauth2client/interface.ts +1 -1
  41. package/src/oauth2client/models.ts +28 -0
  42. package/src/oauth2client/oauth2client.ts +254 -34
  43. package/src/utils/base64.ts +12 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.weappJwtDecode = exports.base64_url_decode = exports.weAtob = exports.weBtoa = void 0;
3
+ exports.weappJwtDecodeAll = exports.weappJwtDecode = exports.base64_url_decode = exports.weAtob = exports.weBtoa = void 0;
4
4
  var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
5
5
  var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
6
6
  function weBtoa(string) {
@@ -96,4 +96,17 @@ function weappJwtDecode(token, options) {
96
96
  }
97
97
  }
98
98
  exports.weappJwtDecode = weappJwtDecode;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFNLEdBQUcsR0FBRyxtRUFBbUUsQ0FBQTtBQUMvRSxJQUFNLEtBQUssR0FBRyxzRUFBc0UsQ0FBQTtBQUdwRixTQUFnQixNQUFNLENBQUMsTUFBYztJQUNuQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZCLElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxDQUFDLENBQUE7SUFDTCxJQUFJLENBQUMsQ0FBQTtJQUNMLElBQUksQ0FBQyxDQUFBO0lBQ0wsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFFOUIsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRztRQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRztZQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMscUhBQXFILENBQUUsQ0FBQTtRQUUvUCxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pDLE1BQU07ZUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUE0QixDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7S0FDM0U7QUFDSCxDQUFDO0FBWEQsd0NBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gd2VhcHAgand0LWRlY29kZVxuY29uc3QgYjY0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuY29uc3QgYjY0cmUgPSAvXig/OltBLVphLXpcXGQrL117NH0pKj8oPzpbQS1aYS16XFxkKy9dezJ9KD86PT0pP3xbQS1aYS16XFxkKy9dezN9PT8pPyQvXG5cbi8vIGJ0b2FcbmV4cG9ydCBmdW5jdGlvbiB3ZUJ0b2Eoc3RyaW5nOiBzdHJpbmcpIHtcbiAgc3RyaW5nID0gU3RyaW5nKHN0cmluZylcbiAgbGV0IGJpdG1hcFxuICBsZXQgYVxuICBsZXQgYlxuICBsZXQgY1xuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGkgPSAwXG4gIGNvbnN0IHJlc3QgPSBzdHJpbmcubGVuZ3RoICUgM1xuXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBpZiAoKGEgPSBzdHJpbmcuY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fCAoYiA9IHN0cmluZy5jaGFyQ29kZUF0KGkrKykpID4gMjU1IHx8IChjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIFxcJ2J0b2FcXCcgb24gXFwnV2luZG93XFwnOiBUaGUgc3RyaW5nIHRvIGJlIGVuY29kZWQgY29udGFpbnMgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoZSBMYXRpbjEgcmFuZ2UuJywpXG5cbiAgICBiaXRtYXAgPSAoYSA8PCAxNikgfCAoYiA8PCA4KSB8IGNcbiAgICByZXN1bHRcbiAgICAgICs9IGI2NC5jaGFyQXQoKGJpdG1hcCA+PiAxOCkgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdCgoYml0bWFwID4+IDEyKSAmIDYzKVxuICAgICAgKyBiNjQuY2hhckF0KChiaXRtYXAgPj4gNikgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdChiaXRtYXAgJiA2MylcbiAgfVxuXG4gIHJldHVybiByZXN0ID8gcmVzdWx0LnNsaWNlKDAsIHJlc3QgLSAzKSArICc9PT0nLnN1YnN0cmluZyhyZXN0KSA6IHJlc3VsdFxufVxuLy8gYXRvYlxuZXhwb3J0IGNvbnN0IHdlQXRvYiA9IGZ1bmN0aW9uIChzdHJpbmc6IHN0cmluZykge1xuICBzdHJpbmcgPSBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKC9bXFx0XFxuXFxmXFxyIF0rL2csICcnKVxuICBpZiAoIWI2NHJlLnRlc3Qoc3RyaW5nKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIGV4ZWN1dGUgXFwnYXRvYlxcJyBvbiBcXCdXaW5kb3dcXCc6IFRoZSBzdHJpbmcgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuJylcbiAgc3RyaW5nICs9ICc9PScuc2xpY2UoMiAtIChzdHJpbmcubGVuZ3RoICYgMykpXG4gIGxldCBiaXRtYXBcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCByMVxuICBsZXQgcjJcbiAgbGV0IGkgPSAwXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBiaXRtYXAgPSAgICAgIChiNjQuaW5kZXhPZihzdHJpbmcuY2hhckF0KGkrKykpIDw8IDE4KVxuICAgICAgfCAoYjY0LmluZGV4T2Yoc3RyaW5nLmNoYXJBdChpKyspKSA8PCAxMilcbiAgICAgIHwgKChyMSA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpIDw8IDYpXG4gICAgICB8IChyMiA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpXG5cbiAgICByZXN1bHRcbiAgICAgICs9IHIxID09PSA2NFxuICAgICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUoKGJpdG1hcCA+PiAxNikgJiAyNTUpXG4gICAgICAgIDogcjIgPT09IDY0XG4gICAgICAgICAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKChiaXRtYXAgPj4gMTYpICYgMjU1LCAoYml0bWFwID4+IDgpICYgMjU1KVxuICAgICAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZSgoYml0bWFwID4+IDE2KSAmIDI1NSwgKGJpdG1hcCA+PiA4KSAmIDI1NSwgYml0bWFwICYgMjU1KVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gYjY0RGVjb2RlVW5pY29kZShzdHI6IHN0cmluZykge1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHdlQXRvYihzdHIpLnJlcGxhY2UoLyguKS9nLCAocCkgPT4ge1xuICAgIGxldCBjb2RlID0gcC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KVxuICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICBpZiAoY29kZS5sZW5ndGggPCAyKSB7XG4gICAgICBjb2RlID0gYDAke2NvZGV9YFxuICAgIH1cbiAgICByZXR1cm4gYCUke2NvZGV9YFxuICB9KSwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRfdXJsX2RlY29kZShzdHI6IHN0cmluZykge1xuICBsZXQgb3V0cHV0ID0gc3RyLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJylcbiAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAyOlxuICAgICAgb3V0cHV0ICs9ICc9PSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAzOlxuICAgICAgb3V0cHV0ICs9ICc9J1xuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchJylcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGI2NERlY29kZVVuaWNvZGUob3V0cHV0KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gd2VBdG9iKG91dHB1dClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2VhcHBKd3REZWNvZGUodG9rZW46IHN0cmluZywgb3B0aW9ucz86IGFueSkge1xuICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQnKVxuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IHBvcyA9IG9wdGlvbnMuaGVhZGVyID09PSB0cnVlID8gMCA6IDFcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShiYXNlNjRfdXJsX2RlY29kZSh0b2tlbi5zcGxpdCgnLicpW3Bvc10pKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogJHtlfWAgPyAoZSBhcyBhbnkpLm1lc3NhZ2UgOiAnJylcbiAgfVxufVxuIl19
99
+ function weappJwtDecodeAll(token) {
100
+ if (typeof token !== 'string') {
101
+ throw new Error('Invalid token specified');
102
+ }
103
+ try {
104
+ var parts = token.split('.').map(function (segment, i) { return i === 2 ? segment : JSON.parse(base64_url_decode(segment)); });
105
+ return { claims: parts[1], header: parts[0], signature: parts[2] };
106
+ }
107
+ catch (e) {
108
+ throw new Error("Invalid token specified: ".concat(e) ? e.message : '');
109
+ }
110
+ }
111
+ exports.weappJwtDecodeAll = weappJwtDecodeAll;
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFNLEdBQUcsR0FBRyxtRUFBbUUsQ0FBQTtBQUMvRSxJQUFNLEtBQUssR0FBRyxzRUFBc0UsQ0FBQTtBQUdwRixTQUFnQixNQUFNLENBQUMsTUFBYztJQUNuQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZCLElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxDQUFDLENBQUE7SUFDTCxJQUFJLENBQUMsQ0FBQTtJQUNMLElBQUksQ0FBQyxDQUFBO0lBQ0wsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFFOUIsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRztRQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRztZQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMscUhBQXFILENBQUUsQ0FBQTtRQUUvUCxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pDLE1BQU07ZUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FB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M0U7QUFDSCxDQUFDO0FBVkQsOENBVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gd2VhcHAgand0LWRlY29kZVxuY29uc3QgYjY0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuY29uc3QgYjY0cmUgPSAvXig/OltBLVphLXpcXGQrL117NH0pKj8oPzpbQS1aYS16XFxkKy9dezJ9KD86PT0pP3xbQS1aYS16XFxkKy9dezN9PT8pPyQvXG5cbi8vIGJ0b2FcbmV4cG9ydCBmdW5jdGlvbiB3ZUJ0b2Eoc3RyaW5nOiBzdHJpbmcpIHtcbiAgc3RyaW5nID0gU3RyaW5nKHN0cmluZylcbiAgbGV0IGJpdG1hcFxuICBsZXQgYVxuICBsZXQgYlxuICBsZXQgY1xuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGkgPSAwXG4gIGNvbnN0IHJlc3QgPSBzdHJpbmcubGVuZ3RoICUgM1xuXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBpZiAoKGEgPSBzdHJpbmcuY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fCAoYiA9IHN0cmluZy5jaGFyQ29kZUF0KGkrKykpID4gMjU1IHx8IChjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIFxcJ2J0b2FcXCcgb24gXFwnV2luZG93XFwnOiBUaGUgc3RyaW5nIHRvIGJlIGVuY29kZWQgY29udGFpbnMgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoZSBMYXRpbjEgcmFuZ2UuJywpXG5cbiAgICBiaXRtYXAgPSAoYSA8PCAxNikgfCAoYiA8PCA4KSB8IGNcbiAgICByZXN1bHRcbiAgICAgICs9IGI2NC5jaGFyQXQoKGJpdG1hcCA+PiAxOCkgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdCgoYml0bWFwID4+IDEyKSAmIDYzKVxuICAgICAgKyBiNjQuY2hhckF0KChiaXRtYXAgPj4gNikgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdChiaXRtYXAgJiA2MylcbiAgfVxuXG4gIHJldHVybiByZXN0ID8gcmVzdWx0LnNsaWNlKDAsIHJlc3QgLSAzKSArICc9PT0nLnN1YnN0cmluZyhyZXN0KSA6IHJlc3VsdFxufVxuLy8gYXRvYlxuZXhwb3J0IGNvbnN0IHdlQXRvYiA9IGZ1bmN0aW9uIChzdHJpbmc6IHN0cmluZykge1xuICBzdHJpbmcgPSBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKC9bXFx0XFxuXFxmXFxyIF0rL2csICcnKVxuICBpZiAoIWI2NHJlLnRlc3Qoc3RyaW5nKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIGV4ZWN1dGUgXFwnYXRvYlxcJyBvbiBcXCdXaW5kb3dcXCc6IFRoZSBzdHJpbmcgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuJylcbiAgc3RyaW5nICs9ICc9PScuc2xpY2UoMiAtIChzdHJpbmcubGVuZ3RoICYgMykpXG4gIGxldCBiaXRtYXBcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCByMVxuICBsZXQgcjJcbiAgbGV0IGkgPSAwXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBiaXRtYXAgPSAgICAgIChiNjQuaW5kZXhPZihzdHJpbmcuY2hhckF0KGkrKykpIDw8IDE4KVxuICAgICAgfCAoYjY0LmluZGV4T2Yoc3RyaW5nLmNoYXJBdChpKyspKSA8PCAxMilcbiAgICAgIHwgKChyMSA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpIDw8IDYpXG4gICAgICB8IChyMiA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpXG5cbiAgICByZXN1bHRcbiAgICAgICs9IHIxID09PSA2NFxuICAgICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUoKGJpdG1hcCA+PiAxNikgJiAyNTUpXG4gICAgICAgIDogcjIgPT09IDY0XG4gICAgICAgICAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKChiaXRtYXAgPj4gMTYpICYgMjU1LCAoYml0bWFwID4+IDgpICYgMjU1KVxuICAgICAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZSgoYml0bWFwID4+IDE2KSAmIDI1NSwgKGJpdG1hcCA+PiA4KSAmIDI1NSwgYml0bWFwICYgMjU1KVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gYjY0RGVjb2RlVW5pY29kZShzdHI6IHN0cmluZykge1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHdlQXRvYihzdHIpLnJlcGxhY2UoLyguKS9nLCAocCkgPT4ge1xuICAgIGxldCBjb2RlID0gcC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KVxuICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICBpZiAoY29kZS5sZW5ndGggPCAyKSB7XG4gICAgICBjb2RlID0gYDAke2NvZGV9YFxuICAgIH1cbiAgICByZXR1cm4gYCUke2NvZGV9YFxuICB9KSwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRfdXJsX2RlY29kZShzdHI6IHN0cmluZykge1xuICBsZXQgb3V0cHV0ID0gc3RyLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJylcbiAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAyOlxuICAgICAgb3V0cHV0ICs9ICc9PSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAzOlxuICAgICAgb3V0cHV0ICs9ICc9J1xuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchJylcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGI2NERlY29kZVVuaWNvZGUob3V0cHV0KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gd2VBdG9iKG91dHB1dClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2VhcHBKd3REZWNvZGUodG9rZW46IHN0cmluZywgb3B0aW9ucz86IGFueSkge1xuICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQnKVxuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IHBvcyA9IG9wdGlvbnMuaGVhZGVyID09PSB0cnVlID8gMCA6IDFcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShiYXNlNjRfdXJsX2RlY29kZSh0b2tlbi5zcGxpdCgnLicpW3Bvc10pKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogJHtlfWAgPyAoZSBhcyBhbnkpLm1lc3NhZ2UgOiAnJylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2VhcHBKd3REZWNvZGVBbGwodG9rZW46IHN0cmluZykge1xuICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQnKVxuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpLm1hcCgoc2VnbWVudCwgaSkgPT4gaSA9PT0gMiA/IHNlZ21lbnQgOiBKU09OLnBhcnNlKGJhc2U2NF91cmxfZGVjb2RlKHNlZ21lbnQpKSlcbiAgICByZXR1cm4geyBjbGFpbXM6IHBhcnRzWzFdLCBoZWFkZXI6IHBhcnRzWzBdLCBzaWduYXR1cmU6IHBhcnRzWzJdfVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogJHtlfWAgPyAoZSBhcyBhbnkpLm1lc3NhZ2UgOiAnJylcbiAgfVxufVxuIl19
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
- import { ApiUrls, ApiUrlsV2, ErrorType } from './consts';
2
+ import { ApiUrls, ApiUrlsV2, AUTH_STATE_CHANGED_TYPE, ErrorType, EVENTS, OAUTH_TYPE } from './consts';
3
3
  import { OAuth2Client, defaultStorage } from '../oauth2client/oauth2client';
4
4
  import { Captcha } from '../captcha/captcha';
5
5
  import { deepClone } from '../utils';
6
6
  import MyURLSearchParams from '../utils/urlSearchParams';
7
+ import { AuthError } from '..';
7
8
  function getEncryptUtils(isEncrypt, adapter) {
8
9
  const getUtils = () => {
9
10
  try {
@@ -54,16 +55,19 @@ export class Auth {
54
55
  onCredentialsError: opts.onCredentialsError,
55
56
  headers: opts.headers || {},
56
57
  i18n: opts.i18n,
58
+ debug: opts.debug,
57
59
  };
58
60
  oAuth2Client = new OAuth2Client(initOptions);
59
61
  }
60
62
  if (!request) {
61
63
  const baseRequest = oAuth2Client.request.bind(oAuth2Client);
62
64
  const captcha = new Captcha({
65
+ env: opts.env,
63
66
  clientId: opts.clientId,
64
67
  request: baseRequest,
65
68
  storage: opts.storage,
66
69
  adapter: opts.adapter,
70
+ oauthInstance: this,
67
71
  ...opts.captchaOptions,
68
72
  });
69
73
  request = captcha.request.bind(captcha);
@@ -240,6 +244,99 @@ export class Auth {
240
244
  });
241
245
  return Promise.resolve(credentials);
242
246
  }
247
+ async toBindIdentity(params) {
248
+ const credentials = params.credentials || (await this.config.credentialsClient.localCredentials.getCredentials());
249
+ let res;
250
+ try {
251
+ await this.bindWithProvider({
252
+ provider_token: params.provider_token,
253
+ }, credentials);
254
+ res = { data: { type: OAUTH_TYPE.BIND_IDENTITY, provider: params.provider }, error: null };
255
+ }
256
+ catch (error) {
257
+ res = { data: { type: OAUTH_TYPE.BIND_IDENTITY }, error: new AuthError(error) };
258
+ }
259
+ if (params.fireEvent) {
260
+ this.config.eventBus?.fire?.(EVENTS.AUTH_STATE_CHANGED, {
261
+ event: AUTH_STATE_CHANGED_TYPE.BIND_IDENTITY,
262
+ info: res,
263
+ });
264
+ }
265
+ return res;
266
+ }
267
+ async getInitialSession() {
268
+ let data = {};
269
+ try {
270
+ if (typeof window === 'undefined' || typeof document === 'undefined') {
271
+ return { data: null, error: null };
272
+ }
273
+ const localSearch = new URLSearchParams(location?.search);
274
+ const code = localSearch.get('code');
275
+ const state = localSearch.get('state');
276
+ if (!code || !state) {
277
+ return { data: null, error: null };
278
+ }
279
+ let cacheData = null;
280
+ try {
281
+ cacheData = JSON.parse(sessionStorage.getItem(state) || 'null');
282
+ }
283
+ catch {
284
+ }
285
+ data = { type: cacheData?.type };
286
+ const errorParam = localSearch.get('error');
287
+ const errorDescription = localSearch.get('error_description');
288
+ if (errorParam || errorDescription) {
289
+ return {
290
+ data,
291
+ error: new AuthError({ message: errorDescription || errorParam || 'Unknown error from OAuth provider' }),
292
+ };
293
+ }
294
+ const provider = cacheData?.provider || localSearch.get('provider');
295
+ if (!provider) {
296
+ return { data, error: new AuthError({ message: 'Provider is required for OAuth verification' }) };
297
+ }
298
+ const redirectUri = location.origin + location.pathname;
299
+ const { provider_token: providerToken } = await this.grantProviderToken({
300
+ provider_id: provider,
301
+ provider_redirect_uri: redirectUri,
302
+ provider_code: code,
303
+ });
304
+ let credentials;
305
+ let user = null;
306
+ let res;
307
+ if (cacheData.type === OAUTH_TYPE.BIND_IDENTITY) {
308
+ credentials = await this.config.credentialsClient.localCredentials.getCredentials();
309
+ res = await this.toBindIdentity({ provider, provider_token: providerToken, credentials });
310
+ }
311
+ else if (cacheData.type === OAUTH_TYPE.SIGN_IN) {
312
+ res = this.getParamsByVersion({ provider }, 'AUTH_SIGN_IN_WITH_PROVIDER_URL');
313
+ credentials = await this.config.request(res.url, {
314
+ method: 'POST',
315
+ body: { provider_token: providerToken },
316
+ });
317
+ try {
318
+ user = await this.getUserInfo({ credentials });
319
+ }
320
+ catch (e) {
321
+ console.error('get user info error', e);
322
+ }
323
+ res = { data: { ...data, session: credentials, user }, error: null };
324
+ }
325
+ localSearch.delete('code');
326
+ localSearch.delete('state');
327
+ localSearch.delete('provider');
328
+ this.restoreUrlState(cacheData?.search === undefined ? `?${localSearch.toString()}` : cacheData.search, cacheData?.hash || location.hash);
329
+ try {
330
+ sessionStorage.removeItem(state);
331
+ }
332
+ catch {
333
+ }
334
+ return res;
335
+ }
336
+ catch (error) {
337
+ return { data, error: new AuthError(error) };
338
+ }
339
+ }
243
340
  async signInCustom(params) {
244
341
  const credentials = await this.config.request(ApiUrls.AUTH_SIGN_IN_CUSTOM, {
245
342
  method: 'POST',
@@ -256,11 +353,12 @@ export class Auth {
256
353
  await this.config.credentialsClient.setCredentials(credentials);
257
354
  return Promise.resolve(credentials);
258
355
  }
259
- async bindWithProvider(params) {
356
+ async bindWithProvider(params, credentials) {
260
357
  return this.config.request(ApiUrls.PROVIDER_BIND_URL, {
261
358
  method: 'POST',
262
359
  body: params,
263
360
  withCredentials: true,
361
+ getCredentials: credentials ? () => credentials : undefined,
264
362
  });
265
363
  }
266
364
  async getUserProfile(params) {
@@ -275,6 +373,7 @@ export class Auth {
275
373
  const userInfo = await this.config.request(res.url, {
276
374
  method: 'GET',
277
375
  withCredentials: true,
376
+ getCredentials: params.credentials ? () => params.credentials : undefined,
278
377
  });
279
378
  if (userInfo.sub) {
280
379
  userInfo.uid = userInfo.sub;
@@ -635,4 +734,16 @@ export class Auth {
635
734
  },
636
735
  });
637
736
  }
737
+ restoreUrlState(search, hash) {
738
+ if (search === undefined)
739
+ return;
740
+ try {
741
+ const url = new URL(window.location.href);
742
+ url.search = search;
743
+ url.hash = hash || '';
744
+ window.history.replaceState(null, '', url.toString());
745
+ }
746
+ catch {
747
+ }
748
+ }
638
749
  }
@@ -0,0 +1,9 @@
1
+ export class AuthError extends Error {
2
+ constructor(error) {
3
+ super(error.error_description || error.message);
4
+ this.__isAuthError = true;
5
+ this.name = 'AuthError';
6
+ this.status = error.error;
7
+ this.code = error.error_code;
8
+ }
9
+ }
@@ -112,3 +112,25 @@ export var ErrorType;
112
112
  ErrorType["CAPTCHA_REQUIRED"] = "captcha_required";
113
113
  ErrorType["CAPTCHA_INVALID"] = "captcha_invalid";
114
114
  })(ErrorType || (ErrorType = {}));
115
+ export const LOGIN_STATE_CHANGED_TYPE = {
116
+ SIGN_OUT: 'sign_out',
117
+ SIGN_IN: 'sign_in',
118
+ CREDENTIALS_ERROR: 'credentials_error',
119
+ };
120
+ export const AUTH_STATE_CHANGED_TYPE = {
121
+ SIGNED_OUT: 'SIGNED_OUT',
122
+ SIGNED_IN: 'SIGNED_IN',
123
+ INITIAL_SESSION: 'INITIAL_SESSION',
124
+ PASSWORD_RECOVERY: 'PASSWORD_RECOVERY',
125
+ TOKEN_REFRESHED: 'TOKEN_REFRESHED',
126
+ USER_UPDATED: 'USER_UPDATED',
127
+ BIND_IDENTITY: 'BIND_IDENTITY',
128
+ };
129
+ export const EVENTS = {
130
+ LOGIN_STATE_CHANGED: 'loginStateChanged',
131
+ AUTH_STATE_CHANGED: 'authStateChanged',
132
+ };
133
+ export const OAUTH_TYPE = {
134
+ SIGN_IN: 'sign_in',
135
+ BIND_IDENTITY: 'bind_identity',
136
+ };
@@ -0,0 +1,129 @@
1
+ import { CloudbaseEventEmitter } from '@cloudbase/utilities/dist/cjs/libs/events';
2
+ import { parseCaptcha } from '@cloudbase/utilities/dist/cjs/libs/util';
3
+ const debounce = (func, delay) => {
4
+ let timeoutId;
5
+ return (...args) => {
6
+ clearTimeout(timeoutId);
7
+ timeoutId = setTimeout(() => func.apply(null, args), delay);
8
+ };
9
+ };
10
+ const eventBus = new CloudbaseEventEmitter();
11
+ const CAPTCHA_EVENT = {
12
+ CAPTCHA_DATA_CHANGE: 'captchaDataChange',
13
+ RESOLVE_CAPTCHA_DATA: 'resolveCaptchaData',
14
+ };
15
+ const CAPTCHA_STYLES = {
16
+ overlay: 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:999',
17
+ modal: 'position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 0 10px rgba(0,0,0,0.2);z-index:1000',
18
+ prompt: 'margin-bottom:15px',
19
+ captchaWrap: 'display:flex;align-items:center;justify-content:space-between;margin-bottom:15px',
20
+ captchaImg: 'width:100%;height:auto;border:1px solid #eee',
21
+ refreshBtn: 'padding:10px 8px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;flex:1;white-space:nowrap;margin-left:10px',
22
+ input: 'width:100%;padding:14px 16px;margin-bottom:15px;box-sizing:border-box;border:2px solid #e8ecf4;border-radius:10px;font-size:15px',
23
+ confirmBtn: 'width:100%;padding:10px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer',
24
+ loading: 'background:#6c757d;cursor:not-allowed',
25
+ };
26
+ const genCaptchaDom = ({ oauthInstance, captchaState }) => {
27
+ const CAPTCHA_IMG_ID = 'captcha-image';
28
+ const refreshCaptcha = async () => {
29
+ try {
30
+ const result = await oauthInstance.createCaptchaData({ state: captchaState.state });
31
+ captchaState = { ...captchaState, captchaData: result.data, token: result.token };
32
+ document.getElementById(CAPTCHA_IMG_ID).src = result.data;
33
+ }
34
+ catch (error) {
35
+ console.error('刷新图形验证码失败', error);
36
+ }
37
+ };
38
+ const createElement = (tag, styles, text) => {
39
+ const el = document.createElement(tag);
40
+ if (styles)
41
+ el.style.cssText = styles;
42
+ if (text)
43
+ el.textContent = text;
44
+ return el;
45
+ };
46
+ const overlay = createElement('div', CAPTCHA_STYLES.overlay);
47
+ const modal = createElement('div', CAPTCHA_STYLES.modal);
48
+ modal.appendChild(createElement('p', CAPTCHA_STYLES.prompt, '请输入你看到的字符:'));
49
+ const captchaWrap = createElement('div', CAPTCHA_STYLES.captchaWrap);
50
+ const captchaImg = createElement('img', CAPTCHA_STYLES.captchaImg);
51
+ captchaImg.id = CAPTCHA_IMG_ID;
52
+ captchaImg.src = captchaState.captchaData;
53
+ captchaWrap.appendChild(captchaImg);
54
+ const refreshBtn = createElement('button', CAPTCHA_STYLES.refreshBtn, '刷新');
55
+ refreshBtn.onclick = debounce(async () => {
56
+ refreshBtn.textContent = '加载中...';
57
+ refreshBtn.disabled = true;
58
+ refreshBtn.style.cssText = `${CAPTCHA_STYLES.refreshBtn};${CAPTCHA_STYLES.loading}`;
59
+ try {
60
+ await refreshCaptcha();
61
+ }
62
+ finally {
63
+ refreshBtn.textContent = '刷新';
64
+ refreshBtn.disabled = false;
65
+ refreshBtn.style.cssText = CAPTCHA_STYLES.refreshBtn;
66
+ }
67
+ }, 500);
68
+ captchaWrap.appendChild(refreshBtn);
69
+ modal.appendChild(captchaWrap);
70
+ const input = createElement('input', CAPTCHA_STYLES.input);
71
+ input.type = 'text';
72
+ input.placeholder = '输入字符';
73
+ input.maxLength = 4;
74
+ modal.appendChild(input);
75
+ const errorMsg = createElement('div', 'color:#dc3545;font-size:12px;margin-bottom:10px;display:none;padding:8px;background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px');
76
+ modal.appendChild(errorMsg);
77
+ const showError = (message) => {
78
+ errorMsg.textContent = message;
79
+ errorMsg.style.display = 'block';
80
+ };
81
+ const confirmBtn = createElement('button', CAPTCHA_STYLES.confirmBtn, '确定');
82
+ confirmBtn.onclick = debounce(async () => {
83
+ const inputValue = input.value.trim();
84
+ if (!inputValue) {
85
+ showError('请输入字符');
86
+ return;
87
+ }
88
+ errorMsg.style.display = 'none';
89
+ confirmBtn.textContent = '验证中...';
90
+ confirmBtn.disabled = true;
91
+ confirmBtn.style.cssText = `${CAPTCHA_STYLES.confirmBtn};${CAPTCHA_STYLES.loading}`;
92
+ try {
93
+ const verifyResult = await oauthInstance.verifyCaptchaData({
94
+ token: captchaState.token,
95
+ key: inputValue,
96
+ });
97
+ eventBus.fire(CAPTCHA_EVENT.RESOLVE_CAPTCHA_DATA, verifyResult);
98
+ console.log('图形验证码校验成功');
99
+ document.body.removeChild(overlay);
100
+ document.body.removeChild(modal);
101
+ }
102
+ catch (error) {
103
+ console.error('图形验证码校验失败', error);
104
+ const errorMessage = error.error_description || '图形验证码校验失败';
105
+ showError(errorMessage);
106
+ input.value = '';
107
+ input.focus();
108
+ await refreshCaptcha();
109
+ }
110
+ finally {
111
+ confirmBtn.textContent = '确定';
112
+ confirmBtn.disabled = false;
113
+ confirmBtn.style.cssText = CAPTCHA_STYLES.confirmBtn;
114
+ }
115
+ }, 500);
116
+ modal.appendChild(confirmBtn);
117
+ document.body.appendChild(overlay);
118
+ document.body.appendChild(modal);
119
+ };
120
+ export const openURIWithCallback = async (url, oauthInstance) => {
121
+ const { captchaData, state, token } = parseCaptcha(url);
122
+ genCaptchaDom({ oauthInstance, captchaState: { captchaData, state, token } });
123
+ return new Promise((resolve) => {
124
+ console.log('等待图形验证码校验结果...');
125
+ eventBus.on(CAPTCHA_EVENT.RESOLVE_CAPTCHA_DATA, (res) => {
126
+ resolve(res?.data);
127
+ });
128
+ });
129
+ };
@@ -1,7 +1,7 @@
1
1
  import { ApiUrls, ErrorType } from '../auth/consts';
2
2
  import { defaultStorage } from '../oauth2client/oauth2client';
3
- import { isInMpWebView, isMp } from '../utils/mp';
4
- import MyURLSearchParams from '../utils/urlSearchParams';
3
+ import { isMp } from '../utils/mp';
4
+ import { openURIWithCallback } from './captcha-dom';
5
5
  export class Captcha {
6
6
  constructor(opts) {
7
7
  if (!opts.openURIWithCallback) {
@@ -11,7 +11,7 @@ export class Captcha {
11
11
  opts.storage = defaultStorage;
12
12
  }
13
13
  this.config = opts;
14
- this.tokenSectionName = `captcha_${opts.clientId}`;
14
+ this.tokenSectionName = `captcha_${opts.clientId || opts.env}`;
15
15
  }
16
16
  isMatch() {
17
17
  return this.config?.adapter?.isMatch?.() || isMp();
@@ -42,65 +42,7 @@ export class Captcha {
42
42
  return resp;
43
43
  }
44
44
  getDefaultOpenURIWithCallback() {
45
- if (!this.isMatch() && !isInMpWebView()) {
46
- if (window.location.search.indexOf('__captcha') > 0) {
47
- document.body.style.display = 'none';
48
- }
49
- if (document.getElementById('captcha_panel_wrap') === null) {
50
- const elementDiv = document.createElement('div');
51
- elementDiv.style.cssText = 'background-color: rgba(0, 0, 0, 0.7);position: fixed;left: 0px;right: 0px;top: 0px;bottom: 0px;padding: 9vw 0 0 0;display: none;z-index:100;';
52
- elementDiv.setAttribute('id', 'captcha_panel_wrap');
53
- setTimeout(() => {
54
- document.body.appendChild(elementDiv);
55
- }, 0);
56
- }
57
- }
58
- return this.defaultOpenURIWithCallback;
59
- }
60
- async defaultOpenURIWithCallback(url, opts) {
61
- const { width = '355px', height = '355px' } = opts || {};
62
- const matched = url.match(/^(data:.*)$/);
63
- if (matched) {
64
- return Promise.reject({
65
- error: ErrorType.UNIMPLEMENTED,
66
- error_description: 'need to impl captcha data',
67
- });
68
- }
69
- const target = document.getElementById('captcha_panel_wrap');
70
- const iframe = document.createElement('iframe');
71
- target.innerHTML = '';
72
- iframe.setAttribute('src', url);
73
- iframe.setAttribute('id', 'review-panel-iframe');
74
- iframe.style.cssText = `min-width:${width};display:block;height:${height};margin:0 auto;background-color: rgb(255, 255, 255);border: none;`;
75
- target.appendChild(iframe);
76
- target.style.display = 'block';
77
- return new Promise((resolve, reject) => {
78
- iframe.onload = function () {
79
- try {
80
- const windowLocation = window.location;
81
- const iframeLocation = iframe.contentWindow.location;
82
- if (iframeLocation.host + iframeLocation.pathname === windowLocation.host + windowLocation.pathname) {
83
- target.style.display = 'none';
84
- const iframeUrlParams = new MyURLSearchParams(iframeLocation.search);
85
- const captchToken = iframeUrlParams.get('captcha_token');
86
- if (captchToken) {
87
- return resolve({
88
- captcha_token: captchToken,
89
- expires_in: Number(iframeUrlParams.get('expires_in')),
90
- });
91
- }
92
- return reject({
93
- error: iframeUrlParams.get('error'),
94
- error_description: iframeUrlParams.get('error_description'),
95
- });
96
- }
97
- target.style.display = 'block';
98
- }
99
- catch (error) {
100
- target.style.display = 'block';
101
- }
102
- };
103
- });
45
+ return (url) => openURIWithCallback(url, this.config.oauthInstance);
104
46
  }
105
47
  async getCaptchaToken(forceNewToken, state) {
106
48
  if (!forceNewToken) {
@@ -109,41 +51,16 @@ export class Captcha {
109
51
  return captchaToken;
110
52
  }
111
53
  }
112
- let captchaTokenResp;
113
- if (!this.isMatch() && !isInMpWebView()) {
114
- const redirect_uri = `${window.location.origin + window.location.pathname}?__captcha=on`;
115
- captchaTokenResp = await this.config.request(ApiUrls.GET_CAPTCHA_URL, {
116
- method: 'POST',
117
- body: {
118
- client_id: this.config.clientId,
119
- redirect_uri,
120
- state,
121
- },
122
- withCredentials: false,
123
- });
124
- if (captchaTokenResp.captcha_token) {
125
- const captchaToken = {
126
- captcha_token: captchaTokenResp.captcha_token,
127
- expires_in: captchaTokenResp.expires_in,
128
- };
129
- this.saveCaptchaToken(captchaToken);
130
- return captchaTokenResp.captcha_token;
131
- }
132
- }
133
- else {
134
- const captchaDataResp = await this.config.request(ApiUrls.CAPTCHA_DATA_URL, {
135
- method: 'POST',
136
- body: {
137
- state,
138
- redirect_uri: '',
139
- },
140
- withCredentials: false,
141
- });
142
- captchaTokenResp = {
143
- url: `${captchaDataResp.data}?state=${encodeURIComponent(state)}&token=${encodeURIComponent(captchaDataResp.token)}`,
144
- };
145
- }
146
- const captchaToken = await this.config.openURIWithCallback(captchaTokenResp.url);
54
+ const captchaDataResp = await this.config.request(ApiUrls.CAPTCHA_DATA_URL, {
55
+ method: 'POST',
56
+ body: {
57
+ state,
58
+ redirect_uri: '',
59
+ },
60
+ withCredentials: false,
61
+ });
62
+ const captchaTokenUrl = `${captchaDataResp.data}?state=${encodeURIComponent(state)}&token=${encodeURIComponent(captchaDataResp.token)}`;
63
+ const captchaToken = await this.config.openURIWithCallback(captchaTokenUrl);
147
64
  this.saveCaptchaToken(captchaToken);
148
65
  return captchaToken.captcha_token;
149
66
  }
package/dist/esm/index.js CHANGED
@@ -2,12 +2,16 @@ import { OAuth2Client } from './oauth2client/oauth2client';
2
2
  import { Auth } from './auth/apis';
3
3
  import { AUTH_API_PREFIX } from './auth/consts';
4
4
  export { Auth } from './auth/apis';
5
- export { AUTH_API_PREFIX } from './auth/consts';
5
+ export { AUTH_API_PREFIX, OAUTH_TYPE } from './auth/consts';
6
+ export { AuthError } from './auth/auth-error';
6
7
  import * as authModels_1 from './auth/models';
7
8
  export { authModels_1 as authModels };
9
+ export { weappJwtDecodeAll } from './utils/base64';
10
+ export { LOGIN_STATE_CHANGED_TYPE, EVENTS, AUTH_STATE_CHANGED_TYPE } from './auth/consts';
8
11
  export class CloudbaseOAuth {
9
12
  constructor(authOptions) {
10
- const { apiOrigin, apiPath = AUTH_API_PREFIX, clientId, env, storage, request, baseRequest, anonymousSignInFunc, wxCloud, adapter, onCredentialsError, headers, i18n, useWxCloud } = authOptions;
13
+ const { apiOrigin, apiPath = AUTH_API_PREFIX, clientId, env, storage, request, baseRequest, anonymousSignInFunc, wxCloud, adapter, onCredentialsError, headers, i18n, useWxCloud, eventBus, detectSessionInUrl, debug, } = authOptions;
14
+ this.detectSessionInUrl = detectSessionInUrl ?? false;
11
15
  this.oauth2client = new OAuth2Client({
12
16
  apiOrigin,
13
17
  apiPath,
@@ -21,6 +25,8 @@ export class CloudbaseOAuth {
21
25
  headers: headers || {},
22
26
  i18n,
23
27
  useWxCloud,
28
+ eventBus,
29
+ debug,
24
30
  });
25
31
  this.authApi = new Auth({
26
32
  credentialsClient: this.oauth2client,
@@ -28,5 +34,15 @@ export class CloudbaseOAuth {
28
34
  request: request ? this.oauth2client.request.bind(this.oauth2client) : undefined,
29
35
  adapter,
30
36
  });
37
+ if (detectSessionInUrl) {
38
+ this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi));
39
+ }
40
+ }
41
+ initializeSession(onUserObtained) {
42
+ if (!this.detectSessionInUrl) {
43
+ return;
44
+ }
45
+ this.oauth2client.setOnInitialSessionObtained(onUserObtained);
46
+ this.oauth2client.initialize();
31
47
  }
32
48
  }