Commit 4d59598a authored by Amber Kuo's avatar Amber Kuo
Browse files

anue-fe-sdk publish commit v2.0.0-beta.2.dev

parents
This diff is collapsed.
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/APIs/API.ts","webpack:///./src/packages/APIs/Email.ts","webpack:///./src/packages/APIs/Profile.ts","webpack:///./src/packages/APIs/TOS.ts","webpack:///./src/packages/APIs/index.ts"],"names":[],"mappings":"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","file":"APIs.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import getty from '@utils/getty';\nimport * as Network from '@libraries/Network';\n\nexport type IRequestOptions<T> = Anue.Network.RequestOptions<T>;\nexport type APITransform<T> = (resp: APIResponse.Response<T>) => any;\n\nexport default class API<T> {\n private mHandles: Array<(req: IRequestOptions<T>, res: APIResponse.Response<T>) => any> = [];\n private mOptions: Anue.Network.RequestOptions | null = null;\n private mTransform: APITransform<T> = API.BaseTransform;\n\n static BaseTransform = (resp: APIResponse.Response<any>) => {\n return resp\n ? resp.items\n : null\n };\n\n transform = (fn: APITransform<T>): API<T> => {\n this.mTransform = fn;\n return this\n };\n\n handle = (\n condition: number | ((req: IRequestOptions<T>, res: APIResponse.Response<T>) => boolean),\n handle: (req: IRequestOptions<T>, res: APIResponse.Response<T>) => any\n ): API<T> => {\n if (typeof condition === 'number') {\n this.mHandles.push((req, res) => {\n if (getty<number>(res, ['statusCode']) === condition) {\n return handle(req, res || { statusCode: 999, items: [] });\n }\n return res\n });\n } else {\n this.mHandles.push((req, res) => {\n if (condition(req, res || { statusCode: 999, items: [] })) {\n return handle(req, res || { statusCode: 999, items: [] });\n }\n return res\n });\n }\n\n return this;\n };\n\n options = (options: Anue.Network.RequestOptions) => {\n this.mOptions = options;\n return this;\n };\n\n send = async (): Promise<T> => {\n if (!this.mOptions) {\n throw {\n message:\n 'An API call cannot be sent without any options, call .options(opts) first'\n };\n }\n try {\n\n const response = await Network.getDriver().send<APIResponse.Response<T>>(\n this.mOptions\n );\n\n if (response.statusCode > 300) {\n throw response\n }\n\n return this.mTransform(response);\n }\n catch (error) {\n // @ts-ignore\n this.mHandles.forEach(h => h(this.mOptions, response))\n throw {\n message: 'API request error',\n detail: error\n }\n }\n\n };\n}\n","/**\n * @doc\n * @anue-package Anue.API.Email\n * 和電子郵件認證相關的API實作與集合,使用方式\n *\n * ```Javascript\n * import 'anue-fe-sdk'\n * import 'anue-fe-sdk/web-preset'\n * import Email from 'anue-fe-sdk/API/Email'\n *\n * // ...\n *\n * ```\n */\n\nimport * as Network from '@libraries/Network';\nimport Endpoints from '@constants/Endpoints';\nimport Misc from '@constants/Misc';\nimport getty from '@utils/getty';\n\ntype EmailVerify = APIResponse.Response<\n APIResponse.v1.User.Registration.Email.Verify\n>;\n\ntype EmailRegistration = APIResponse.Response<\n APIResponse.v1.User.Registration.Email\n>;\n\ntype EmailVerifyResend = APIResponse.Response<APIResponse.v1.User.Email.Resend>;\n\nexport default {\n verifyActivationCode: async (checkCode: string): Promise<boolean> => {\n const resp = await Network.getDriver().send<EmailVerify>({\n method: Misc.RequestMethod.PUT,\n url: Endpoints.v1User.registration.email.verify(),\n body: { checkCode }\n });\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to verify user',\n detail: resp\n };\n }\n\n return getty<boolean>(resp, ['items', 'verify']) || false;\n },\n\n register: async (\n name: string,\n email: string,\n password: string,\n channel: string\n ): Promise<number> => {\n const resp = await Network.getDriver().send<EmailRegistration>({\n method: Misc.RequestMethod.POST,\n url: Endpoints.v1User.registration.email(),\n body: { name, email, password, channel }\n });\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to register user',\n detail: resp\n };\n }\n return code;\n },\n\n resend: async (email: string): Promise<number> => {\n const resp = await Network.getDriver().send<EmailVerifyResend>({\n method: Misc.RequestMethod.POST,\n url: Endpoints.v1User.email.resend(),\n body: { email }\n });\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to resend verify email',\n detail: resp\n };\n }\n return code;\n }\n};\n","/**\n * @doc\n * @anue-package Anue.API.Profile\n * 使用者帳戶資訊相關的API實作與集合,使用方式\n *\n * ```Javascript\n * import 'anue-fe-sdk'\n * import 'anue-fe-sdk/web-preset'\n * import Profile from 'anue-fe-sdk/API/Profile'\n *\n * // ...\n *\n * ```\n */\n\nimport * as Network from '@libraries/Network';\nimport Endpoints from '@constants/Endpoints';\nimport Misc from '@constants/Misc';\nimport API from '@packages/APIs/API';\n\ntype UpdatePassword = APIResponse.Response<\n APIResponse.v1.User.Profile.Password\n>;\n\ntype RecoverPassword = APIResponse.Response<\n APIResponse.v1.User.Profile.Password.Recovery\n>;\n\ntype ResetPassword = APIResponse.Response<\n APIResponse.v1.User.Profile.Password.Reset\n>;\n\ntype UpdateAvatar = APIResponse.Response<APIResponse.v1.User.Profile.Avatar>;\n\nexport default {\n updateProfileV1: (profile: Anue.Auth.UserProfile) => {\n return new API()\n .options({\n method: Misc.RequestMethod.PUT,\n url: Endpoints.v1User.profile(),\n body: profile\n })\n .transform(res => res.statusCode < 300);\n },\n\n updatePassword: async (\n oldPassword: string,\n newPassword: string\n ): Promise<number> => {\n const resp = await Network.getDriver().send<UpdatePassword>({\n method: Misc.RequestMethod.PUT,\n url: Endpoints.v1User.profile.password(),\n body: {\n oldPassword,\n newPassword\n }\n });\n const code = await resp.statusCode;\n\n if (code !== 200) {\n throw {\n message: 'failed to update password',\n detail: resp\n };\n }\n return code;\n },\n\n recoverPassword: async (email: string): Promise<number> => {\n const resp = await Network.getDriver().send<RecoverPassword>({\n method: Misc.RequestMethod.POST,\n url: Endpoints.v1User.profile.password.recovery(),\n body: { email }\n });\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to send recovery email',\n detail: resp\n };\n }\n return code;\n },\n\n resetPassword: async (\n recoverKey: string,\n password: string\n ): Promise<number> => {\n const resp = await Network.getDriver().send<ResetPassword>({\n method: Misc.RequestMethod.PUT,\n url: Endpoints.v1User.profile.password.reset(),\n body: {\n recoverKey,\n password\n }\n });\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to confirm password reset',\n detail: resp\n };\n }\n return code;\n },\n\n updateAvatar: async (avatar: FormData): Promise<number> => {\n const resp = await Network.getDriver().send<UpdateAvatar>({\n method: Misc.RequestMethod.POST,\n url: Endpoints.v1User.profile.avatar(),\n body: avatar\n });\n\n const code = await resp.statusCode;\n if (code !== 200) {\n throw {\n message: 'failed to update avatar',\n detail: resp\n };\n }\n return code;\n },\n\n getProfileV2: (): API<Anue.Auth.UserProfile> => {\n return new API<Anue.Auth.UserProfile>().options({\n url: Endpoints.api.v2.user.new.profile()\n });\n }\n};\n","import Endpoints from '@constants/Endpoints';\nimport Misc from '@constants/Misc';\nimport * as Network from '@libraries/Network';\n\nclass TOS {\n /**\n * @doc\n * @public\n * @method getAllTOS\n * @promise\n * @returns APIResponse.v1.User.TOS.All\n * 單純顯示 ToS,無須登入\n */\n getAllTOS = async (\n service: string = 'ALL'\n ): Promise<APIResponse.v1.User.TOS.All> => {\n const endpoint = Endpoints.api.v1.user.tos.all();\n const network = Network.getDriver();\n const response = network.send({\n method: Misc.RequestMethod.GET,\n headers: {\n 'content-type': 'application/json'\n },\n url: service\n ? endpoint.toString() + `?service=${service}`\n : endpoint.toString()\n });\n\n return await response;\n };\n\n /**\n * @doc\n * @public\n * @method updateTOS\n * @promise\n * @returns APIResponse.v1.User.TOS\n * 使用則接受 ToS\n */\n updateTOS = async (\n platform: string = 'DESKTOP',\n services: string = 'ALL'\n ): Promise<APIResponse.v1.User.TOS> => {\n const endpoint = Endpoints.api.v1.user.tos();\n const network = Network.getDriver();\n const response = network.send({\n method: Misc.RequestMethod.PUT,\n headers: {\n 'content-type': 'application/json'\n },\n url: endpoint.toString(),\n body: JSON.stringify({\n platform,\n services\n })\n });\n\n return await response;\n };\n\n /**\n * @doc\n * @public\n * @method checkUserTOS\n * @promise\n * @returns APIResponse.v1.User.TOS.User\n * 使用者登入後,檢查 ToS 狀態\n */\n checkUserTOS = async (\n service: string = 'ALL'\n ): Promise<APIResponse.v1.User.TOS.User> => {\n const endpoint = Endpoints.api.v1.user.tos.user();\n const network = Network.getDriver();\n const response = network.send({\n method: Misc.RequestMethod.GET,\n headers: {\n 'content-type': 'application/json'\n },\n url: service\n ? endpoint.toString() + `?service=${service}`\n : endpoint.toString()\n });\n\n return await response;\n };\n}\n\nexport default TOS;\n","/**\n * @doc\n * @anue-package Anue.API\n * API函數集合\n */\nimport TOS from './TOS';\nimport Email from './Email';\nimport Profile from './Profile';\n\nexport { TOS, Email, Profile };\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["AnueMailProvider"],{
/***/ "./src/packages/Provider/AnueMailProvider.ts":
/*!***************************************************!*\
!*** ./src/packages/Provider/AnueMailProvider.ts ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @packages/Provider/AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _libraries_Storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @libraries/Storage */ "./src/libraries/Storage/index.ts");
/* harmony import */ var _constants_Misc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @constants/Misc */ "./src/constants/Misc.ts");
/* harmony import */ var _constants_Endpoints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @constants/Endpoints */ "./src/constants/Endpoints.ts");
/* harmony import */ var _libraries_Network__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @libraries/Network */ "./src/libraries/Network/index.ts");
/* harmony import */ var _utils_getty__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @utils/getty */ "./src/utils/getty.ts");
/* harmony import */ var _utils_obfuscator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @utils/obfuscator */ "./src/utils/obfuscator.ts");
/* harmony import */ var _utils_urld__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @utils/urld */ "./src/utils/urld.ts");
/* harmony import */ var _utils_sso__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @utils/sso */ "./src/utils/sso.ts");
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var AnueMailProvider = /** @class */ (function (_super) {
__extends(AnueMailProvider, _super);
function AnueMailProvider() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.mShouldStoreCredentials = _utils_urld__WEBPACK_IMPORTED_MODULE_7__["default"].get('onetime')
? false
: true;
_this.getName = function () { return 'email'; };
_this.loginImpl = function (args) { return __awaiter(_this, void 0, void 0, function () {
var err_1, resp;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 1, , 3]);
if (!args || !args.email || !args.password) {
throw {
message: "AnueMailProvider can not login with improper arguments \"" + JSON.stringify(args) + "\""
};
}
this.mContext = {
accessToken: JSON.stringify(args),
tokenType: ''
};
return [3 /*break*/, 3];
case 1:
err_1 = _a.sent();
console.warn(err_1);
return [4 /*yield*/, null];
case 2: return [2 /*return*/, _a.sent()];
case 3: return [4 /*yield*/, this.renewer()];
case 4:
resp = _a.sent();
if (resp.statusCode !== 200) {
throw resp;
}
return [4 /*yield*/, this.mContext];
case 5: return [2 /*return*/, _a.sent()];
}
});
}); };
_this.logoutImpl = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.mContext = null;
return [4 /*yield*/, true];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); };
_this.getSSOCacheData = function () {
return {
accessToken: _this.mContext && _this.mContext.accessToken
};
};
_this.refresh = _this.loginImpl;
_this.renewer = function () { return __awaiter(_this, void 0, void 0, function () {
var body, resp;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
body = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_5__["default"])(this.mContext, ['accessToken']);
console.log('[AnueMailProvider] renew ..', body);
if (!body) {
throw {
message: 'AnueMailProvider unable to renew token as its context is empty'
};
}
return [4 /*yield*/, _libraries_Network__WEBPACK_IMPORTED_MODULE_4__["getDriver"]().send({
method: _constants_Misc__WEBPACK_IMPORTED_MODULE_2__["default"].RequestMethod.POST,
url: _constants_Endpoints__WEBPACK_IMPORTED_MODULE_3__["default"].v1User.email.renew(),
body: JSON.parse(body)
})];
case 1:
resp = _a.sent();
if (!(resp.statusCode === 200 && this.mShouldStoreCredentials)) return [3 /*break*/, 3];
return [4 /*yield*/, _libraries_Storage__WEBPACK_IMPORTED_MODULE_1__["getDriver"]().setItem("anue-mail:" + AnueMailProvider.mHost, Object(_utils_obfuscator__WEBPACK_IMPORTED_MODULE_6__["obfuscate"])(body))];
case 2:
_a.sent();
_a.label = 3;
case 3: return [2 /*return*/, resp];
}
});
}); };
_this.initImpl = function () { return __awaiter(_this, void 0, void 0, function () {
var storage, ssoCookie, storedToken, urlToken, accessToken;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log('get stored token from %s', "anue-mail:" + location.protocol + "//" + location.host);
storage = _libraries_Storage__WEBPACK_IMPORTED_MODULE_1__["getDriver"]();
ssoCookie = _utils_sso__WEBPACK_IMPORTED_MODULE_8__["default"].getSSOCookie();
return [4 /*yield*/, storage.getItem("anue-mail:" + location.protocol + "//" + location.host)];
case 1:
storedToken = _a.sent();
urlToken = _utils_urld__WEBPACK_IMPORTED_MODULE_7__["default"].get('mail_access_token') || null;
accessToken = '';
if (ssoCookie && ssoCookie.provider === 'email' && ssoCookie.accessToken) {
accessToken = ssoCookie.accessToken;
}
console.log('[AnueMailProvider] cookieToken = %s storedToken = %o urlToken =%o', accessToken, storedToken, urlToken);
// hash token not found, try to find from storage
if (!accessToken && urlToken) {
accessToken = Object(_utils_obfuscator__WEBPACK_IMPORTED_MODULE_6__["defuscate"])(urlToken);
console.log('%c[AnueMailProvider] consumed access token from url hash %o', 'color: #0077ff;', this.mContext);
}
else if (!accessToken && storedToken) {
try {
console.log('[AnueMailProvider] defuscated stored token = %o ', accessToken);
accessToken = Object(_utils_obfuscator__WEBPACK_IMPORTED_MODULE_6__["defuscate"])(storedToken);
}
catch (err) {
console.warn(err);
}
}
if (!accessToken) return [3 /*break*/, 3];
this.mContext = {
tokenType: '',
accessToken: accessToken
};
return [4 /*yield*/, this.renewer()];
case 2:
_a.sent();
_a.label = 3;
case 3:
this.emitStateChange();
return [4 /*yield*/, this];
case 4: return [2 /*return*/, _a.sent()];
}
});
}); };
return _this;
}
AnueMailProvider.prototype.handleStateChangeImpl = function () {
this.emitStateChange();
};
AnueMailProvider.prototype.getContext = function () {
return this.mContext;
};
AnueMailProvider.mHost = typeof location === 'undefined'
? ''
: location.protocol + '//' + location.host;
return AnueMailProvider;
}(_packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (AnueMailProvider);
/***/ })
},[["./src/packages/Provider/AnueMailProvider.ts","runtime","common"]]]);
});
//# sourceMappingURL=AnueMailProvider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/AnueMailProvider.ts"],"names":[],"mappings":"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","file":"AnueMailProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import AbstractProvider from '@packages/Provider/AbstractProvider.abstract';\nimport * as Storage from '@libraries/Storage';\nimport Misc from '@constants/Misc';\nimport Endpoints from '@constants/Endpoints';\nimport * as Network from '@libraries/Network';\nimport getty from '@utils/getty';\nimport { obfuscate, defuscate } from '@utils/obfuscator';\nimport urld from '@utils/urld';\nimport sso from '@utils/sso';\n\nexport interface IMailAndPassword {\n email: string;\n password: string;\n}\n\nexport default class AnueMailProvider extends AbstractProvider {\n private static mHost =\n typeof location === 'undefined'\n ? ''\n : location.protocol + '//' + location.host;\n private mShouldStoreCredentials: boolean = urld.get<string>('onetime')\n ? false\n : true;\n\n getName = () => 'email';\n\n handleStateChangeImpl() {\n this.emitStateChange();\n }\n\n loginImpl = async (\n args?: IMailAndPassword\n ): Promise<Anue.Provider.NullableResponse> => {\n try {\n if (!args || !args.email || !args.password) {\n throw {\n message: `AnueMailProvider can not login with improper arguments \"${JSON.stringify(\n args\n )}\"`\n };\n }\n this.mContext = {\n accessToken: JSON.stringify(args),\n tokenType: ''\n };\n } catch (err) {\n console.warn(err);\n return await null;\n }\n const resp = await this.renewer();\n\n if (resp.statusCode !== 200) {\n throw resp;\n }\n\n return await this.mContext;\n };\n\n logoutImpl = async (): Promise<boolean> => {\n this.mContext = null;\n return await true;\n };\n\n getSSOCacheData = () => {\n return {\n accessToken: this.mContext && this.mContext.accessToken\n };\n };\n\n refresh = this.loginImpl;\n\n renewer = async (): Promise<Anue.Auth.RefreshTokenResponse> => {\n const body = getty<string>(this.mContext, ['accessToken']);\n console.log('[AnueMailProvider] renew ..', body);\n if (!body) {\n throw {\n message:\n 'AnueMailProvider unable to renew token as its context is empty'\n };\n }\n\n const resp = await Network.getDriver().send<\n APIResponse.Response<APIResponse.v1.User.Email.Renew>\n >({\n method: Misc.RequestMethod.POST,\n url: Endpoints.v1User.email.renew(),\n body: JSON.parse(body)\n });\n\n // store obfuscated password and email if it's valid\n if (resp.statusCode === 200 && this.mShouldStoreCredentials) {\n await Storage.getDriver().setItem(\n `anue-mail:${AnueMailProvider.mHost}`,\n obfuscate(body)\n );\n }\n\n return resp;\n };\n\n initImpl = async (): Promise<AbstractProvider> => {\n console.log(\n 'get stored token from %s',\n `anue-mail:${location.protocol}//${location.host}`\n );\n const storage = Storage.getDriver();\n const ssoCookie = sso.getSSOCookie();\n const storedToken = await storage.getItem(\n `anue-mail:${location.protocol}//${location.host}`\n );\n const urlToken = urld.get<string>('mail_access_token') || null;\n let accessToken = '';\n\n if (ssoCookie && ssoCookie.provider === 'email' && ssoCookie.accessToken) {\n accessToken = ssoCookie.accessToken;\n }\n\n console.log(\n '[AnueMailProvider] cookieToken = %s storedToken = %o urlToken =%o',\n accessToken,\n storedToken,\n urlToken\n );\n\n // hash token not found, try to find from storage\n if (!accessToken && urlToken) {\n accessToken = defuscate(urlToken);\n console.log(\n '%c[AnueMailProvider] consumed access token from url hash %o',\n 'color: #0077ff;',\n this.mContext\n );\n } else if (!accessToken && storedToken) {\n try {\n console.log(\n '[AnueMailProvider] defuscated stored token = %o ',\n accessToken\n );\n accessToken = defuscate(storedToken);\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (accessToken) {\n this.mContext = {\n tokenType: '',\n accessToken\n };\n await this.renewer();\n }\n\n this.emitStateChange();\n\n return await this;\n };\n\n getContext(): Anue.Provider.NullableResponse {\n return this.mContext;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["AnueProxyProvider"],{
/***/ "./src/packages/Provider/AnueProxyProvider.ts":
/*!****************************************************!*\
!*** ./src/packages/Provider/AnueProxyProvider.ts ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @packages/Provider/AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _utils_eventy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @utils/eventy */ "./src/utils/eventy.ts");
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var AnueProxyProvider = /** @class */ (function (_super) {
__extends(AnueProxyProvider, _super);
function AnueProxyProvider() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.event = new _utils_eventy__WEBPACK_IMPORTED_MODULE_1__["default"]();
_this.loginImpl = function (args) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, {
idToken: '',
accessToken: 'proxy',
tokenType: ''
}];
});
}); };
_this.logoutImpl = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, true];
});
}); };
_this.renewer = function () { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
window.postMessage(JSON.stringify({
source: 'proxy',
action: 'refreshToken'
}), '*');
return [2 /*return*/, new Promise(function (resolve) {
var remove = _this.event.on('refresh', function (data) {
resolve(data);
remove();
});
})];
});
}); };
_this.initImpl = function () { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
window.postMessage(JSON.stringify({
source: 'proxy',
action: 'refreshToken'
}), '*');
this.mContext = {
idToken: '',
accessToken: 'proxy',
tokenType: ''
};
document.addEventListener('message', function (e) {
try {
var payload = JSON.parse(e.data);
if (payload.type !== 'anue-proxy') {
return;
}
if (payload.data) {
_this.event.emit('refresh', {
statusCode: 200,
message: '',
items: payload.data
});
_this.emitStateChange();
}
}
catch (err) {
console.log(err);
}
});
return [2 /*return*/, this];
});
}); };
return _this;
}
AnueProxyProvider.prototype.getName = function () {
return 'proxy';
};
AnueProxyProvider.prototype.refresh = function () {
throw new Error('Method not implemented.');
};
AnueProxyProvider.prototype.getContext = function () {
return this.mContext;
};
return AnueProxyProvider;
}(_packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (AnueProxyProvider);
/***/ })
},[["./src/packages/Provider/AnueProxyProvider.ts","runtime","common"]]]);
});
//# sourceMappingURL=AnueProxyProvider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/AnueProxyProvider.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACV4E;AAC1C;AAElC;IAA+C,qCAAgB;IAA/D;QAAA,qEAkFC;QAhFS,WAAK,GAAG,IAAI,qDAAM,EAAE;QAE5B,eAAS,GAAG,UAAO,IAAU;;gBAC3B,sBAAO;wBACL,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,OAAO;wBACpB,SAAS,EAAE,EAAE;qBACd;;aACF;QAED,gBAAU,GAAG;;gBACX,sBAAO,IAAI;;aACZ;QAMD,aAAO,GAAG;;;gBAER,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;oBAChC,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,cAAc;iBACvB,CAAC,EAAE,GAAG,CAAC;gBAER,sBAAO,IAAI,OAAO,CAAiC,iBAAO;wBAExD,IAAM,MAAM,GAAG,KAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,IAAoC;4BAC3E,OAAO,CAAC,IAAI,CAAC;4BACb,MAAM,EAAE;wBACV,CAAC,CAAC;oBAEJ,CAAC,CAAC;;aAEH;QAMD,cAAQ,GAAG;;;gBAET,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;oBAChC,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,cAAc;iBACvB,CAAC,EAAE,GAAG,CAAC;gBAER,IAAI,CAAC,QAAQ,GAAG;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,OAAO;oBACpB,SAAS,EAAE,EAAE;iBACd;gBAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAM;oBAC1C,IAAI;wBACF,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;wBAClC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;4BACjC,OAAM;yBACP;wBACD,IAAI,OAAO,CAAC,IAAI,EAAE;4BAChB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;gCACzB,UAAU,EAAE,GAAG;gCACf,OAAO,EAAE,EAAE;gCACX,KAAK,EAAE,OAAO,CAAC,IAAI;6BACpB,CAAC;4BACF,KAAI,CAAC,eAAe,EAAE;yBACvB;qBACF;oBACD,OAAO,GAAG,EAAE;wBACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;qBACjB;gBACH,CAAC,CAAC;gBAEF,sBAAO,IAAI;;aACZ;;IAMH,CAAC;IAlEC,mCAAO,GAAP;QACE,OAAO,OAAO;IAChB,CAAC;IAoBD,mCAAO,GAAP;QACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAsCD,sCAAU,GAAV;QACE,OAAO,IAAI,CAAC,QAAQ;IACtB,CAAC;IAEH,wBAAC;AAAD,CAAC,CAlF8C,oFAAgB,GAkF9D","file":"AnueProxyProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import AbstractProvider from '@packages/Provider/AbstractProvider.abstract';\nimport Eventy from '@utils/eventy'\n\nexport default class AnueProxyProvider extends AbstractProvider {\n\n private event = new Eventy()\n\n loginImpl = async (args?: any): Promise<Anue.Provider.NullableResponse> => {\n return {\n idToken: '',\n accessToken: 'proxy',\n tokenType: ''\n }\n }\n\n logoutImpl = async (): Promise<boolean> => {\n return true\n }\n\n getName(): string {\n return 'proxy'\n }\n\n renewer = async (): Promise<Anue.Auth.RefreshTokenResponse> => {\n\n window.postMessage(JSON.stringify({\n source: 'proxy',\n action: 'refreshToken'\n }), '*')\n\n return new Promise<Anue.Auth.RefreshTokenResponse>(resolve => {\n\n const remove = this.event.on('refresh', (data: Anue.Auth.RefreshTokenResponse) => {\n resolve(data)\n remove()\n })\n\n })\n\n }\n\n refresh(): Promise<Anue.Provider.NullableResponse> {\n throw new Error('Method not implemented.');\n }\n\n initImpl = async (): Promise<AbstractProvider> => {\n\n window.postMessage(JSON.stringify({\n source: 'proxy',\n action: 'refreshToken'\n }), '*')\n\n this.mContext = {\n idToken: '',\n accessToken: 'proxy',\n tokenType: ''\n }\n\n document.addEventListener('message', (e: any) => {\n try {\n const payload = JSON.parse(e.data)\n if (payload.type !== 'anue-proxy') {\n return\n }\n if (payload.data) {\n this.event.emit('refresh', {\n statusCode: 200,\n message: '',\n items: payload.data\n })\n this.emitStateChange()\n }\n }\n catch (err) {\n console.log(err)\n }\n })\n\n return this\n }\n\n getContext(): Anue.Provider.NullableResponse {\n return this.mContext\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["Constants"],{
/***/ "./src/constants/index.ts":
/*!********************************!*\
!*** ./src/constants/index.ts ***!
\********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Keys */ "./src/constants/Keys.ts");
/* harmony default export */ __webpack_exports__["default"] = (_Keys__WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ })
},[["./src/constants/index.ts","runtime","common"]]]);
});
//# sourceMappingURL=Constants.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/constants/index.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVA;AAAA;AAA0B;AAEX,4GAAI,EAAC","file":"Constants.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import Keys from './Keys';\n\nexport default Keys;\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["FacebookOAuth2Provider"],{
/***/ "./src/packages/Provider/FacebookOAuth2Provider.ts":
/*!*********************************************************!*\
!*** ./src/packages/Provider/FacebookOAuth2Provider.ts ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @packages/Provider/AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _utils_getty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @utils/getty */ "./src/utils/getty.ts");
/* harmony import */ var _constants_Keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @constants/Keys */ "./src/constants/Keys.ts");
/* harmony import */ var _utils_rpc__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @utils/rpc */ "./src/utils/rpc.ts");
/* harmony import */ var _utils_urld__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @utils/urld */ "./src/utils/urld.ts");
/* harmony import */ var _utils_sso__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @utils/sso */ "./src/utils/sso.ts");
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var FacebookOAuth2Provider = /** @class */ (function (_super) {
__extends(FacebookOAuth2Provider, _super);
function FacebookOAuth2Provider(config) {
var _this = _super.call(this) || this;
_this.mIsInitialized = false;
_this.mRpc = null;
_this.getName = function () { return 'facebook'; };
_this.getType = function () { return _constants_Keys__WEBPACK_IMPORTED_MODULE_2__["default"].SupportedProviderType.Social; };
_this.getContext = function () {
return _this.mContext;
};
/**
* @doc
* @method consume
* @private
* @async
*
* 這個方法通常會在登入導向的目標網站上進行作用,用來處理`location.hash`上帶的認證資訊,包含了`access_token`、
* `token_type`、`authuser`等資訊。
*/
_this.consume = function () { return __awaiter(_this, void 0, void 0, function () {
var SSOCookie, ssoProvider, accessToken, tokenType;
return __generator(this, function (_a) {
SSOCookie = _utils_sso__WEBPACK_IMPORTED_MODULE_5__["default"].getSSOCookie();
ssoProvider = _utils_urld__WEBPACK_IMPORTED_MODULE_4__["default"].get('provider') || Object(_utils_getty__WEBPACK_IMPORTED_MODULE_1__["default"])(SSOCookie, ['provider']);
console.log('fb => %s', ssoProvider);
if (ssoProvider === this.getName()) {
accessToken = _utils_urld__WEBPACK_IMPORTED_MODULE_4__["default"].get('access_token');
tokenType = _utils_urld__WEBPACK_IMPORTED_MODULE_4__["default"].get('token_type');
this.mContext = { accessToken: accessToken, tokenType: tokenType };
}
return [2 /*return*/];
});
}); };
_this.getSSOCacheData = function () {
return {
expires: _this.mExpires
};
};
_this.refresh = function () { return __awaiter(_this, void 0, void 0, function () {
var accessToken, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.mRpc) {
this.mRpc = this.initializeRpc();
}
accessToken = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_1__["default"])(this.mContext, ['accessToken']);
if (!!accessToken) return [3 /*break*/, 2];
return [4 /*yield*/, this.mRpc.rpcCall('fbauth', encodeURIComponent(JSON.stringify(this.getRequestConfig())))];
case 1:
response = _a.sent();
accessToken = response.accessToken;
console.log('[FacebookOAuth2Provider] rcp result %o', response);
_a.label = 2;
case 2:
if (accessToken) {
this.mContext = { accessToken: accessToken, tokenType: 'Bearer' };
this.mExpires = response ? response.expires : 1;
console.log('%c[FacebookOAuth2Provider] refreshed token from rpc %o', 'background-color: blue; font-weight: bolder; color: white', this.mContext);
}
else {
throw {
message: 'FacebookOAuth2Provider provider failed to refresh tokens',
detail: this.mContext
};
}
this.emitStateChange();
return [2 /*return*/, this.mContext];
}
});
}); };
_this.initializeRpc = function () {
var rpcUri = _this.mClientConfig.rpcUri;
if (!rpcUri) {
throw {
message: 'FacebookOAuth2Provider cannot create rpc proxy without specifying `rpcUri` in the constructor'
};
}
console.log('[FacebookOAuth2Provider] starting dpi on %s', rpcUri);
return new _utils_rpc__WEBPACK_IMPORTED_MODULE_3__["default"]('fbauth', rpcUri);
};
_this.getRequestConfig = function () {
var configs = {
client_id: _this.mClientConfig.appId,
redirect_uri: _this.mClientConfig.rpcUri + '?dpi=fbauth',
response_type: 'token',
scope: (_this.mClientConfig.scopes || ['email']).join(' ')
};
return configs;
};
_this.initImpl = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (this.mIsInitialized) {
return [2 /*return*/, this];
}
this.mIsInitialized = true;
// consume tokens in url and `authuser` in storage
return [4 /*yield*/, this.consume()];
case 1:
// consume tokens in url and `authuser` in storage
_a.sent();
if (!this.mClientConfig.rpcUri) return [3 /*break*/, 3];
this.mRpc = this.initializeRpc();
return [4 /*yield*/, this.refresh()];
case 2:
_a.sent();
_a.label = 3;
case 3:
this.emitStateChange();
return [2 /*return*/, this];
}
});
}); };
_this.logoutImpl = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
this.mContext = null;
this.mIsInitialized = false;
return [2 /*return*/, true];
});
}); };
_this.loginImpl = function (args) { return __awaiter(_this, void 0, void 0, function () {
var url, isExternal, win;
return __generator(this, function (_a) {
url = 'https://www.facebook.com/v3.2/dialog/oauth' +
("?client_id=" + this.mClientConfig.appId) +
("&redirect_uri=" + this.mClientConfig.redirectUri) +
'&response_type=token' +
'&scope=email';
if (args && args.state) {
url += "&state=" + args.state;
}
isExternal = String(args.state).indexOf('external') > -1;
if (isExternal) {
win = window.open(url);
if (!win) {
location.href = String(url).replace('external', '');
}
}
else {
location.href = url;
}
return [2 /*return*/, null];
});
}); };
if (!config.appId) {
throw {
message: 'Failed to initialize FacebookOAuth2Provider without config.appId'
};
}
_this.mClientConfig = config;
return _this;
}
FacebookOAuth2Provider.transform = function (obj) {
var result = {};
for (var prop in obj) {
var match = prop.match(/[A-Z]?[a-z]+/g);
if (match) {
var key = match.join('_').toLowerCase();
result[key] = obj[prop];
}
}
return result;
};
return FacebookOAuth2Provider;
}(_packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (FacebookOAuth2Provider);
/***/ })
},[["./src/packages/Provider/FacebookOAuth2Provider.ts","runtime","common"]]]);
});
//# sourceMappingURL=FacebookOAuth2Provider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/FacebookOAuth2Provider.ts"],"names":[],"mappings":"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","file":"FacebookOAuth2Provider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import AbstractProvider from '@packages/Provider/AbstractProvider.abstract';\nimport getty from '@utils/getty';\nimport Keys from '@constants/Keys';\nimport Rpc from '@utils/rpc';\nimport urld from '@utils/urld';\nimport SSO from '@utils/sso';\n\nexport default class FacebookOAuth2Provider extends AbstractProvider {\n private mIsInitialized = false;\n private mClientConfig: Anue.Provider.FacebookProviderConfig;\n private mRpc: Rpc | null = null;\n\n static transform = <T = any>(obj): T => {\n const result = {};\n for (const prop in obj) {\n const match = prop.match(/[A-Z]?[a-z]+/g);\n if (match) {\n const key = match.join('_').toLowerCase();\n result[key] = obj[prop];\n }\n }\n return result as T;\n };\n\n constructor(config: Anue.Provider.FacebookProviderConfig) {\n super();\n if (!config.appId) {\n throw {\n message:\n 'Failed to initialize FacebookOAuth2Provider without config.appId'\n };\n }\n this.mClientConfig = config;\n }\n\n getName = () => 'facebook';\n\n getType = () => Keys.SupportedProviderType.Social;\n\n getContext = (): Anue.Provider.Response | null => {\n return this.mContext;\n };\n\n /**\n * @doc\n * @method consume\n * @private\n * @async\n *\n * 這個方法通常會在登入導向的目標網站上進行作用,用來處理`location.hash`上帶的認證資訊,包含了`access_token`、\n * `token_type`、`authuser`等資訊。\n */\n private consume = async () => {\n const SSOCookie = SSO.getSSOCookie();\n const ssoProvider = urld.get('provider') || getty(SSOCookie, ['provider']);\n console.log('fb => %s', ssoProvider);\n\n if (ssoProvider === this.getName()) {\n const accessToken = urld.get<string>('access_token');\n const tokenType = urld.get<string>('token_type');\n\n this.mContext = { accessToken, tokenType };\n }\n };\n\n getSSOCacheData = () => {\n return {\n expires: this.mExpires\n };\n };\n\n refresh = async (): Promise<Anue.Provider.Response> => {\n if (!this.mRpc) {\n this.mRpc = this.initializeRpc();\n }\n let accessToken = getty(this.mContext, ['accessToken']);\n let response;\n\n if (!accessToken) {\n response = await this.mRpc.rpcCall(\n 'fbauth',\n encodeURIComponent(JSON.stringify(this.getRequestConfig()))\n );\n accessToken = response.accessToken;\n console.log('[FacebookOAuth2Provider] rcp result %o', response);\n }\n\n if (accessToken) {\n this.mContext = { accessToken, tokenType: 'Bearer' };\n this.mExpires = response ? response.expires : 1;\n console.log(\n '%c[FacebookOAuth2Provider] refreshed token from rpc %o',\n 'background-color: blue; font-weight: bolder; color: white',\n this.mContext\n );\n } else {\n throw {\n message: 'FacebookOAuth2Provider provider failed to refresh tokens',\n detail: this.mContext\n };\n }\n\n this.emitStateChange();\n\n return this.mContext;\n };\n\n private initializeRpc = (): Rpc => {\n const rpcUri = this.mClientConfig.rpcUri;\n\n if (!rpcUri) {\n throw {\n message:\n 'FacebookOAuth2Provider cannot create rpc proxy without specifying `rpcUri` in the constructor'\n };\n }\n console.log('[FacebookOAuth2Provider] starting dpi on %s', rpcUri);\n\n return new Rpc('fbauth', rpcUri);\n };\n\n getRequestConfig = () => {\n const configs: any = {\n client_id: this.mClientConfig.appId,\n redirect_uri: this.mClientConfig.rpcUri + '?dpi=fbauth',\n response_type: 'token',\n scope: (this.mClientConfig.scopes || ['email']).join(' ')\n };\n\n return configs;\n };\n\n initImpl = async (): Promise<AbstractProvider> => {\n if (this.mIsInitialized) {\n return this;\n }\n this.mIsInitialized = true;\n\n // consume tokens in url and `authuser` in storage\n await this.consume();\n\n if (this.mClientConfig.rpcUri) {\n this.mRpc = this.initializeRpc();\n await this.refresh();\n }\n this.emitStateChange();\n\n return this;\n };\n\n logoutImpl = async (): Promise<boolean> => {\n this.mContext = null;\n this.mIsInitialized = false;\n return true;\n };\n\n loginImpl = async (args: {\n state: string;\n }): Promise<Anue.Provider.NullableResponse> => {\n let url =\n 'https://www.facebook.com/v3.2/dialog/oauth' +\n `?client_id=${this.mClientConfig.appId}` +\n `&redirect_uri=${this.mClientConfig.redirectUri}` +\n '&response_type=token' +\n '&scope=email';\n\n if (args && args.state) {\n url += `&state=${args.state}`;\n }\n const isExternal = String(args.state).indexOf('external') > -1\n\n if (isExternal) {\n const win = window.open(url)\n if (!win) {\n location.href = String(url).replace('external', '')\n }\n }\n else {\n location.href = url\n }\n\n return null;\n };\n}\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["FacebookWebProvider"],{
/***/ "./src/packages/Provider/FacebookWebProvider.ts":
/*!******************************************************!*\
!*** ./src/packages/Provider/FacebookWebProvider.ts ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _constants_Keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @constants/Keys */ "./src/constants/Keys.ts");
/* harmony import */ var _utils_getty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @utils/getty */ "./src/utils/getty.ts");
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var FacebookWebProvider = /** @class */ (function (_super) {
__extends(FacebookWebProvider, _super);
function FacebookWebProvider(config) {
var _this = _super.call(this) || this;
_this.scriptImported = false;
_this.transform = function (data) {
var accessToken = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(data, ['authResponse', 'accessToken']);
if (accessToken) {
return { accessToken: accessToken, tokenType: '' };
}
return null;
};
_this.handleStateChange = function (response) {
console.log('[FBProvider] status changed', response);
_this.mContext = _this.transform(response);
_this.emitStateChange();
};
_this.loginImpl = function () {
return new Promise(function (resolve, reject) {
_this.mAuth.getLoginStatus(function (res) {
// do not show popup if already logged-in
if (res.status !== 'connected') {
_this.mAuth.login(function (response) {
console.log('[FB] login response %o', response);
if (response.status === 'connected') {
resolve(_this.transform(response));
}
else {
console.log(response);
reject(response);
}
}, { scope: 'email' });
}
});
});
};
_this.logoutImpl = function () {
return new Promise(function (resolve) {
// @ts-ignore
FB.logout(function (response) {
console.log('[FB] logout response %o', response);
resolve();
});
});
};
_this.getName = function () { return 'facebook'; };
_this.getType = function () { return _constants_Keys__WEBPACK_IMPORTED_MODULE_1__["default"].SupportedProviderType.Social; };
_this.initImpl = function () {
// @ts-ignore
if (typeof document === 'undefined' || _this.mAuth || _this.scriptImported) {
return Promise.resolve(_this);
}
_this.scriptImported = true;
return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
// tslint:disable
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = 'https://connect.facebook.net/en_US/sdk.js';
// @ts-ignore
fjs.parentNode.insertBefore(js, fjs);
})(document, 'script', 'facebook-jssdk');
// @ts-ignore
window.fbAsyncInit = function () {
// @ts-ignore
_this.mAuth = FB;
_this.mAuth.Event.subscribe('auth.authResponseChange', _this.handleStateChange);
// @ts-ignore
FB.init({
appId: _this.mAppId,
cookie: true,
autoLogAppEvents: true,
xfbml: true,
version: 'v3.2',
status: true
});
_this.mAuth.getLoginStatus();
resolve(_this);
// tslint:enable
};
return [2 /*return*/];
});
}); });
};
_this.mAppId = config.appId;
return _this;
}
FacebookWebProvider.prototype.refresh = function () {
throw new Error('Method not implemented.');
};
FacebookWebProvider.prototype.getContext = function () {
return this.mContext;
};
return FacebookWebProvider;
}(_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (FacebookWebProvider);
/***/ })
},[["./src/packages/Provider/FacebookWebProvider.ts","runtime","common"]]]);
});
//# sourceMappingURL=FacebookWebProvider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/FacebookWebProvider.ts"],"names":[],"mappings":"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","file":"FacebookWebProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import AbstractProvider from './AbstractProvider.abstract';\nimport Keys from '@constants/Keys';\nimport getty from '@utils/getty';\n\nexport default class FacebookWebProvider extends AbstractProvider {\n private mAuth;\n private scriptImported = false;\n private mAppId;\n\n constructor(config: { appId: string }) {\n super();\n this.mAppId = config.appId;\n }\n\n private transform = (data): Anue.Provider.NullableResponse => {\n const accessToken = getty(data, ['authResponse', 'accessToken']);\n if (accessToken) {\n return { accessToken, tokenType: '' };\n }\n return null;\n };\n\n private handleStateChange = response => {\n console.log('[FBProvider] status changed', response);\n this.mContext = this.transform(response);\n this.emitStateChange();\n };\n\n loginImpl = (): Promise<Anue.Provider.NullableResponse> =>\n new Promise((resolve, reject) => {\n this.mAuth.getLoginStatus(res => {\n // do not show popup if already logged-in\n if (res.status !== 'connected') {\n this.mAuth.login(\n response => {\n console.log('[FB] login response %o', response);\n if (response.status === 'connected') {\n resolve(this.transform(response));\n } else {\n console.log(response)\n reject(response);\n }\n },\n { scope: 'email' }\n );\n }\n });\n });\n\n logoutImpl = (): Promise<boolean> =>\n new Promise(resolve => {\n // @ts-ignore\n FB.logout(response => {\n console.log('[FB] logout response %o', response);\n resolve();\n });\n });\n\n getName = () => 'facebook';\n\n getType = () => Keys.SupportedProviderType.Social;\n\n refresh(): Promise<Anue.Provider.NullableResponse> {\n throw new Error('Method not implemented.');\n }\n\n initImpl = (): Promise<AbstractProvider> => {\n // @ts-ignore\n if (typeof document === 'undefined' || this.mAuth || this.scriptImported) {\n return Promise.resolve(this);\n }\n this.scriptImported = true;\n\n return new Promise(async resolve => {\n // tslint:disable\n (function(d, s, id) {\n var js,\n fjs = d.getElementsByTagName(s)[0];\n if (d.getElementById(id)) {\n return;\n }\n js = d.createElement(s);\n js.id = id;\n js.src = 'https://connect.facebook.net/en_US/sdk.js';\n // @ts-ignore\n fjs.parentNode.insertBefore(js, fjs);\n })(document, 'script', 'facebook-jssdk');\n // @ts-ignore\n window.fbAsyncInit = () => {\n // @ts-ignore\n this.mAuth = FB;\n this.mAuth.Event.subscribe(\n 'auth.authResponseChange',\n this.handleStateChange\n );\n // @ts-ignore\n FB.init({\n appId: this.mAppId,\n cookie: true,\n autoLogAppEvents: true,\n xfbml: true,\n version: 'v3.2',\n status: true\n });\n this.mAuth.getLoginStatus();\n resolve(this);\n // tslint:enable\n };\n });\n };\n\n getContext(): Anue.Provider.NullableResponse {\n return this.mContext;\n }\n}\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["GoogleOAuth2Provider"],{
/***/ "./src/packages/Provider/GoogleOAuth2Provider.ts":
/*!*******************************************************!*\
!*** ./src/packages/Provider/GoogleOAuth2Provider.ts ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @packages/Provider/AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _libraries_Network__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @libraries/Network */ "./src/libraries/Network/index.ts");
/* harmony import */ var _utils_getty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @utils/getty */ "./src/utils/getty.ts");
/* harmony import */ var _constants_Keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @constants/Keys */ "./src/constants/Keys.ts");
/* harmony import */ var _utils_rpc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @utils/rpc */ "./src/utils/rpc.ts");
/* harmony import */ var _utils_urld__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @utils/urld */ "./src/utils/urld.ts");
/* harmony import */ var _libraries_Storage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @libraries/Storage */ "./src/libraries/Storage/index.ts");
/* harmony import */ var _utils_sso__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @utils/sso */ "./src/utils/sso.ts");
/**
* @doc
* @anue-provider anue.Providers.GoogleOAuth2Provider
*
* 有別於[GoogleWebProvider](anue.Providers.GoogleWebProvider),這個類別是一個不使用Google JS SDK的實作
* 驗證過程透過dpi frame和Google OAuth 2.0 REST API的流程將使用者導向不同的頁面進行使用者登入。
*
* > 使用GoogleOAuth2Provider必須注意的是,你必須在一個與當前應用網站相同的Origin嵌入fe-portal中的dpi.js以確保這個機制能正常運作
*/
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var GoogleOAuth2Provider = /** @class */ (function (_super) {
__extends(GoogleOAuth2Provider, _super);
function GoogleOAuth2Provider(config) {
var _this = _super.call(this) || this;
_this.mIsInitialized = false;
_this.mRpc = null;
/**
* @doc
* @property mAuthUser
* 這是一個相當重要的屬性,在Google Auth進行使用者登入時,需要知道要當入目前app的使用者是瀏覽器中的第幾號使用者
* 如果這個欄位的資訊錯誤將會導致dpi frame在背景刷新時遭遇 `interaction_required` 的錯誤
*/
_this.mAuthUser = '';
_this.getName = function () { return 'google'; };
_this.getType = function () { return _constants_Keys__WEBPACK_IMPORTED_MODULE_3__["default"].SupportedProviderType.Social; };
_this.getContext = function () {
return _this.mContext;
};
/**
* @doc
* @method consume
* @private
* @async
*
* 這個方法通常會在登入導向的目標網站上進行作用,用來處理`location.hash`上帶的認證資訊,包含了`access_token`、
* `token_type`、`authuser`等資訊。
*/
_this.consume = function () { return __awaiter(_this, void 0, void 0, function () {
var sso, ssoProvider, accessToken, tokenType, authUser, storage;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
sso = _utils_sso__WEBPACK_IMPORTED_MODULE_7__["default"].getSSOCookie();
ssoProvider = _utils_urld__WEBPACK_IMPORTED_MODULE_5__["default"].get('provider') || Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(sso, ['provider']);
if (!(ssoProvider === this.getName())) return [3 /*break*/, 2];
accessToken = _utils_urld__WEBPACK_IMPORTED_MODULE_5__["default"].get('access_token');
tokenType = _utils_urld__WEBPACK_IMPORTED_MODULE_5__["default"].get('token_type');
authUser = _utils_urld__WEBPACK_IMPORTED_MODULE_5__["default"].get('authuser') || Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(sso, ['authuser']) || '0';
storage = _libraries_Storage__WEBPACK_IMPORTED_MODULE_6__["getDriver"]();
this.mContext = { accessToken: accessToken, tokenType: tokenType };
return [4 /*yield*/, storage.setItem('anue:google-user', authUser)];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/];
}
});
}); };
_this.recovery = function () { return __awaiter(_this, void 0, void 0, function () {
var storage, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
storage = _libraries_Storage__WEBPACK_IMPORTED_MODULE_6__["getDriver"]();
_a = this;
return [4 /*yield*/, storage.getItem('anue:google-user')];
case 1:
_a.mAuthUser = (_b.sent()) || '0';
return [2 /*return*/];
}
});
}); };
_this.getSSOCacheData = function () {
return {
authuser: _this.mAuthUser,
expires: _this.mExpires
};
};
_this.refresh = function () { return __awaiter(_this, void 0, void 0, function () {
var accessToken, idToken, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.mRpc) {
this.mRpc = this.initializeRpc();
}
accessToken = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(this.mContext, ['accessToken']);
idToken = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(this.mContext, ['idToken']);
if (!!accessToken) return [3 /*break*/, 2];
return [4 /*yield*/, this.mRpc.rpcCall('gauth', encodeURIComponent(JSON.stringify(this.getRequestConfig())))];
case 1:
response = _a.sent();
accessToken = response.accessToken;
// only access token request returns 'expires_in' param
this.mExpires = response.expires;
_a.label = 2;
case 2:
if (!!idToken) return [3 /*break*/, 4];
return [4 /*yield*/, this.mRpc.rpcCall('gauth', encodeURIComponent(JSON.stringify(this.getRequestConfig(true))))];
case 3:
response = _a.sent();
idToken = response.idToken;
_a.label = 4;
case 4:
if (idToken && accessToken) {
this.mContext = { accessToken: accessToken, idToken: idToken, tokenType: 'Bearer' };
console.log('%c[GoogleProvider] refreshed token from rpc %o', 'background-color: blue; font-weight: bolder; color: white', this.mContext);
}
else {
throw {
message: 'google provider failed to refresh tokens',
detail: this.mContext
};
}
this.emitStateChange();
return [2 /*return*/, this.mContext];
}
});
}); };
_this.initializeRpc = function () {
var rpcUri = _this.mClientConfig.rpcUri;
if (!rpcUri) {
throw {
message: 'GoogleOAuth2Provider cannot create rpc proxy without specifying `rpcUri` in the constructor'
};
}
console.log('[GoogleProvider] starting dpi on %s', rpcUri);
return new _utils_rpc__WEBPACK_IMPORTED_MODULE_4__["default"]('gauth', rpcUri);
};
_this.getRequestConfig = function (isIdToken) {
var configs = {
client_id: _this.mClientConfig.clientId,
api_key: _this.mClientConfig.apiKey,
response_type: isIdToken ? 'id_token' : 'token',
redirect_uri: _this.mClientConfig.rpcUri + '?dpi=gauth',
scope: [
'openid',
'email',
'profile',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/plus.me'
].join(' ')
};
if (isIdToken) {
configs.nonce = Date.now();
configs.prompt = 'none';
}
configs.authuser = _this.mAuthUser;
return configs;
};
_this.initImpl = function () { return __awaiter(_this, void 0, void 0, function () {
var err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (this.mIsInitialized) {
return [2 /*return*/, this];
}
this.mIsInitialized = true;
// consume tokens in url and `authuser` in storage
return [4 /*yield*/, this.consume()];
case 1:
// consume tokens in url and `authuser` in storage
_a.sent();
return [4 /*yield*/, this.recovery()];
case 2:
_a.sent();
_a.label = 3;
case 3:
_a.trys.push([3, 6, , 7]);
if (!this.mClientConfig.rpcUri) return [3 /*break*/, 5];
this.mRpc = this.initializeRpc();
return [4 /*yield*/, this.refresh()];
case 4:
_a.sent();
_a.label = 5;
case 5: return [3 /*break*/, 7];
case 6:
err_1 = _a.sent();
console.warn('[GoogleProvider] failed to grant credentials', err_1);
this.mContext = null;
return [3 /*break*/, 7];
case 7:
this.emitStateChange();
return [2 /*return*/, this];
}
});
}); };
_this.logoutImpl = function () { return __awaiter(_this, void 0, void 0, function () {
var accessToken;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
accessToken = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_2__["default"])(this.mContext, ['accessToken']);
this.mIsInitialized = false;
if (!accessToken) return [3 /*break*/, 2];
return [4 /*yield*/, _libraries_Network__WEBPACK_IMPORTED_MODULE_1__["getDriver"]().send({
url: "https://accounts.google.com/o/oauth2/revoke?token=" + accessToken
})];
case 1:
_a.sent();
console.log('[GoogleProvider] revoked access token');
this.mContext = null;
_a.label = 2;
case 2: return [2 /*return*/, true];
}
});
}); };
_this.loginImpl = function (args) { return __awaiter(_this, void 0, void 0, function () {
var params, configs, isExternal, c, url, win;
return __generator(this, function (_a) {
params = [];
configs = this.getRequestConfig();
isExternal = String(args.state).indexOf('external') > -1;
configs.prompt = 'select_account';
configs.response_type = 'token';
configs.redirect_uri = this.mClientConfig.redirectUri;
configs.state = args.state;
delete configs.authuser;
for (c in configs) {
params.push(c + "=" + decodeURIComponent(configs[c]));
}
url = "https://accounts.google.com/o/oauth2/v2/auth?" + params.join('&');
if (isExternal) {
win = window.open(url);
if (!win) {
location.href = String(url).replace('external', '');
}
}
else {
location.href = url;
}
return [2 /*return*/, null];
});
}); };
if (!config.clientId || !config.apiKey) {
throw {
message: 'Failed to initialize GoogleProvider without config.appId and config.apiKey'
};
}
_this.mClientConfig = config;
return _this;
}
GoogleOAuth2Provider.transform = function (obj) {
var result = {};
for (var prop in obj) {
var match = prop.match(/[A-Z]?[a-z]+/g);
if (match) {
var key = match.join('_').toLowerCase();
result[key] = obj[prop];
}
}
return result;
};
return GoogleOAuth2Provider;
}(_packages_Provider_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (GoogleOAuth2Provider);
/***/ })
},[["./src/packages/Provider/GoogleOAuth2Provider.ts","runtime","common"]]]);
});
//# sourceMappingURL=GoogleOAuth2Provider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/GoogleOAuth2Provider.ts"],"names":[],"mappings":"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","file":"GoogleOAuth2Provider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","/**\n * @doc\n * @anue-provider anue.Providers.GoogleOAuth2Provider\n *\n * 有別於[GoogleWebProvider](anue.Providers.GoogleWebProvider),這個類別是一個不使用Google JS SDK的實作\n * 驗證過程透過dpi frame和Google OAuth 2.0 REST API的流程將使用者導向不同的頁面進行使用者登入。\n *\n * > 使用GoogleOAuth2Provider必須注意的是,你必須在一個與當前應用網站相同的Origin嵌入fe-portal中的dpi.js以確保這個機制能正常運作\n */\n\nimport AbstractProvider from '@packages/Provider/AbstractProvider.abstract';\nimport * as Network from '@libraries/Network';\nimport getty from '@utils/getty';\nimport Keys from '@constants/Keys';\nimport Rpc from '@utils/rpc';\nimport urld from '@utils/urld';\nimport * as Storage from '@libraries/Storage';\nimport SSO from '@utils/sso';\n\nexport default class GoogleOAuth2Provider extends AbstractProvider {\n private mIsInitialized = false;\n private mClientConfig: Anue.Provider.GoogleProviderConfig;\n private mRpc: Rpc | null = null;\n\n /**\n * @doc\n * @property mAuthUser\n * 這是一個相當重要的屬性,在Google Auth進行使用者登入時,需要知道要當入目前app的使用者是瀏覽器中的第幾號使用者\n * 如果這個欄位的資訊錯誤將會導致dpi frame在背景刷新時遭遇 `interaction_required` 的錯誤\n */\n private mAuthUser: string = '';\n\n static transform = <T = any>(obj): T => {\n const result = {};\n for (const prop in obj) {\n const match = prop.match(/[A-Z]?[a-z]+/g);\n if (match) {\n const key = match.join('_').toLowerCase();\n result[key] = obj[prop];\n }\n }\n return result as T;\n };\n\n constructor(config: Anue.Provider.GoogleProviderConfig) {\n super();\n if (!config.clientId || !config.apiKey) {\n throw {\n message:\n 'Failed to initialize GoogleProvider without config.appId and config.apiKey'\n };\n }\n this.mClientConfig = config;\n }\n\n getName = () => 'google';\n\n getType = () => Keys.SupportedProviderType.Social;\n\n getContext = (): Anue.Provider.Response | null => {\n return this.mContext;\n };\n\n /**\n * @doc\n * @method consume\n * @private\n * @async\n *\n * 這個方法通常會在登入導向的目標網站上進行作用,用來處理`location.hash`上帶的認證資訊,包含了`access_token`、\n * `token_type`、`authuser`等資訊。\n */\n private consume = async () => {\n const sso = SSO.getSSOCookie();\n const ssoProvider = urld.get('provider') || getty(sso, ['provider']);\n\n if (ssoProvider === this.getName()) {\n const accessToken = urld.get<string>('access_token');\n const tokenType = urld.get<string>('token_type');\n const authUser =\n urld.get<string>('authuser') || getty(sso, ['authuser']) || '0';\n const storage = Storage.getDriver();\n\n this.mContext = { accessToken, tokenType };\n\n await storage.setItem('anue:google-user', authUser);\n }\n };\n\n private recovery = async () => {\n const storage = Storage.getDriver();\n this.mAuthUser = (await storage.getItem('anue:google-user')) || '0';\n };\n\n getSSOCacheData = () => {\n return {\n authuser: this.mAuthUser,\n expires: this.mExpires\n };\n };\n\n refresh = async (): Promise<Anue.Provider.Response> => {\n if (!this.mRpc) {\n this.mRpc = this.initializeRpc();\n }\n\n let accessToken = getty(this.mContext, ['accessToken']);\n let idToken = getty(this.mContext, ['idToken']);\n let response;\n\n if (!accessToken) {\n response = await this.mRpc.rpcCall(\n 'gauth',\n encodeURIComponent(JSON.stringify(this.getRequestConfig()))\n );\n accessToken = response.accessToken;\n // only access token request returns 'expires_in' param\n this.mExpires = response.expires;\n }\n if (!idToken) {\n response = await this.mRpc.rpcCall(\n 'gauth',\n encodeURIComponent(JSON.stringify(this.getRequestConfig(true)))\n );\n idToken = response.idToken;\n }\n\n if (idToken && accessToken) {\n this.mContext = { accessToken, idToken, tokenType: 'Bearer' };\n console.log(\n '%c[GoogleProvider] refreshed token from rpc %o',\n 'background-color: blue; font-weight: bolder; color: white',\n this.mContext\n );\n } else {\n throw {\n message: 'google provider failed to refresh tokens',\n detail: this.mContext\n };\n }\n\n this.emitStateChange();\n\n return this.mContext;\n };\n\n private initializeRpc = (): Rpc => {\n const rpcUri = this.mClientConfig.rpcUri;\n\n if (!rpcUri) {\n throw {\n message:\n 'GoogleOAuth2Provider cannot create rpc proxy without specifying `rpcUri` in the constructor'\n };\n }\n console.log('[GoogleProvider] starting dpi on %s', rpcUri);\n\n return new Rpc('gauth', rpcUri);\n };\n\n getRequestConfig = (isIdToken?: boolean) => {\n const configs: any = {\n client_id: this.mClientConfig.clientId,\n api_key: this.mClientConfig.apiKey,\n response_type: isIdToken ? 'id_token' : 'token',\n redirect_uri: this.mClientConfig.rpcUri + '?dpi=gauth',\n scope: [\n 'openid',\n 'email',\n 'profile',\n 'https://www.googleapis.com/auth/userinfo.profile',\n 'https://www.googleapis.com/auth/userinfo.email',\n 'https://www.googleapis.com/auth/plus.me'\n ].join(' ')\n };\n if (isIdToken) {\n configs.nonce = Date.now();\n configs.prompt = 'none';\n }\n configs.authuser = this.mAuthUser;\n\n return configs;\n };\n\n initImpl = async (): Promise<AbstractProvider> => {\n if (this.mIsInitialized) {\n return this;\n }\n this.mIsInitialized = true;\n\n // consume tokens in url and `authuser` in storage\n await this.consume();\n await this.recovery();\n\n try {\n if (this.mClientConfig.rpcUri) {\n this.mRpc = this.initializeRpc();\n await this.refresh();\n }\n } catch (err) {\n console.warn('[GoogleProvider] failed to grant credentials', err);\n this.mContext = null;\n }\n this.emitStateChange();\n\n return this;\n };\n\n logoutImpl = async (): Promise<boolean> => {\n const accessToken = getty<string>(this.mContext, ['accessToken']);\n this.mIsInitialized = false;\n if (accessToken) {\n await Network.getDriver().send({\n url: `https://accounts.google.com/o/oauth2/revoke?token=${accessToken}`\n });\n console.log('[GoogleProvider] revoked access token');\n this.mContext = null;\n }\n\n return true;\n };\n\n loginImpl = async (args: {\n state: string;\n }): Promise<Anue.Provider.NullableResponse> => {\n const params: string[] = [];\n const configs = this.getRequestConfig();\n const isExternal = String(args.state).indexOf('external') > -1\n\n configs.prompt = 'select_account';\n configs.response_type = 'token';\n configs.redirect_uri = this.mClientConfig.redirectUri;\n configs.state = args.state;\n delete configs.authuser;\n\n for (const c in configs) {\n params.push(`${c}=${decodeURIComponent(configs[c])}`);\n }\n\n const url = `https://accounts.google.com/o/oauth2/v2/auth?${params.join(\n '&'\n )}`\n\n if (isExternal) {\n const win = window.open(url)\n if (!win) {\n location.href = String(url).replace('external', '')\n }\n }\n else {\n location.href = url\n }\n\n return null;\n };\n}\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["GoogleWebProvider"],{
/***/ "./src/packages/Provider/GoogleWebProvider.ts":
/*!****************************************************!*\
!*** ./src/packages/Provider/GoogleWebProvider.ts ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AbstractProvider.abstract */ "./src/packages/Provider/AbstractProvider.abstract.ts");
/* harmony import */ var _utils_getty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @utils/getty */ "./src/utils/getty.ts");
/* harmony import */ var _constants_Keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @constants/Keys */ "./src/constants/Keys.ts");
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var GoogleProvider = /** @class */ (function (_super) {
__extends(GoogleProvider, _super);
function GoogleProvider(config) {
var _this = _super.call(this) || this;
_this.mIsScriptLoaded = false;
_this.loginPromises = [];
_this.logoutPromises = [];
_this.redirectUrl = null;
_this.getCurrentUser = function () {
var user = Object(_utils_getty__WEBPACK_IMPORTED_MODULE_1__["default"])(_this, ['mAuth', 'currentUser']);
if (user) {
return user.get();
}
return null;
};
_this.getName = function () { return 'google'; };
_this.getType = function () { return _constants_Keys__WEBPACK_IMPORTED_MODULE_2__["default"].SupportedProviderType.Social; };
_this.getContext = function () {
var currentUser = _this.getCurrentUser();
if (currentUser.isSignedIn()) {
var ctx = currentUser.getAuthResponse(true);
return {
idToken: ctx.id_token,
tokenType: ctx.token_type,
accessToken: ctx.access_token
};
}
return null;
};
_this.refresh = function () { return __awaiter(_this, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.getCurrentUser()) {
throw "cannot refresh Google tokens because the account is not logged in";
}
return [4 /*yield*/, this.mAuth.currentUser.get().reloadAuthResponse()];
case 1:
result = _a.sent();
console.log('GoogleWebProvider refreshed', result);
return [2 /*return*/, {
idToken: result.id_token,
accessToken: result.access_token,
tokenType: result.token_type
}];
}
});
}); };
_this.populatePromises = function (queue, ctx) {
while (queue.length > 0) {
var f = queue.pop();
if (f) {
f(ctx);
}
}
};
_this.handleLoginState = function (loggedIn) {
_this.mContext = _this.getContext();
var queue;
console.log('GoogleProvider sign state in event =>', loggedIn);
if (loggedIn) {
queue = _this.loginPromises;
}
else {
queue = _this.logoutPromises;
}
_this.emitStateChange();
_this.populatePromises(queue, _this.mContext);
};
_this.initImpl = function () {
if (_this.mIsScriptLoaded) {
return Promise.resolve(_this);
}
return new Promise(function (resolve, reject) {
_this.mIsScriptLoaded = true;
var script = document.createElement('script');
script.src = 'https://apis.google.com/js/api:client.js';
script.onload = function () {
// @ts-ignore
var gapi = window.gapi;
gapi.load('auth2', function () {
var config = GoogleProvider.transform(_this.mClientConfig);
console.log('[GoogleWebProvider] initialize with config %o', config);
if (_this.redirectUrl) {
config.ux_mode = 'redirect';
config.redirect_uri = encodeURI(_this.redirectUrl);
}
_this.mAuth = gapi.auth2.init(config);
// @ts-ignore
console.log('gauth', window.gauth);
_this.mAuth.currentUser.listen(_this.handleLoginState);
if (_this.mAuth.isSignedIn.get()) {
_this.mContext = _this.mAuth.currentUser.get().getAuthResponse();
_this.handleLoginState(true);
}
resolve(_this);
});
};
script.onerror = reject;
document.head.appendChild(script);
});
};
_this.logoutImpl = function () { return __awaiter(_this, void 0, void 0, function () {
var dpi_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
// await this.mAuth.signOut();
return [4 /*yield*/, this.mAuth.disconnect()];
case 1:
// await this.mAuth.signOut();
_a.sent();
if (!window.opener) {
dpi_1 = document.querySelector('#anue-dpi');
if (!dpi_1) {
dpi_1 = document.createElement('iframe');
dpi_1.setAttribute('id', 'anue-dpi');
dpi_1.style.border = 'none';
dpi_1.style.position = 'fixed';
dpi_1.style.left = '-9999px';
dpi_1.style.top = '-9999px';
dpi_1.height = '1px';
dpi_1.width = '1px';
document.body.appendChild(dpi_1);
}
dpi_1.addEventListener('load', function () {
if (dpi_1 && dpi_1.contentWindow) {
console.log('post logout event to dpi');
dpi_1.contentWindow.postMessage('handshake', '*');
}
});
dpi_1.src = 'https://www.google.com/accounts/Logout';
}
return [2 /*return*/, true];
}
});
}); };
_this.loginImpl = function (config) {
return _this.mAuth.signIn(config);
};
if (!config.clientId || !config.apiKey) {
throw {
message: 'Failed to initialize GoogleProvider without config.appId and config.apiKey'
};
}
_this.mClientConfig = config;
return _this;
}
GoogleProvider.transform = function (obj) {
var result = {};
for (var prop in obj) {
var match = prop.match(/[A-Z]?[a-z]+/g);
if (match) {
var key = match.join('_').toLowerCase();
result[key] = obj[prop];
}
}
return result;
};
return GoogleProvider;
}(_AbstractProvider_abstract__WEBPACK_IMPORTED_MODULE_0__["default"]));
/* harmony default export */ __webpack_exports__["default"] = (GoogleProvider);
/***/ })
},[["./src/packages/Provider/GoogleWebProvider.ts","runtime","common"]]]);
});
//# sourceMappingURL=GoogleWebProvider.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/packages/Provider/GoogleWebProvider.ts"],"names":[],"mappings":"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","file":"GoogleWebProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn ","import AbstractProvider from './AbstractProvider.abstract';\nimport getty from '@utils/getty';\nimport Keys from '@constants/Keys';\n\ninterface GAuthConfig {\n redirect_uri?: string;\n ux_mode?: 'popup' | 'redirect';\n client_id: string;\n hosted_domain?: string;\n api_key?: string;\n cookie_policy?: string;\n prompt?: string;\n}\n\nexport default class GoogleProvider extends AbstractProvider {\n private mIsScriptLoaded = false;\n private loginPromises: Array<() => void> = [];\n private logoutPromises: Array<() => void> = [];\n private mAuth;\n private redirectUrl: string | null = null;\n private mClientConfig;\n\n static transform = <T = any>(obj): T => {\n const result = {};\n for (const prop in obj) {\n const match = prop.match(/[A-Z]?[a-z]+/g);\n if (match) {\n const key = match.join('_').toLowerCase();\n result[key] = obj[prop];\n }\n }\n return result as T;\n };\n\n constructor(config: Anue.Provider.GoogleProviderConfig) {\n super();\n if (!config.clientId || !config.apiKey) {\n throw {\n message:\n 'Failed to initialize GoogleProvider without config.appId and config.apiKey'\n };\n }\n this.mClientConfig = config;\n }\n\n private getCurrentUser = () => {\n const user = getty(this, ['mAuth', 'currentUser']);\n if (user) {\n return user.get();\n }\n return null;\n };\n\n getName = () => 'google';\n\n getType = () => Keys.SupportedProviderType.Social;\n\n getContext = (): Anue.Provider.Response | null => {\n const currentUser = this.getCurrentUser();\n if (currentUser.isSignedIn()) {\n const ctx = currentUser.getAuthResponse(true);\n return {\n idToken: ctx.id_token,\n tokenType: ctx.token_type,\n accessToken: ctx.access_token\n };\n }\n return null;\n };\n\n refresh = async (): Promise<Anue.Provider.Response> => {\n if (!this.getCurrentUser()) {\n throw `cannot refresh Google tokens because the account is not logged in`;\n }\n const result = await this.mAuth.currentUser.get().reloadAuthResponse();\n console.log('GoogleWebProvider refreshed', result);\n return {\n idToken: result.id_token,\n accessToken: result.access_token,\n tokenType: result.token_type\n };\n };\n\n private populatePromises = (queue, ctx) => {\n while (queue.length > 0) {\n const f = queue.pop();\n if (f) {\n f(ctx);\n }\n }\n };\n\n handleLoginState = (loggedIn: boolean) => {\n this.mContext = this.getContext();\n let queue;\n console.log('GoogleProvider sign state in event =>', loggedIn);\n if (loggedIn) {\n queue = this.loginPromises;\n } else {\n queue = this.logoutPromises;\n }\n this.emitStateChange();\n this.populatePromises(queue, this.mContext);\n };\n\n initImpl = (): Promise<AbstractProvider> => {\n if (this.mIsScriptLoaded) {\n return Promise.resolve(this);\n }\n return new Promise((resolve, reject) => {\n this.mIsScriptLoaded = true;\n const script: HTMLScriptElement = document.createElement('script');\n script.src = 'https://apis.google.com/js/api:client.js';\n script.onload = () => {\n // @ts-ignore\n const gapi = window.gapi;\n gapi.load('auth2', () => {\n const config: GAuthConfig = GoogleProvider.transform<GAuthConfig>(\n this.mClientConfig\n );\n console.log('[GoogleWebProvider] initialize with config %o', config);\n if (this.redirectUrl) {\n config.ux_mode = 'redirect';\n config.redirect_uri = encodeURI(this.redirectUrl);\n }\n this.mAuth = gapi.auth2.init(config);\n // @ts-ignore\n console.log('gauth', window.gauth);\n this.mAuth.currentUser.listen(this.handleLoginState);\n if (this.mAuth.isSignedIn.get()) {\n this.mContext = this.mAuth.currentUser.get().getAuthResponse();\n this.handleLoginState(true);\n }\n\n resolve(this);\n });\n };\n script.onerror = reject;\n document.head.appendChild(script);\n });\n };\n\n logoutImpl = async (): Promise<boolean> => {\n // await this.mAuth.signOut();\n await this.mAuth.disconnect();\n if (!window.opener) {\n let dpi: HTMLIFrameElement | null = document.querySelector('#anue-dpi');\n if (!dpi) {\n dpi = document.createElement('iframe');\n dpi.setAttribute('id', 'anue-dpi');\n dpi.style.border = 'none';\n dpi.style.position = 'fixed';\n dpi.style.left = '-9999px';\n dpi.style.top = '-9999px';\n dpi.height = '1px';\n dpi.width = '1px';\n document.body.appendChild(dpi);\n }\n\n dpi.addEventListener('load', () => {\n if (dpi && dpi.contentWindow) {\n console.log('post logout event to dpi');\n dpi.contentWindow.postMessage('handshake', '*');\n }\n });\n dpi.src = 'https://www.google.com/accounts/Logout';\n }\n\n return true;\n };\n\n loginImpl = (config: GAuthConfig): Promise<Anue.Provider.Response | null> => {\n return this.mAuth.signIn(config);\n };\n}\n"],"sourceRoot":""}
\ No newline at end of file
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof window === 'undefined' ? global : window), function() {
return ((typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] = (typeof window === 'undefined' ? global : window)["anue_sdk_jsonp_1559284845635"] || []).push([["IMC"],[],[["./src/packages/IMC/index.ts","runtime","common"]]]);
});
//# sourceMappingURL=IMC.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O","file":"IMC.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof window === 'undefined' ? global : window), function() {\nreturn "],"sourceRoot":""}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment