@5minds/processcube_app_sdk
Version:
The SDK for ProcessCube Apps
2 lines (1 loc) • 2.78 kB
JavaScript
import c from"react";function C(r){return c.createElement("div",{style:{width:"100%",height:"100%"}},c.createElement("iframe",{width:"100%",height:"100%",src:r.url}))}import{jwtDecode as l}from"jwt-decode";import{getServerSession as u}from"next-auth";import{getSession as d}from"next-auth/react";import{Logger as m}from"@5minds/processcube_engine_sdk";var a=new m("processcube_app_sdk:next-auth_configuration"),T="No refresh token present. Your authority might be configured incorrectly. For more information see https://processcube.io/docs/app-sdk/samples/authority/authentication-with-nextauth";async function A(r){let e;return typeof window>"u"?e=(await u({callbacks:{jwt:p,session:g}}))?.user:e=(await d())?.user,!e||!e.claims?!1:e.claims[r]!=null}async function p(r){let{token:e,account:s,user:i}=r;s&&(e.accessToken=s.access_token,e.idToken=s.id_token,e.refreshToken=s.refresh_token,e.expiresAt=s.expires_at??Math.floor(Date.now()/1e3+s.expires_in)),i&&(e.user=i);let t=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(t||a.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),e.refreshToken===void 0&&a.warn(T),t&&Date.now()>=e.expiresAt*1e3){if(e.refreshToken===void 0)return a.error("Error refreshing access token.",{err:T}),e.error="RefreshAccessTokenError",e;try{let o=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:String(e.refreshToken)}),method:"POST"}),n=await o.json();if(!o.ok)throw n;e.accessToken=n.access_token,e.idToken=n.id_token,e.expiresAt=Math.floor(Date.now()/1e3+n.expires_in),e.refreshToken=n.refresh_token??e.refreshToken}catch(o){a.error("Error refreshing access token",{err:o}),e.error="RefreshAccessTokenError"}}return e}async function g(r){let{session:e,token:s}=r,i=f(s.accessToken),t=f(s.idToken),o=Object.keys(t),n=Object.fromEntries(Object.entries(i).filter(([k,h])=>!o.includes(k)));return e.user=s.user??{},e.user.claims=n,e.error=s.error,e}function f(r){return l(r)}function U(r){let{userTaskConfig:e,userTaskConfigModel:s,...i}=r,t={},o={};return e.formFields.forEach(n=>t[n.id]=n),s.formFields.forEach(n=>o[n.id]=n),{...i,userTaskConfig:{...e,formFieldsDict:t},userTaskConfigModel:{...s,formFieldsDict:o}}}function v(r){return{totalCount:r.totalCount,userTasks:r.userTasks.map(U)}}export{C as RemoteUserTask,p as authConfigJwtCallback,g as authConfigSessionCallback,A as hasClaim,U as mapUserTask,v as mapUserTaskList};