(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9539],{16463:function(e,r,t){"use strict";var n=t(71169);t.o(n,"usePathname")&&t.d(r,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(r,{useRouter:function(){return n.useRouter}})},20357:function(e,r,t){"use strict";var n,o;e.exports=(null==(n=t.g.process)?void 0:n.env)&&"object"==typeof(null==(o=t.g.process)?void 0:o.env)?t.g.process:t(88081)},88081:function(e){!function(){var r={229:function(e){var r,t,n,o=e.exports={};function i(){throw Error("setTimeout has not been defined")}function s(){throw Error("clearTimeout has not been defined")}function u(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{t="function"==typeof clearTimeout?clearTimeout:s}catch(e){t=s}}();var a=[],l=!1,c=-1;function d(){l&&n&&(l=!1,n.length?a=n.concat(a):c=-1,a.length&&h())}function h(){if(!l){var e=u(d);l=!0;for(var r=a.length;r;){for(n=a,a=[];++c<r;)n&&n[c].run();c=-1,r=a.length}n=null,l=!1,function(e){if(t===clearTimeout)return clearTimeout(e);if((t===s||!t)&&clearTimeout)return t=clearTimeout,clearTimeout(e);try{t(e)}catch(r){try{return t.call(null,e)}catch(r){return t.call(this,e)}}}(e)}}function g(e,r){this.fun=e,this.array=r}function f(){}o.nextTick=function(e){var r=Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)r[t-1]=arguments[t];a.push(new g(e,r)),1!==a.length||l||u(h)},g.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=f,o.addListener=f,o.once=f,o.off=f,o.removeListener=f,o.removeAllListeners=f,o.emit=f,o.prependListener=f,o.prependOnceListener=f,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={exports:{}},s=!0;try{r[e](i,i.exports,n),s=!1}finally{s&&delete t[e]}return i.exports}n.ab="//";var o=n(229);e.exports=o}()},85035:function(e,r,t){"use strict";t.d(r,{AuthProvider:function(){return b},Rk:function(){return S},aF:function(){return w},sX:function(){return C}});var n=t(2265),o=t(16463),i=Object.defineProperty,s=Object.defineProperties,u=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable,d=(e,r,t)=>r in e?i(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,h=(e,r)=>{for(var t in r||(r={}))l.call(r,t)&&d(e,t,r[t]);if(a)for(var t of a(r))c.call(r,t)&&d(e,t,r[t]);return e},g=(e,r)=>s(e,u(r)),f=(e,r,t)=>new Promise((n,o)=>{var i=e=>{try{u(t.next(e))}catch(e){o(e)}},s=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,s);u((t=t.apply(e,r)).next())}),m=class{isRole(e){return"multi_role"===this.orgRoleStructure?this.userAssignedRole===e||this.userAssignedAdditionalRoles.includes(e):this.userAssignedRole===e}isAtLeastRole(e){return"multi_role"===this.orgRoleStructure?this.userAssignedRole===e||this.userAssignedAdditionalRoles.includes(e):this.userInheritedRolesPlusCurrentRole.includes(e)}hasPermission(e){return this.userPermissions.includes(e)}hasAllPermissions(e){return e.every(e=>this.hasPermission(e))}static fromJSON(e){let r=JSON.parse(e);return new m(r.orgId,r.orgName,r.orgMetadata,r.urlSafeOrgName,r.userAssignedRole,r.userInheritedRolesPlusCurrentRole,r.userPermissions,r.orgRoleStructure,r.userAssignedAdditionalRoles)}get assignedRole(){return this.userAssignedRole}get assignedRoles(){return"multi_role"===this.orgRoleStructure?this.userAssignedAdditionalRoles.concat(this.userAssignedRole):[this.userAssignedRole]}get inheritedRolesPlusCurrentRole(){return"multi_role"===this.orgRoleStructure?this.userAssignedAdditionalRoles.concat(this.userAssignedRole):this.userInheritedRolesPlusCurrentRole}get permissions(){return this.userPermissions}constructor(e,r,t,n,o,i,s,u,a){this.orgId=e,this.orgName=r,this.orgMetadata=t,this.urlSafeOrgName=n,this.orgRoleStructure=u,this.userAssignedRole=o,this.userInheritedRolesPlusCurrentRole=i,this.userPermissions=s,this.userAssignedAdditionalRoles=a}};function p(e){if(void 0===e)return;let r={};for(let t of Object.keys(e)){let n=e[t];n&&(r[t]=new m(n.org_id,n.org_name,n.org_metadata,n.url_safe_org_name,n.user_role,n.inherited_user_roles_plus_current_role,n.user_permissions,n.org_role_structure,n.additional_roles))}return r}var v="__PROPEL_AUTH_USER_INFO";function _(){return"undefined"!=typeof window}function A(e,r){if(typeof e!=typeof r)return!1;if(null===e||null===r)return e===r;if(Array.isArray(e)!==Array.isArray(r))return!1;if(Array.isArray(e)){if(e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!A(e[t],r[t]))return!1;return!0}if("object"!=typeof e)return e===r;{let t=Object.keys(e),n=Object.keys(r);if(t.length!==n.length)return!1;for(let n of t)if(!A(e[n],r[n]))return!1;return!0}}var T=class{getActiveOrg(){if(this.activeOrgId)return this.getOrg(this.activeOrgId)}getActiveOrgId(){return this.activeOrgId}getOrg(e){var r;return null==(r=this.orgIdToOrgMemberInfo)?void 0:r[e]}getOrgByName(e){if(!this.orgIdToOrgMemberInfo)return;let r=e.toLowerCase().replace(/ /g,"-");for(let e in this.orgIdToOrgMemberInfo){let t=this.orgIdToOrgMemberInfo[e];if(t.urlSafeOrgName===r)return t}}getOrgs(){return this.orgIdToOrgMemberInfo?Object.values(this.orgIdToOrgMemberInfo):[]}isImpersonating(){return!!this.impersonatorUserId}constructor({userId:e,email:r,emailConfirmed:t,hasPassword:n,username:o,firstName:i,lastName:s,pictureUrl:u,orgIdToOrgMemberInfo:a,activeOrgId:l,mfaEnabled:c,canCreateOrgs:d,updatePasswordRequired:h,createdAt:g,lastActiveAt:f,legacyUserId:m,properties:p,impersonatorUserId:v}){this.userId=e,this.email=r,this.emailConfirmed=t,this.hasPassword=n,this.username=o,this.firstName=i,this.lastName=s,this.pictureUrl=u,this.orgIdToOrgMemberInfo=a,this.activeOrgId=l,this.mfaEnabled=c,this.canCreateOrgs=d,this.updatePasswordRequired=h,this.createdAt=g,this.lastActiveAt=f,this.legacyUserId=m,this.properties=p,this.impersonatorUserId=v}};function w(){let e=(0,n.useContext)(y);if(void 0===e)throw Error("useUser must be used within an AuthProvider");let{loading:r,userAndAccessToken:t}=e;return r?{loading:!0,isLoggedIn:void 0,user:void 0,accessToken:void 0,setActiveOrg:void 0}:t.user?{loading:!1,isLoggedIn:!0,user:t.user,accessToken:t.accessToken,setActiveOrg:e.setActiveOrg}:{loading:!1,isLoggedIn:!1,user:void 0,accessToken:void 0,setActiveOrg:void 0}}var y=n.createContext(void 0),O={loading:!0,userAndAccessToken:{user:void 0,accessToken:void 0},authChangeDetected:!1};function R(e,r){let t=g(h({},r.user),{lastActiveAt:void 0}),n=g(h({},e.userAndAccessToken.user),{lastActiveAt:void 0}),o=!e.loading&&!A(t,n);return r.user?(e.loading,{loading:!1,userAndAccessToken:{user:r.user,accessToken:r.accessToken},authChangeDetected:o}):{loading:!1,userAndAccessToken:{user:void 0,accessToken:void 0},authChangeDetected:o}}var b=e=>{var r;let[t,i]=(0,n.useReducer)(R,O),s=(0,o.useRouter)(),u=null==(r=e.reloadOnAuthChange)||r,a=(0,n.useCallback)(e=>{var r;i(e),(r=e.user)?localStorage.setItem(v,JSON.stringify(r)):localStorage.setItem(v,"{}")},[i]);(0,n.useEffect)(()=>{u&&t.authChangeDetected&&s.refresh()},[t.authChangeDetected,u,s]),(0,n.useEffect)(()=>{let e=!1;return function(){f(this,null,function*(){let r=yield k();e||r.error||a(r)})}(),()=>{e=!0}},[]),(0,n.useEffect)(()=>{let e,r=!1;function n(){return f(this,null,function*(){let t=yield k();r||(t.error?"unexpected"===t.error&&(e&&clearTimeout(e),e=setTimeout(n,3e4)):a(t))})}function o(e){return f(this,null,function*(){e.key===v&&!function(e,r){if(!e)return!1;if(!r)return"{}"===e;let t=JSON.parse(e);return!!t&&A(t,JSON.parse(JSON.stringify(r)))}(e.newValue,t.userAndAccessToken.user)&&(yield n())})}let i=setInterval(n,3e5);return _()&&(window.addEventListener("storage",o),window.addEventListener("online",n),window.addEventListener("focus",n)),()=>{r=!0,clearInterval(i),e&&clearTimeout(e),_()&&(window.removeEventListener("storage",o),window.removeEventListener("online",n),window.removeEventListener("focus",n))}},[a,t.userAndAccessToken.user]);let l=(0,n.useCallback)(()=>f(void 0,null,function*(){yield fetch("/api/auth/logout",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),a({user:void 0,accessToken:void 0})}),[a]),c=e=>(null==e?void 0:e.postLoginRedirectPath)?"/api/auth/login?return_to_path=".concat(encodeURIComponent(e.postLoginRedirectPath)):"/api/auth/login",d=e=>(null==e?void 0:e.postSignupRedirectPath)?"/api/auth/signup?return_to_path=".concat(encodeURIComponent(e.postSignupRedirectPath)):"/api/auth/signup",h=(0,n.useCallback)(r=>I("".concat(e.authUrl,"/account"),null==r?void 0:r.redirectBackToUrl),[e.authUrl]),g=(0,n.useCallback)((r,t)=>r?I("".concat(e.authUrl,"/org?id=").concat(r),null==t?void 0:t.redirectBackToUrl):I("".concat(e.authUrl,"/org"),null==t?void 0:t.redirectBackToUrl),[e.authUrl]),m=(0,n.useCallback)((r,t)=>r?I("".concat(e.authUrl,"/org/settings/").concat(r),null==t?void 0:t.redirectBackToUrl):I("".concat(e.authUrl,"/org/settings"),null==t?void 0:t.redirectBackToUrl),[e.authUrl]),w=(0,n.useCallback)(r=>I("".concat(e.authUrl,"/create_org"),null==r?void 0:r.redirectBackToUrl),[e.authUrl]),b=(0,n.useCallback)((r,t)=>I("".concat(e.authUrl,"/saml?id=").concat(r),null==t?void 0:t.redirectBackToUrl),[e.authUrl]),P=e=>{window.location.href=e},C=(0,n.useCallback)(()=>f(void 0,null,function*(){let e=yield k();if(!e.error)return a(e),e.user;throw Error("Failed to refresh token")}),[a]),S=(0,n.useCallback)(e=>f(void 0,null,function*(){let r=yield function(e){return f(this,null,function*(){try{let r=new URLSearchParams({active_org_id:e}).toString(),t=yield fetch("/api/auth/set-active-org?".concat(r),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"});if(t.ok){let{userinfo:e,accessToken:r,impersonatorUserId:n,activeOrgId:o}=yield t.json();return{user:new T({userId:e.user_id,email:e.email,emailConfirmed:e.email_confirmed,hasPassword:e.has_password,username:e.username,firstName:e.first_name,lastName:e.last_name,pictureUrl:e.picture_url,orgIdToOrgMemberInfo:p(e.org_id_to_org_info),activeOrgId:o,mfaEnabled:e.mfa_enabled,canCreateOrgs:e.can_create_orgs,updatePasswordRequired:e.update_password_required,createdAt:e.created_at,lastActiveAt:e.last_active_at,properties:e.properties,impersonatorUserId:n}),accessToken:r,error:void 0}}if(401===t.status)return{error:"not_in_org"};console.info("Failed to set active org",t)}catch(e){console.info("Failed to set active org",e)}throw Error("Failed to set active org")})}(e);if("not_in_org"!==r.error)return a(r),r.user}),[a]),U={loading:t.loading,userAndAccessToken:t.userAndAccessToken,logout:l,redirectToLoginPage:e=>P(c(e)),redirectToSignupPage:e=>P(d(e)),redirectToAccountPage:e=>P(h(e)),redirectToOrgPage:(e,r)=>P(g(e,r)),redirectToOrgSettingsPage:(e,r)=>P(m(e,r)),redirectToCreateOrgPage:e=>P(w(e)),redirectToSetupSAMLPage:(e,r)=>P(b(e,r)),getLoginPageUrl:c,getSignupPageUrl:d,getAccountPageUrl:h,getOrgPageUrl:g,getOrgSettingsPageUrl:m,getCreateOrgPageUrl:w,getSetupSAMLPageUrl:b,refreshAuthInfo:C,setActiveOrg:S};return n.createElement(y.Provider,{value:U},e.children)};function k(){return f(this,null,function*(){try{let e=yield fetch("/api/auth/userinfo",{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"});if(e.ok){let{userinfo:r,accessToken:t,impersonatorUserId:n,activeOrgId:o}=yield e.json();return{user:new T({userId:r.user_id,email:r.email,emailConfirmed:r.email_confirmed,hasPassword:r.has_password,username:r.username,firstName:r.first_name,lastName:r.last_name,pictureUrl:r.picture_url,orgIdToOrgMemberInfo:p(r.org_id_to_org_info),activeOrgId:o,mfaEnabled:r.mfa_enabled,canCreateOrgs:r.can_create_orgs,updatePasswordRequired:r.update_password_required,createdAt:r.created_at,lastActiveAt:r.last_active_at,properties:r.properties,impersonatorUserId:n}),accessToken:t,error:void 0}}if(401===e.status)return{user:void 0,accessToken:void 0,error:void 0};return console.info("Failed to refresh token",e),{error:"unexpected"}}catch(e){return console.info("Failed to refresh token",e),{error:"unexpected"}}})}var P=e=>(window?window.btoa:btoa)(e),I=(e,r)=>{if(!r)return e;let t=new URLSearchParams;return(t.set("rt",P(r)),e.includes("?"))?"".concat(e,"&").concat(t.toString()):"".concat(e,"?").concat(t.toString())};function C(){let e=(0,n.useContext)(y);if(void 0===e)throw Error("useLogoutFunction must be used within an AuthProvider");let{logout:r}=e;return r}function S(){let e=(0,n.useContext)(y);if(void 0===e)throw Error("useRedirectFunctions must be used within an AuthProvider");let{redirectToAccountPage:r,redirectToSignupPage:t,redirectToLoginPage:o,redirectToOrgPage:i,redirectToOrgSettingsPage:s,redirectToCreateOrgPage:u,redirectToSetupSAMLPage:a}=e;return{redirectToSignupPage:t,redirectToLoginPage:o,redirectToAccountPage:r,redirectToOrgPage:i,redirectToOrgSettingsPage:s,redirectToCreateOrgPage:u,redirectToSetupSAMLPage:a}}}}]);