@plasmicapp/auth-react 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth-react.cjs.development.js +9 -6
- package/dist/auth-react.cjs.development.js.map +1 -1
- package/dist/auth-react.cjs.production.min.js +1 -1
- package/dist/auth-react.cjs.production.min.js.map +1 -1
- package/dist/auth-react.esm.js +9 -6
- package/dist/auth-react.esm.js.map +1 -1
- package/dist/hooks.d.ts +2 -1
- package/package.json +2 -2
|
@@ -337,7 +337,9 @@ function _asyncToGenerator(fn) {
|
|
|
337
337
|
};
|
|
338
338
|
}
|
|
339
339
|
|
|
340
|
-
var
|
|
340
|
+
var storageUserKey = function storageUserKey(appId) {
|
|
341
|
+
return "$user." + appId;
|
|
342
|
+
};
|
|
341
343
|
var isBrowser = typeof window !== 'undefined';
|
|
342
344
|
function getCallbackParams() {
|
|
343
345
|
var params = new URLSearchParams(window.location.search);
|
|
@@ -409,7 +411,7 @@ function _handleCallback() {
|
|
|
409
411
|
console.log("Error while performing code exchange: " + result.error);
|
|
410
412
|
return _context2.abrupt("return", undefined);
|
|
411
413
|
case 9:
|
|
412
|
-
localStorage.setItem(
|
|
414
|
+
localStorage.setItem(storageUserKey(appId), result.token);
|
|
413
415
|
if (!isContinueToSameLocation(continueTo)) {
|
|
414
416
|
window.location.assign(continueTo);
|
|
415
417
|
} else {
|
|
@@ -435,12 +437,12 @@ function checkAlreadyLoggedUser(_x2) {
|
|
|
435
437
|
*/
|
|
436
438
|
function _checkAlreadyLoggedUser() {
|
|
437
439
|
_checkAlreadyLoggedUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(opts) {
|
|
438
|
-
var host, token, _yield$getPlasmicAppU, user, error;
|
|
440
|
+
var appId, host, token, _yield$getPlasmicAppU, user, error;
|
|
439
441
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
440
442
|
while (1) switch (_context3.prev = _context3.next) {
|
|
441
443
|
case 0:
|
|
442
|
-
host = opts.host;
|
|
443
|
-
token = localStorage.getItem(
|
|
444
|
+
appId = opts.appId, host = opts.host;
|
|
445
|
+
token = localStorage.getItem(storageUserKey(appId));
|
|
444
446
|
if (token) {
|
|
445
447
|
_context3.next = 4;
|
|
446
448
|
break;
|
|
@@ -465,7 +467,7 @@ function _checkAlreadyLoggedUser() {
|
|
|
465
467
|
}
|
|
466
468
|
// If there is an error, we just remove the token
|
|
467
469
|
// But ideally we should check if the reason is token expired
|
|
468
|
-
localStorage.removeItem(
|
|
470
|
+
localStorage.removeItem(storageUserKey(appId));
|
|
469
471
|
console.log("Error while checking logged user");
|
|
470
472
|
return _context3.abrupt("return", {
|
|
471
473
|
user: null,
|
|
@@ -561,6 +563,7 @@ function usePlasmicAuth(opts) {
|
|
|
561
563
|
case 27:
|
|
562
564
|
_context.next = 29;
|
|
563
565
|
return checkAlreadyLoggedUser({
|
|
566
|
+
appId: appId,
|
|
564
567
|
host: host
|
|
565
568
|
});
|
|
566
569
|
case 29:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-react.cjs.development.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: any;\n token: string | null;\n}\n\nconst STORAGE_USER_KEY = 'plasmic_user';\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(STORAGE_USER_KEY, result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { host } = opts;\n\n const token = localStorage.getItem(STORAGE_USER_KEY);\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(STORAGE_USER_KEY);\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["STORAGE_USER_KEY","isBrowser","window","getCallbackParams","params","URLSearchParams","location","search","error","get","code","state","isCallbackError","isCodeExchange","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","pathname","console","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","appId","codeVerifier","parsedState","result","wrap","_callee2$","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_callee3$","_context3","getPlasmicAppUserFromToken","removeItem","usePlasmicAuth","authKey","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_callee$","_context","t0","userData","data","isLoading","isUserLoading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-react.cjs.development.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n PlasmicUser,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: PlasmicUser | null;\n token: string | null;\n}\n\nconst storageUserKey = (appId: string) => `$user.${appId}`;\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(storageUserKey(appId), result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n appId: string;\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { appId, host } = opts;\n\n const token = localStorage.getItem(storageUserKey(appId));\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(storageUserKey(appId));\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n appId,\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["storageUserKey","appId","isBrowser","window","getCallbackParams","params","URLSearchParams","location","search","error","get","code","state","isCallbackError","isCodeExchange","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","pathname","console","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","codeVerifier","parsedState","result","wrap","_callee2$","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_callee3$","_context3","getPlasmicAppUserFromToken","removeItem","usePlasmicAuth","authKey","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_callee$","_context","t0","userData","data","isLoading","isUserLoading"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@plasmicapp/auth-api"),r=require("@plasmicapp/query");function e(){e=function(){return r};var t,r={},n=Object.prototype,o=n.hasOwnProperty,a=Object.defineProperty||function(t,r,e){t[r]=e.value},i="function"==typeof Symbol?Symbol:{},u=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{l({},"")}catch(t){l=function(t,r,e){return t[r]=e}}function f(t,r,e,n){var o=Object.create((r&&r.prototype instanceof g?r:g).prototype),i=new I(n||[]);return a(o,"_invoke",{value:O(t,e,i)}),o}function h(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var p="suspendedStart",d="executing",v="completed",y={};function g(){}function m(){}function w(){}var b={};l(b,u,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(N([])));k&&k!==n&&o.call(k,u)&&(b=k);var E=w.prototype=g.prototype=Object.create(b);function L(t){["next","throw","return"].forEach((function(r){l(t,r,(function(t){return this._invoke(r,t)}))}))}function _(t,r){function e(n,a,i,u){var c=h(t[n],t,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&o.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,i,u)}),(function(t){e("throw",t,i,u)})):r.resolve(l).then((function(t){s.value=t,i(s)}),(function(t){return e("throw",t,i,u)}))}u(c.arg)}var n;a(this,"_invoke",{value:function(t,o){function a(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(a,a):a()}})}function O(r,e,n){var o=p;return function(a,i){if(o===d)throw new Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=j(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=h(r,e,n);if("normal"===s.type){if(o=n.done?v:"suspendedYield",s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function j(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,j(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=h(o,r.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,y;var i=a.arg;return i?i.done?(e[r.resultName]=i.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,y):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,y)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function S(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function N(r){if(r||""===r){var e=r[u];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,a=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return m.prototype=w,a(E,"constructor",{value:w,configurable:!0}),a(w,"constructor",{value:m,configurable:!0}),m.displayName=l(w,s,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===m||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,s,"GeneratorFunction")),t.prototype=Object.create(E),t},r.awrap=function(t){return{__await:t}},L(_.prototype),l(_.prototype,c,(function(){return this})),r.AsyncIterator=_,r.async=function(t,e,n,o,a){void 0===a&&(a=Promise);var i=new _(f(t,e,n,o),a);return r.isGeneratorFunction(e)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},L(E),l(E,s,"Generator"),l(E,u,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=N,I.prototype={constructor:I,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(S),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=o.call(i,"catchLoc"),s=o.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var a=n;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=r&&r<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=r,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),y},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),S(e),y}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;S(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:N(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),y}},r}function n(t,r,e,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function o(t){return function(){var r=this,e=arguments;return new Promise((function(o,a){var i=t.apply(r,e);function u(t){n(i,o,a,u,c,"next",t)}function c(t){n(i,o,a,u,c,"throw",t)}u(void 0)}))}}var a="undefined"!=typeof window;function i(){try{return localStorage.getItem("code_verifier")}catch(t){return null}}function u(){try{window.history.replaceState({},"",location.pathname)}catch(t){console.error("Error while removing callback params: "+t)}}function c(t){var r=window.location.pathname,e=window.location.origin;return t===r||t===e+r}function s(t){return l.apply(this,arguments)}function l(){return(l=o(e().mark((function r(n){var o,a,i,s,l,f,h,p;return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:o=n.host,a=n.appId,i=n.code,s=n.state,l=n.codeVerifier,f="/";try{s&&(h=JSON.parse(s),f=h.continueTo)}catch(t){console.error("Error while parsing state: "+t)}return r.next=5,t.getPlasmicAppUser({host:o,appId:a,code:i,codeVerifier:l});case 5:if(!(p=r.sent).error){r.next=9;break}return console.log("Error while performing code exchange: "+p.error),r.abrupt("return",void 0);case 9:return localStorage.setItem("plasmic_user",p.token),c(f)?u():window.location.assign(f),r.abrupt("return",{token:p.token,user:p.user});case 12:case"end":return r.stop()}}),r)})))).apply(this,arguments)}function f(t){return h.apply(this,arguments)}function h(){return(h=o(e().mark((function r(n){var o,a,i,u;return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=n.host,a=localStorage.getItem("plasmic_user")){r.next=4;break}return r.abrupt("return",{user:null,token:null});case 4:return r.next=6,t.getPlasmicAppUserFromToken({host:o,token:a});case 6:if(u=(i=r.sent).user,!i.error){r.next=13;break}return localStorage.removeItem("plasmic_user"),console.log("Error while checking logged user"),r.abrupt("return",{user:null,token:null});case 13:return r.abrupt("return",{user:u,token:a});case 14:case"end":return r.stop()}}),r)})))).apply(this,arguments)}Object.keys(t).forEach((function(r){"default"!==r&&Object.defineProperty(exports,r,{enumerable:!0,get:function(){return t[r]}})})),exports.usePlasmicAuth=function(t){var n=t.host,c=t.appId,l=r.useMutablePlasmicQueryData("$csq$plasmic-auth-"+c,o(e().mark((function t(){var r,o,l;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c&&a){t.next=2;break}return t.abrupt("return",{user:null,token:null});case 2:if(t.prev=2,e=void 0,h=(e=new URLSearchParams(window.location.search)).get("error"),p=e.get("code"),d=e.get("state"),!(r={isCallbackError:!!h,isCodeExchange:!!p&&!!d,error:h,code:p,state:d}).isCallbackError&&!r.isCodeExchange){t.next=27;break}if(!r.isCallbackError){t.next=11;break}return u(),console.error("Error: "+r.error),t.abrupt("return",{user:null,token:null});case 11:if(o=i()){t.next=18;break}return u(),console.error("No code verifier found"),t.abrupt("return",{user:null,token:null});case 18:return t.next=20,s({host:n,appId:c,code:r.code,state:r.state,codeVerifier:o});case 20:if(l=t.sent){t.next=24;break}return u(),t.abrupt("return",{user:null,token:null});case 24:return t.abrupt("return",l);case 25:t.next=30;break;case 27:return t.next=29,f({host:n});case 29:return t.abrupt("return",t.sent);case 30:t.next=35;break;case 32:t.prev=32,t.t0=t.catch(2),console.error("Error while handling auth: "+t.t0);case 35:return t.abrupt("return",{user:null,token:null});case 36:case"end":return t.stop()}var e,h,p,d}),t,null,[[2,32]])})))),h=l.data;return{user:null==h?void 0:h.user,token:null==h?void 0:h.token,isUserLoading:l.isLoading}};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@plasmicapp/auth-api"),r=require("@plasmicapp/query");function e(){e=function(){return r};var t,r={},n=Object.prototype,o=n.hasOwnProperty,a=Object.defineProperty||function(t,r,e){t[r]=e.value},i="function"==typeof Symbol?Symbol:{},u=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{l({},"")}catch(t){l=function(t,r,e){return t[r]=e}}function f(t,r,e,n){var o=Object.create((r&&r.prototype instanceof g?r:g).prototype),i=new S(n||[]);return a(o,"_invoke",{value:_(t,e,i)}),o}function h(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var p="suspendedStart",d="executing",v="completed",y={};function g(){}function m(){}function w(){}var b={};l(b,u,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(N([])));k&&k!==n&&o.call(k,u)&&(b=k);var E=w.prototype=g.prototype=Object.create(b);function L(t){["next","throw","return"].forEach((function(r){l(t,r,(function(t){return this._invoke(r,t)}))}))}function O(t,r){function e(n,a,i,u){var c=h(t[n],t,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&o.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,i,u)}),(function(t){e("throw",t,i,u)})):r.resolve(l).then((function(t){s.value=t,i(s)}),(function(t){return e("throw",t,i,u)}))}u(c.arg)}var n;a(this,"_invoke",{value:function(t,o){function a(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(a,a):a()}})}function _(r,e,n){var o=p;return function(a,i){if(o===d)throw new Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=j(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=h(r,e,n);if("normal"===s.type){if(o=n.done?v:"suspendedYield",s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function j(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,j(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=h(o,r.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,y;var i=a.arg;return i?i.done?(e[r.resultName]=i.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,y):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,y)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function I(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function N(r){if(r||""===r){var e=r[u];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,a=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return m.prototype=w,a(E,"constructor",{value:w,configurable:!0}),a(w,"constructor",{value:m,configurable:!0}),m.displayName=l(w,s,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===m||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,s,"GeneratorFunction")),t.prototype=Object.create(E),t},r.awrap=function(t){return{__await:t}},L(O.prototype),l(O.prototype,c,(function(){return this})),r.AsyncIterator=O,r.async=function(t,e,n,o,a){void 0===a&&(a=Promise);var i=new O(f(t,e,n,o),a);return r.isGeneratorFunction(e)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},L(E),l(E,s,"Generator"),l(E,u,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=N,S.prototype={constructor:S,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(I),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=o.call(i,"catchLoc"),s=o.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var a=n;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=r&&r<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=r,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),y},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),I(e),y}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;I(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:N(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),y}},r}function n(t,r,e,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function o(t){return function(){var r=this,e=arguments;return new Promise((function(o,a){var i=t.apply(r,e);function u(t){n(i,o,a,u,c,"next",t)}function c(t){n(i,o,a,u,c,"throw",t)}u(void 0)}))}}var a=function(t){return"$user."+t},i="undefined"!=typeof window;function u(){try{return localStorage.getItem("code_verifier")}catch(t){return null}}function c(){try{window.history.replaceState({},"",location.pathname)}catch(t){console.error("Error while removing callback params: "+t)}}function s(t){var r=window.location.pathname,e=window.location.origin;return t===r||t===e+r}function l(t){return f.apply(this,arguments)}function f(){return(f=o(e().mark((function r(n){var o,i,u,l,f,h,p,d;return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:o=n.host,i=n.appId,u=n.code,l=n.state,f=n.codeVerifier,h="/";try{l&&(p=JSON.parse(l),h=p.continueTo)}catch(t){console.error("Error while parsing state: "+t)}return r.next=5,t.getPlasmicAppUser({host:o,appId:i,code:u,codeVerifier:f});case 5:if(!(d=r.sent).error){r.next=9;break}return console.log("Error while performing code exchange: "+d.error),r.abrupt("return",void 0);case 9:return localStorage.setItem(a(i),d.token),s(h)?c():window.location.assign(h),r.abrupt("return",{token:d.token,user:d.user});case 12:case"end":return r.stop()}}),r)})))).apply(this,arguments)}function h(t){return p.apply(this,arguments)}function p(){return(p=o(e().mark((function r(n){var o,i,u,c,s;return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o=n.appId,i=n.host,u=localStorage.getItem(a(o))){r.next=4;break}return r.abrupt("return",{user:null,token:null});case 4:return r.next=6,t.getPlasmicAppUserFromToken({host:i,token:u});case 6:if(s=(c=r.sent).user,!c.error){r.next=13;break}return localStorage.removeItem(a(o)),console.log("Error while checking logged user"),r.abrupt("return",{user:null,token:null});case 13:return r.abrupt("return",{user:s,token:u});case 14:case"end":return r.stop()}}),r)})))).apply(this,arguments)}Object.keys(t).forEach((function(r){"default"!==r&&Object.defineProperty(exports,r,{enumerable:!0,get:function(){return t[r]}})})),exports.usePlasmicAuth=function(t){var n=t.host,a=t.appId,s=r.useMutablePlasmicQueryData("$csq$plasmic-auth-"+a,o(e().mark((function t(){var r,o,s;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a&&i){t.next=2;break}return t.abrupt("return",{user:null,token:null});case 2:if(t.prev=2,e=void 0,f=(e=new URLSearchParams(window.location.search)).get("error"),p=e.get("code"),d=e.get("state"),!(r={isCallbackError:!!f,isCodeExchange:!!p&&!!d,error:f,code:p,state:d}).isCallbackError&&!r.isCodeExchange){t.next=27;break}if(!r.isCallbackError){t.next=11;break}return c(),console.error("Error: "+r.error),t.abrupt("return",{user:null,token:null});case 11:if(o=u()){t.next=18;break}return c(),console.error("No code verifier found"),t.abrupt("return",{user:null,token:null});case 18:return t.next=20,l({host:n,appId:a,code:r.code,state:r.state,codeVerifier:o});case 20:if(s=t.sent){t.next=24;break}return c(),t.abrupt("return",{user:null,token:null});case 24:return t.abrupt("return",s);case 25:t.next=30;break;case 27:return t.next=29,h({appId:a,host:n});case 29:return t.abrupt("return",t.sent);case 30:t.next=35;break;case 32:t.prev=32,t.t0=t.catch(2),console.error("Error while handling auth: "+t.t0);case 35:return t.abrupt("return",{user:null,token:null});case 36:case"end":return t.stop()}var e,f,p,d}),t,null,[[2,32]])})))),f=s.data;return{user:null==f?void 0:f.user,token:null==f?void 0:f.token,isUserLoading:s.isLoading}};
|
|
2
2
|
//# sourceMappingURL=auth-react.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-react.cjs.production.min.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: any;\n token: string | null;\n}\n\nconst STORAGE_USER_KEY = 'plasmic_user';\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(STORAGE_USER_KEY, result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { host } = opts;\n\n const token = localStorage.getItem(STORAGE_USER_KEY);\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(STORAGE_USER_KEY);\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["isBrowser","window","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","location","pathname","console","error","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","appId","code","state","codeVerifier","parsedState","result","wrap","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_context3","getPlasmicAppUserFromToken","removeItem","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_context","params","URLSearchParams","search","get","isCallbackError","isCodeExchange","t0","userData","data","isUserLoading","isLoading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-react.cjs.production.min.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n PlasmicUser,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: PlasmicUser | null;\n token: string | null;\n}\n\nconst storageUserKey = (appId: string) => `$user.${appId}`;\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(storageUserKey(appId), result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n appId: string;\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { appId, host } = opts;\n\n const token = localStorage.getItem(storageUserKey(appId));\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(storageUserKey(appId));\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n appId,\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["storageUserKey","appId","isBrowser","window","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","location","pathname","console","error","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","code","state","codeVerifier","parsedState","result","wrap","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_context3","getPlasmicAppUserFromToken","removeItem","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_context","params","URLSearchParams","search","get","isCallbackError","isCodeExchange","t0","userData","data","isUserLoading","isLoading"],"mappings":"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"}
|
package/dist/auth-react.esm.js
CHANGED
|
@@ -334,7 +334,9 @@ function _asyncToGenerator(fn) {
|
|
|
334
334
|
};
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
var
|
|
337
|
+
var storageUserKey = function storageUserKey(appId) {
|
|
338
|
+
return "$user." + appId;
|
|
339
|
+
};
|
|
338
340
|
var isBrowser = typeof window !== 'undefined';
|
|
339
341
|
function getCallbackParams() {
|
|
340
342
|
var params = new URLSearchParams(window.location.search);
|
|
@@ -406,7 +408,7 @@ function _handleCallback() {
|
|
|
406
408
|
console.log("Error while performing code exchange: " + result.error);
|
|
407
409
|
return _context2.abrupt("return", undefined);
|
|
408
410
|
case 9:
|
|
409
|
-
localStorage.setItem(
|
|
411
|
+
localStorage.setItem(storageUserKey(appId), result.token);
|
|
410
412
|
if (!isContinueToSameLocation(continueTo)) {
|
|
411
413
|
window.location.assign(continueTo);
|
|
412
414
|
} else {
|
|
@@ -432,12 +434,12 @@ function checkAlreadyLoggedUser(_x2) {
|
|
|
432
434
|
*/
|
|
433
435
|
function _checkAlreadyLoggedUser() {
|
|
434
436
|
_checkAlreadyLoggedUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(opts) {
|
|
435
|
-
var host, token, _yield$getPlasmicAppU, user, error;
|
|
437
|
+
var appId, host, token, _yield$getPlasmicAppU, user, error;
|
|
436
438
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
437
439
|
while (1) switch (_context3.prev = _context3.next) {
|
|
438
440
|
case 0:
|
|
439
|
-
host = opts.host;
|
|
440
|
-
token = localStorage.getItem(
|
|
441
|
+
appId = opts.appId, host = opts.host;
|
|
442
|
+
token = localStorage.getItem(storageUserKey(appId));
|
|
441
443
|
if (token) {
|
|
442
444
|
_context3.next = 4;
|
|
443
445
|
break;
|
|
@@ -462,7 +464,7 @@ function _checkAlreadyLoggedUser() {
|
|
|
462
464
|
}
|
|
463
465
|
// If there is an error, we just remove the token
|
|
464
466
|
// But ideally we should check if the reason is token expired
|
|
465
|
-
localStorage.removeItem(
|
|
467
|
+
localStorage.removeItem(storageUserKey(appId));
|
|
466
468
|
console.log("Error while checking logged user");
|
|
467
469
|
return _context3.abrupt("return", {
|
|
468
470
|
user: null,
|
|
@@ -558,6 +560,7 @@ function usePlasmicAuth(opts) {
|
|
|
558
560
|
case 27:
|
|
559
561
|
_context.next = 29;
|
|
560
562
|
return checkAlreadyLoggedUser({
|
|
563
|
+
appId: appId,
|
|
561
564
|
host: host
|
|
562
565
|
});
|
|
563
566
|
case 29:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-react.esm.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: any;\n token: string | null;\n}\n\nconst STORAGE_USER_KEY = 'plasmic_user';\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(STORAGE_USER_KEY, result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { host } = opts;\n\n const token = localStorage.getItem(STORAGE_USER_KEY);\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(STORAGE_USER_KEY);\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["STORAGE_USER_KEY","isBrowser","window","getCallbackParams","params","URLSearchParams","location","search","error","get","code","state","isCallbackError","isCodeExchange","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","pathname","console","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","appId","codeVerifier","parsedState","result","wrap","_callee2$","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_callee3$","_context3","getPlasmicAppUserFromToken","removeItem","usePlasmicAuth","authKey","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_callee$","_context","t0","userData","data","isLoading","isUserLoading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-react.esm.js","sources":["../src/hooks.ts"],"sourcesContent":["import {\n getPlasmicAppUser,\n getPlasmicAppUserFromToken,\n PlasmicUser,\n} from '@plasmicapp/auth-api';\nimport { useMutablePlasmicQueryData } from '@plasmicapp/query';\n\ninterface PlasmicAuthData {\n user: PlasmicUser | null;\n token: string | null;\n}\n\nconst storageUserKey = (appId: string) => `$user.${appId}`;\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction getCallbackParams() {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const code = params.get('code');\n const state = params.get('state');\n\n return {\n isCallbackError: !!error,\n isCodeExchange: !!code && !!state,\n error,\n code,\n state,\n };\n}\n\nfunction getCodeVerifier() {\n try {\n return localStorage.getItem('code_verifier');\n } catch (err) {\n return null;\n }\n}\n\nfunction removeCallbackParams() {\n try {\n window.history.replaceState({}, '', location.pathname);\n } catch (err) {\n console.error(`Error while removing callback params: ${err}`);\n }\n}\n\n// continueTo can be only a pathname or a full url with origin\n// we can consider that currently we are at the callback page\n// with callback params, so ignore the search params\nfunction isContinueToSameLocation(continueTo: string) {\n const pathname = window.location.pathname;\n const origin = window.location.origin;\n return continueTo === pathname || continueTo === origin + pathname;\n}\n\nasync function handleCallback(opts: {\n host?: string;\n appId: string;\n code: string;\n state: string;\n codeVerifier: string;\n}): Promise<PlasmicAuthData | undefined> {\n const { host, appId, code, state, codeVerifier } = opts;\n\n let continueTo = '/';\n try {\n if (state) {\n const parsedState = JSON.parse(state);\n continueTo = parsedState.continueTo;\n }\n } catch (err) {\n console.error(`Error while parsing state: ${err}`);\n }\n\n const result = await getPlasmicAppUser({\n host,\n appId,\n code,\n codeVerifier,\n });\n\n if (result.error) {\n console.log(`Error while performing code exchange: ${result.error}`);\n return undefined;\n }\n\n localStorage.setItem(storageUserKey(appId), result.token);\n\n if (!isContinueToSameLocation(continueTo)) {\n window.location.assign(continueTo);\n } else {\n removeCallbackParams();\n }\n\n return { token: result.token, user: result.user };\n}\n\nasync function checkAlreadyLoggedUser(opts: {\n appId: string;\n host?: string;\n}): Promise<PlasmicAuthData> {\n const { appId, host } = opts;\n\n const token = localStorage.getItem(storageUserKey(appId));\n if (!token) {\n return { user: null, token: null };\n }\n\n const { user, error } = await getPlasmicAppUserFromToken({\n host,\n token,\n });\n\n if (error) {\n // If there is an error, we just remove the token\n // But ideally we should check if the reason is token expired\n localStorage.removeItem(storageUserKey(appId));\n console.log(`Error while checking logged user`);\n return { user: null, token: null };\n }\n\n return { user, token };\n}\n\n/**\n * Handles the authentication flow for Plasmic Auth and returns the user and token\n */\nexport function usePlasmicAuth(opts: { host?: string; appId?: string }) {\n const { host, appId } = opts;\n const authKey = `$csq$plasmic-auth-${appId}`;\n const { data: userData, isLoading } = useMutablePlasmicQueryData(\n authKey,\n async (): Promise<PlasmicAuthData> => {\n if (!appId || !isBrowser) {\n return { user: null, token: null };\n }\n\n // Fail silently for now\n try {\n // We first check if we are currently in the callback flow\n const callbackParams = getCallbackParams();\n if (callbackParams.isCallbackError || callbackParams.isCodeExchange) {\n if (callbackParams.isCallbackError) {\n // If there is an error, we just remove the callback params\n removeCallbackParams();\n console.error(`Error: ${callbackParams.error}`);\n return { user: null, token: null };\n } else {\n const codeVerifier = getCodeVerifier();\n if (!codeVerifier) {\n // If there is no codeVerifier, we just remove the callback params\n removeCallbackParams();\n console.error('No code verifier found');\n return { user: null, token: null };\n } else {\n // Perform code exchange, by the end of the callback handling we will either still be\n // in the callback page or we will be redirected to the continueTo page.\n\n const result = await handleCallback({\n host,\n appId,\n code: callbackParams.code!,\n state: callbackParams.state!,\n codeVerifier,\n });\n\n // Undefined result means that the code exchange failed\n if (!result) {\n removeCallbackParams();\n return { user: null, token: null };\n }\n\n // In the above case where the code exchange failed and the callback page requires login\n // a login redirect will be triggered\n return result;\n }\n }\n } else {\n return await checkAlreadyLoggedUser({\n appId,\n host,\n });\n }\n } catch (err) {\n console.error(`Error while handling auth: ${err}`);\n }\n\n return { user: null, token: null };\n }\n );\n\n return {\n user: userData?.user,\n token: userData?.token,\n isUserLoading: isLoading,\n };\n}\n"],"names":["storageUserKey","appId","isBrowser","window","getCallbackParams","params","URLSearchParams","location","search","error","get","code","state","isCallbackError","isCodeExchange","getCodeVerifier","localStorage","getItem","err","removeCallbackParams","history","replaceState","pathname","console","isContinueToSameLocation","continueTo","origin","handleCallback","_x","_handleCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","opts","host","codeVerifier","parsedState","result","wrap","_callee2$","_context2","prev","next","JSON","parse","getPlasmicAppUser","sent","log","abrupt","undefined","setItem","token","assign","user","stop","checkAlreadyLoggedUser","_x2","_checkAlreadyLoggedUser","_callee3","_yield$getPlasmicAppU","_callee3$","_context3","getPlasmicAppUserFromToken","removeItem","usePlasmicAuth","authKey","_useMutablePlasmicQue","useMutablePlasmicQueryData","_callee","callbackParams","_callee$","_context","t0","userData","data","isLoading","isUserLoading"],"mappings":"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"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PlasmicUser } from '@plasmicapp/auth-api';
|
|
1
2
|
/**
|
|
2
3
|
* Handles the authentication flow for Plasmic Auth and returns the user and token
|
|
3
4
|
*/
|
|
@@ -5,7 +6,7 @@ export declare function usePlasmicAuth(opts: {
|
|
|
5
6
|
host?: string;
|
|
6
7
|
appId?: string;
|
|
7
8
|
}): {
|
|
8
|
-
user:
|
|
9
|
+
user: PlasmicUser | null | undefined;
|
|
9
10
|
token: string | null | undefined;
|
|
10
11
|
isUserLoading: boolean | undefined;
|
|
11
12
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.0.
|
|
2
|
+
"version": "0.0.11",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "6e966ef24adb9af472b56a5051faf2b8e6e04f12",
|
|
68
68
|
"peerDependencies": {
|
|
69
69
|
"react": ">=16.8.0"
|
|
70
70
|
}
|