@thunderid/nextjs 1.12.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ThunderIDNextClient.d.ts +8 -1
- package/dist/ThunderIDNextClient.d.ts.map +1 -1
- package/dist/ThunderIDNextClient.js +10 -0
- package/dist/ThunderIDNextClient.js.map +1 -1
- package/dist/cjs/ThunderIDNextClient.cjs +10 -0
- package/dist/cjs/ThunderIDNextClient.cjs.map +1 -1
- package/dist/cjs/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs +116 -0
- package/dist/cjs/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs.map +1 -0
- package/dist/cjs/client/components/account/UserProfile/UserProfile.cjs +11 -1
- package/dist/cjs/client/components/account/UserProfile/UserProfile.cjs.map +1 -1
- package/dist/cjs/client/components/account/VerifyAttribute/VerifyAttribute.cjs +80 -0
- package/dist/cjs/client/components/account/VerifyAttribute/VerifyAttribute.cjs.map +1 -0
- package/dist/cjs/client/components/auth/SignIn/SignIn.cjs +3 -2
- package/dist/cjs/client/components/auth/SignIn/SignIn.cjs.map +1 -1
- package/dist/cjs/client/components/{admin → management}/AgentCreate/AgentCreate.cjs +1 -1
- package/dist/cjs/client/components/management/AgentCreate/AgentCreate.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/AgentDetails/AgentDetails.cjs +1 -1
- package/dist/cjs/client/components/management/AgentDetails/AgentDetails.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/AgentList/AgentList.cjs +1 -1
- package/dist/cjs/client/components/management/AgentList/AgentList.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/ApplicationCreate/ApplicationCreate.cjs +1 -1
- package/dist/cjs/client/components/management/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/ApplicationDetails/ApplicationDetails.cjs +1 -1
- package/dist/cjs/client/components/management/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/ApplicationList/ApplicationList.cjs +1 -1
- package/dist/cjs/client/components/management/ApplicationList/ApplicationList.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/GroupCreate/GroupCreate.cjs +1 -1
- package/dist/cjs/client/components/management/GroupCreate/GroupCreate.cjs.map +1 -0
- package/dist/cjs/client/components/management/GroupDetails/GroupDetails.cjs +28 -0
- package/dist/cjs/client/components/management/GroupDetails/GroupDetails.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/GroupList/GroupList.cjs +1 -1
- package/dist/cjs/client/components/management/GroupList/GroupList.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/GroupMembers/GroupMembers.cjs +1 -1
- package/dist/cjs/client/components/management/GroupMembers/GroupMembers.cjs.map +1 -0
- package/dist/cjs/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs +28 -0
- package/dist/cjs/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs.map +1 -0
- package/dist/cjs/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs +28 -0
- package/dist/cjs/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs.map +1 -0
- package/dist/cjs/client/components/management/OrganizationUnitList/OrganizationUnitList.cjs +28 -0
- package/dist/cjs/client/components/management/OrganizationUnitList/OrganizationUnitList.cjs.map +1 -0
- package/dist/cjs/client/components/management/ProjectCreate/ProjectCreate.cjs +28 -0
- package/dist/cjs/client/components/management/ProjectCreate/ProjectCreate.cjs.map +1 -0
- package/dist/cjs/client/components/management/ProjectDetails/ProjectDetails.cjs +28 -0
- package/dist/cjs/client/components/management/ProjectDetails/ProjectDetails.cjs.map +1 -0
- package/dist/cjs/client/components/management/ProjectList/ProjectList.cjs +28 -0
- package/dist/cjs/client/components/management/ProjectList/ProjectList.cjs.map +1 -0
- package/dist/cjs/client/components/management/ProjectSwitcher/ProjectSwitcher.cjs +30 -0
- package/dist/cjs/client/components/management/ProjectSwitcher/ProjectSwitcher.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/RoleAssignments/RoleAssignments.cjs +1 -1
- package/dist/cjs/client/components/management/RoleAssignments/RoleAssignments.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/RoleCreate/RoleCreate.cjs +1 -1
- package/dist/cjs/client/components/management/RoleCreate/RoleCreate.cjs.map +1 -0
- package/dist/cjs/client/components/management/RoleDetails/RoleDetails.cjs +28 -0
- package/dist/cjs/client/components/management/RoleDetails/RoleDetails.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/RoleList/RoleList.cjs +1 -1
- package/dist/cjs/client/components/management/RoleList/RoleList.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/RolePermissions/RolePermissions.cjs +1 -1
- package/dist/cjs/client/components/management/RolePermissions/RolePermissions.cjs.map +1 -0
- package/dist/cjs/client/components/management/SharingPolicies/SharingPolicies.cjs +28 -0
- package/dist/cjs/client/components/management/SharingPolicies/SharingPolicies.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/UserCreate/UserCreate.cjs +1 -1
- package/dist/cjs/client/components/management/UserCreate/UserCreate.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/UserDetails/UserDetails.cjs +1 -1
- package/dist/cjs/client/components/management/UserDetails/UserDetails.cjs.map +1 -0
- package/dist/cjs/client/components/{admin → management}/UserList/UserList.cjs +1 -1
- package/dist/cjs/client/components/management/UserList/UserList.cjs.map +1 -0
- package/dist/cjs/client/contexts/ThunderID/ThunderIDProvider.cjs +65 -2
- package/dist/cjs/client/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
- package/dist/cjs/client/index.cjs +29 -17
- package/dist/cjs/index.cjs +100 -16
- package/dist/cjs/server/actions/account/getAccessibleOrganizationUnitsAction.cjs +53 -0
- package/dist/cjs/server/actions/account/getAccessibleOrganizationUnitsAction.cjs.map +1 -0
- package/dist/cjs/server/actions/account/getCurrentOrganizationUnitAction.cjs +31 -0
- package/dist/cjs/server/actions/account/getCurrentOrganizationUnitAction.cjs.map +1 -0
- package/dist/cjs/server/actions/auth/executeSelfFlowAction.cjs +47 -0
- package/dist/cjs/server/actions/auth/executeSelfFlowAction.cjs.map +1 -0
- package/dist/cjs/server/actions/auth/switchOrganizationUnitAction.cjs +85 -0
- package/dist/cjs/server/actions/auth/switchOrganizationUnitAction.cjs.map +1 -0
- package/dist/cjs/server/thunderid.cjs +16 -0
- package/dist/cjs/server/thunderid.cjs.map +1 -1
- package/dist/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts +24 -0
- package/dist/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts.map +1 -0
- package/dist/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js +112 -0
- package/dist/client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js.map +1 -0
- package/dist/client/components/account/UserProfile/UserProfile.d.ts +7 -1
- package/dist/client/components/account/UserProfile/UserProfile.d.ts.map +1 -1
- package/dist/client/components/account/UserProfile/UserProfile.js +12 -2
- package/dist/client/components/account/UserProfile/UserProfile.js.map +1 -1
- package/dist/client/components/account/VerifyAttribute/VerifyAttribute.d.ts +41 -0
- package/dist/client/components/account/VerifyAttribute/VerifyAttribute.d.ts.map +1 -0
- package/dist/client/components/account/VerifyAttribute/VerifyAttribute.js +75 -0
- package/dist/client/components/account/VerifyAttribute/VerifyAttribute.js.map +1 -0
- package/dist/client/components/auth/SignIn/SignIn.d.ts +7 -1
- package/dist/client/components/auth/SignIn/SignIn.d.ts.map +1 -1
- package/dist/client/components/auth/SignIn/SignIn.js +3 -2
- package/dist/client/components/auth/SignIn/SignIn.js.map +1 -1
- package/dist/client/components/management/AgentCreate/AgentCreate.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/AgentCreate/AgentCreate.js +1 -1
- package/dist/client/components/management/AgentCreate/AgentCreate.js.map +1 -0
- package/dist/client/components/management/AgentDetails/AgentDetails.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/AgentDetails/AgentDetails.js +1 -1
- package/dist/client/components/management/AgentDetails/AgentDetails.js.map +1 -0
- package/dist/client/components/management/AgentList/AgentList.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/AgentList/AgentList.js +1 -1
- package/dist/client/components/management/AgentList/AgentList.js.map +1 -0
- package/dist/client/components/management/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/ApplicationCreate/ApplicationCreate.js +1 -1
- package/dist/client/components/management/ApplicationCreate/ApplicationCreate.js.map +1 -0
- package/dist/client/components/management/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/ApplicationDetails/ApplicationDetails.js +1 -1
- package/dist/client/components/management/ApplicationDetails/ApplicationDetails.js.map +1 -0
- package/dist/client/components/management/ApplicationList/ApplicationList.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/ApplicationList/ApplicationList.js +1 -1
- package/dist/client/components/management/ApplicationList/ApplicationList.js.map +1 -0
- package/dist/client/components/management/GroupCreate/GroupCreate.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/GroupCreate/GroupCreate.js +1 -1
- package/dist/client/components/management/GroupCreate/GroupCreate.js.map +1 -0
- package/dist/client/components/management/GroupDetails/GroupDetails.d.ts +17 -0
- package/dist/client/components/management/GroupDetails/GroupDetails.d.ts.map +1 -0
- package/dist/client/components/management/GroupDetails/GroupDetails.js +25 -0
- package/dist/client/components/management/GroupDetails/GroupDetails.js.map +1 -0
- package/dist/client/components/management/GroupList/GroupList.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/GroupList/GroupList.js +1 -1
- package/dist/client/components/management/GroupList/GroupList.js.map +1 -0
- package/dist/client/components/management/GroupMembers/GroupMembers.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/GroupMembers/GroupMembers.js +1 -1
- package/dist/client/components/management/GroupMembers/GroupMembers.js.map +1 -0
- package/dist/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts +17 -0
- package/dist/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts.map +1 -0
- package/dist/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js +25 -0
- package/dist/client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js.map +1 -0
- package/dist/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts +17 -0
- package/dist/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts.map +1 -0
- package/dist/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js +25 -0
- package/dist/client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js.map +1 -0
- package/dist/client/components/management/OrganizationUnitList/OrganizationUnitList.d.ts +17 -0
- package/dist/client/components/management/OrganizationUnitList/OrganizationUnitList.d.ts.map +1 -0
- package/dist/client/components/management/OrganizationUnitList/OrganizationUnitList.js +25 -0
- package/dist/client/components/management/OrganizationUnitList/OrganizationUnitList.js.map +1 -0
- package/dist/client/components/management/ProjectCreate/ProjectCreate.d.ts +17 -0
- package/dist/client/components/management/ProjectCreate/ProjectCreate.d.ts.map +1 -0
- package/dist/client/components/management/ProjectCreate/ProjectCreate.js +25 -0
- package/dist/client/components/management/ProjectCreate/ProjectCreate.js.map +1 -0
- package/dist/client/components/management/ProjectDetails/ProjectDetails.d.ts +17 -0
- package/dist/client/components/management/ProjectDetails/ProjectDetails.d.ts.map +1 -0
- package/dist/client/components/management/ProjectDetails/ProjectDetails.js +25 -0
- package/dist/client/components/management/ProjectDetails/ProjectDetails.js.map +1 -0
- package/dist/client/components/management/ProjectList/ProjectList.d.ts +17 -0
- package/dist/client/components/management/ProjectList/ProjectList.d.ts.map +1 -0
- package/dist/client/components/management/ProjectList/ProjectList.js +25 -0
- package/dist/client/components/management/ProjectList/ProjectList.js.map +1 -0
- package/dist/client/components/management/ProjectSwitcher/ProjectSwitcher.d.ts +19 -0
- package/dist/client/components/management/ProjectSwitcher/ProjectSwitcher.d.ts.map +1 -0
- package/dist/client/components/management/ProjectSwitcher/ProjectSwitcher.js +27 -0
- package/dist/client/components/management/ProjectSwitcher/ProjectSwitcher.js.map +1 -0
- package/dist/client/components/management/RoleAssignments/RoleAssignments.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/RoleAssignments/RoleAssignments.js +1 -1
- package/dist/client/components/management/RoleAssignments/RoleAssignments.js.map +1 -0
- package/dist/client/components/management/RoleCreate/RoleCreate.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/RoleCreate/RoleCreate.js +1 -1
- package/dist/client/components/management/RoleCreate/RoleCreate.js.map +1 -0
- package/dist/client/components/management/RoleDetails/RoleDetails.d.ts +17 -0
- package/dist/client/components/management/RoleDetails/RoleDetails.d.ts.map +1 -0
- package/dist/client/components/management/RoleDetails/RoleDetails.js +25 -0
- package/dist/client/components/management/RoleDetails/RoleDetails.js.map +1 -0
- package/dist/client/components/management/RoleList/RoleList.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/RoleList/RoleList.js +1 -1
- package/dist/client/components/management/RoleList/RoleList.js.map +1 -0
- package/dist/client/components/management/RolePermissions/RolePermissions.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/RolePermissions/RolePermissions.js +1 -1
- package/dist/client/components/management/RolePermissions/RolePermissions.js.map +1 -0
- package/dist/client/components/management/SharingPolicies/SharingPolicies.d.ts +17 -0
- package/dist/client/components/management/SharingPolicies/SharingPolicies.d.ts.map +1 -0
- package/dist/client/components/management/SharingPolicies/SharingPolicies.js +25 -0
- package/dist/client/components/management/SharingPolicies/SharingPolicies.js.map +1 -0
- package/dist/client/components/management/UserCreate/UserCreate.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/UserCreate/UserCreate.js +1 -1
- package/dist/client/components/management/UserCreate/UserCreate.js.map +1 -0
- package/dist/client/components/management/UserDetails/UserDetails.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/UserDetails/UserDetails.js +1 -1
- package/dist/client/components/management/UserDetails/UserDetails.js.map +1 -0
- package/dist/client/components/management/UserList/UserList.d.ts.map +1 -0
- package/dist/client/components/{admin → management}/UserList/UserList.js +1 -1
- package/dist/client/components/management/UserList/UserList.js.map +1 -0
- package/dist/client/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
- package/dist/client/contexts/ThunderID/ThunderIDProvider.js +67 -4
- package/dist/client/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
- package/dist/client/index.d.ts +57 -33
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +29 -17
- package/dist/client/management.d.ts +3 -0
- package/dist/client/management.d.ts.map +1 -0
- package/dist/client/management.js +6 -0
- package/dist/index.js +30 -18
- package/dist/server/actions/account/getAccessibleOrganizationUnitsAction.d.ts +20 -0
- package/dist/server/actions/account/getAccessibleOrganizationUnitsAction.d.ts.map +1 -0
- package/dist/server/actions/account/getAccessibleOrganizationUnitsAction.js +51 -0
- package/dist/server/actions/account/getAccessibleOrganizationUnitsAction.js.map +1 -0
- package/dist/server/actions/account/getCurrentOrganizationUnitAction.d.ts +10 -0
- package/dist/server/actions/account/getCurrentOrganizationUnitAction.d.ts.map +1 -0
- package/dist/server/actions/account/getCurrentOrganizationUnitAction.js +28 -0
- package/dist/server/actions/account/getCurrentOrganizationUnitAction.js.map +1 -0
- package/dist/server/actions/auth/executeSelfFlowAction.d.ts +20 -0
- package/dist/server/actions/auth/executeSelfFlowAction.d.ts.map +1 -0
- package/dist/server/actions/auth/executeSelfFlowAction.js +45 -0
- package/dist/server/actions/auth/executeSelfFlowAction.js.map +1 -0
- package/dist/server/actions/auth/switchOrganizationUnitAction.d.ts +30 -0
- package/dist/server/actions/auth/switchOrganizationUnitAction.d.ts.map +1 -0
- package/dist/server/actions/auth/switchOrganizationUnitAction.js +82 -0
- package/dist/server/actions/auth/switchOrganizationUnitAction.js.map +1 -0
- package/dist/server/thunderid.d.ts +2 -1
- package/dist/server/thunderid.d.ts.map +1 -1
- package/dist/server/thunderid.js +14 -0
- package/dist/server/thunderid.js.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/client/components/admin/AgentCreate/AgentCreate.cjs.map +0 -1
- package/dist/cjs/client/components/admin/AgentDetails/AgentDetails.cjs.map +0 -1
- package/dist/cjs/client/components/admin/AgentList/AgentList.cjs.map +0 -1
- package/dist/cjs/client/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +0 -1
- package/dist/cjs/client/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +0 -1
- package/dist/cjs/client/components/admin/ApplicationList/ApplicationList.cjs.map +0 -1
- package/dist/cjs/client/components/admin/GroupCreate/GroupCreate.cjs.map +0 -1
- package/dist/cjs/client/components/admin/GroupList/GroupList.cjs.map +0 -1
- package/dist/cjs/client/components/admin/GroupMembers/GroupMembers.cjs.map +0 -1
- package/dist/cjs/client/components/admin/RoleAssignments/RoleAssignments.cjs.map +0 -1
- package/dist/cjs/client/components/admin/RoleCreate/RoleCreate.cjs.map +0 -1
- package/dist/cjs/client/components/admin/RoleList/RoleList.cjs.map +0 -1
- package/dist/cjs/client/components/admin/RolePermissions/RolePermissions.cjs.map +0 -1
- package/dist/cjs/client/components/admin/UserCreate/UserCreate.cjs.map +0 -1
- package/dist/cjs/client/components/admin/UserDetails/UserDetails.cjs.map +0 -1
- package/dist/cjs/client/components/admin/UserList/UserList.cjs.map +0 -1
- package/dist/client/admin.d.ts +0 -3
- package/dist/client/admin.d.ts.map +0 -1
- package/dist/client/admin.js +0 -6
- package/dist/client/components/admin/AgentCreate/AgentCreate.d.ts.map +0 -1
- package/dist/client/components/admin/AgentCreate/AgentCreate.js.map +0 -1
- package/dist/client/components/admin/AgentDetails/AgentDetails.d.ts.map +0 -1
- package/dist/client/components/admin/AgentDetails/AgentDetails.js.map +0 -1
- package/dist/client/components/admin/AgentList/AgentList.d.ts.map +0 -1
- package/dist/client/components/admin/AgentList/AgentList.js.map +0 -1
- package/dist/client/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +0 -1
- package/dist/client/components/admin/ApplicationCreate/ApplicationCreate.js.map +0 -1
- package/dist/client/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +0 -1
- package/dist/client/components/admin/ApplicationDetails/ApplicationDetails.js.map +0 -1
- package/dist/client/components/admin/ApplicationList/ApplicationList.d.ts.map +0 -1
- package/dist/client/components/admin/ApplicationList/ApplicationList.js.map +0 -1
- package/dist/client/components/admin/GroupCreate/GroupCreate.d.ts.map +0 -1
- package/dist/client/components/admin/GroupCreate/GroupCreate.js.map +0 -1
- package/dist/client/components/admin/GroupList/GroupList.d.ts.map +0 -1
- package/dist/client/components/admin/GroupList/GroupList.js.map +0 -1
- package/dist/client/components/admin/GroupMembers/GroupMembers.d.ts.map +0 -1
- package/dist/client/components/admin/GroupMembers/GroupMembers.js.map +0 -1
- package/dist/client/components/admin/RoleAssignments/RoleAssignments.d.ts.map +0 -1
- package/dist/client/components/admin/RoleAssignments/RoleAssignments.js.map +0 -1
- package/dist/client/components/admin/RoleCreate/RoleCreate.d.ts.map +0 -1
- package/dist/client/components/admin/RoleCreate/RoleCreate.js.map +0 -1
- package/dist/client/components/admin/RoleList/RoleList.d.ts.map +0 -1
- package/dist/client/components/admin/RoleList/RoleList.js.map +0 -1
- package/dist/client/components/admin/RolePermissions/RolePermissions.d.ts.map +0 -1
- package/dist/client/components/admin/RolePermissions/RolePermissions.js.map +0 -1
- package/dist/client/components/admin/UserCreate/UserCreate.d.ts.map +0 -1
- package/dist/client/components/admin/UserCreate/UserCreate.js.map +0 -1
- package/dist/client/components/admin/UserDetails/UserDetails.d.ts.map +0 -1
- package/dist/client/components/admin/UserDetails/UserDetails.js.map +0 -1
- package/dist/client/components/admin/UserList/UserList.d.ts.map +0 -1
- package/dist/client/components/admin/UserList/UserList.js.map +0 -1
- /package/dist/cjs/client/{admin.cjs → management.cjs} +0 -0
- /package/dist/client/components/{admin → management}/AgentCreate/AgentCreate.d.ts +0 -0
- /package/dist/client/components/{admin → management}/AgentDetails/AgentDetails.d.ts +0 -0
- /package/dist/client/components/{admin → management}/AgentList/AgentList.d.ts +0 -0
- /package/dist/client/components/{admin → management}/ApplicationCreate/ApplicationCreate.d.ts +0 -0
- /package/dist/client/components/{admin → management}/ApplicationDetails/ApplicationDetails.d.ts +0 -0
- /package/dist/client/components/{admin → management}/ApplicationList/ApplicationList.d.ts +0 -0
- /package/dist/client/components/{admin → management}/GroupCreate/GroupCreate.d.ts +0 -0
- /package/dist/client/components/{admin → management}/GroupList/GroupList.d.ts +0 -0
- /package/dist/client/components/{admin → management}/GroupMembers/GroupMembers.d.ts +0 -0
- /package/dist/client/components/{admin → management}/RoleAssignments/RoleAssignments.d.ts +0 -0
- /package/dist/client/components/{admin → management}/RoleCreate/RoleCreate.d.ts +0 -0
- /package/dist/client/components/{admin → management}/RoleList/RoleList.d.ts +0 -0
- /package/dist/client/components/{admin → management}/RolePermissions/RolePermissions.d.ts +0 -0
- /package/dist/client/components/{admin → management}/UserCreate/UserCreate.d.ts +0 -0
- /package/dist/client/components/{admin → management}/UserDetails/UserDetails.d.ts +0 -0
- /package/dist/client/components/{admin → management}/UserList/UserList.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharingPolicies.cjs","names":["SharingPolicies: FC<SharingPoliciesProps>","ReactSharingPolicies"],"sources":["../../../../../../src/client/components/management/SharingPolicies/SharingPolicies.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {\n SharingPolicies as ReactSharingPolicies,\n SharingPoliciesProps as ReactSharingPoliciesProps,\n} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type SharingPoliciesProps = ReactSharingPoliciesProps;\n\n/**\n * Lists the sharing policies of a user, an application, a role or a flow, and lets the signed-in user manage them when `editable`.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <SharingPolicies resourceType=\"role\" resourceId={roleId} editable />\n * ```\n */\nconst SharingPolicies: FC<SharingPoliciesProps> = (props: SharingPoliciesProps): ReactElement => (\n <ReactSharingPolicies {...props} />\n);\n\nSharingPolicies.displayName = 'SharingPolicies';\n\nexport default SharingPolicies;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,MAAMA,mBAA6C,UACjD,2CAACC,qCAAqB,GAAI,QAAS;AAGrC,gBAAgB,cAAc;AAE9B,8BAAe"}
|
|
@@ -7,7 +7,7 @@ __thunderid_react = require_rolldown_runtime.__toESM(__thunderid_react);
|
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
9
9
|
|
|
10
|
-
//#region src/client/components/
|
|
10
|
+
//#region src/client/components/management/UserCreate/UserCreate.tsx
|
|
11
11
|
/**
|
|
12
12
|
* Creates a user, or invites one with `mode="invite"`.
|
|
13
13
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserCreate.cjs","names":["UserCreate: FC<UserCreateProps>","ReactUserCreate"],"sources":["../../../../../../src/client/components/management/UserCreate/UserCreate.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {UserCreate as ReactUserCreate, UserCreateProps as ReactUserCreateProps} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type UserCreateProps = ReactUserCreateProps;\n\n/**\n * Creates a user, or invites one with `mode=\"invite\"`.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <UserCreate onCreated={(user) => router.push(`/admin/users/${user.id}`)} />\n * ```\n */\nconst UserCreate: FC<UserCreateProps> = (props: UserCreateProps): ReactElement => <ReactUserCreate {...props} />;\n\nUserCreate.displayName = 'UserCreate';\n\nexport default UserCreate;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,cAAmC,UAAyC,2CAACC,gCAAgB,GAAI,QAAS;AAEhH,WAAW,cAAc;AAEzB,yBAAe"}
|
|
@@ -7,7 +7,7 @@ __thunderid_react = require_rolldown_runtime.__toESM(__thunderid_react);
|
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
9
9
|
|
|
10
|
-
//#region src/client/components/
|
|
10
|
+
//#region src/client/components/management/UserDetails/UserDetails.tsx
|
|
11
11
|
/**
|
|
12
12
|
* Shows a user's attributes and groups, and optionally edits or deletes the user.
|
|
13
13
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserDetails.cjs","names":["UserDetails: FC<UserDetailsProps>","ReactUserDetails"],"sources":["../../../../../../src/client/components/management/UserDetails/UserDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {UserDetails as ReactUserDetails, UserDetailsProps as ReactUserDetailsProps} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type UserDetailsProps = ReactUserDetailsProps;\n\n/**\n * Shows a user's attributes and groups, and optionally edits or deletes the user.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <UserDetails userId={id} editable deletable onDeleted={() => router.push('/admin/users')} />\n * ```\n */\nconst UserDetails: FC<UserDetailsProps> = (props: UserDetailsProps): ReactElement => <ReactUserDetails {...props} />;\n\nUserDetails.displayName = 'UserDetails';\n\nexport default UserDetails;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,eAAqC,UAA0C,2CAACC,iCAAiB,GAAI,QAAS;AAEpH,YAAY,cAAc;AAE1B,0BAAe"}
|
|
@@ -7,7 +7,7 @@ __thunderid_react = require_rolldown_runtime.__toESM(__thunderid_react);
|
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
9
9
|
|
|
10
|
-
//#region src/client/components/
|
|
10
|
+
//#region src/client/components/management/UserList/UserList.tsx
|
|
11
11
|
/**
|
|
12
12
|
* Lists the users the signed-in user is allowed to see, a page at a time.
|
|
13
13
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserList.cjs","names":["UserList: FC<UserListProps>","ReactUserList"],"sources":["../../../../../../src/client/components/management/UserList/UserList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {UserList as ReactUserList, UserListProps as ReactUserListProps} from '@thunderid/react';\nimport {FC, ReactElement} from 'react';\n\nexport type UserListProps = ReactUserListProps;\n\n/**\n * Lists the users the signed-in user is allowed to see, a page at a time.\n *\n * Management requests go through a server action with the signed-in user's server-held session, so\n * the access token never reaches the browser. Whether a request succeeds is the server's decision.\n *\n * @example\n * ```tsx\n * <UserList onSelect={(user) => router.push(`/admin/users/${user.id}`)} />\n * ```\n */\nconst UserList: FC<UserListProps> = (props: UserListProps): ReactElement => <ReactUserList {...props} />;\n\nUserList.displayName = 'UserList';\n\nexport default UserList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,YAA+B,UAAuC,2CAACC,8BAAc,GAAI,QAAS;AAExG,SAAS,cAAc;AAEvB,uBAAe"}
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
5
|
+
const require_getSessionId = require('../../../server/actions/getSessionId.cjs');
|
|
6
|
+
const require_getUserAction = require('../../../server/actions/account/getUserAction.cjs');
|
|
7
|
+
const require_getUserProfileAction = require('../../../server/actions/account/getUserProfileAction.cjs');
|
|
5
8
|
const require_logger = require('../../../utils/logger.cjs');
|
|
6
9
|
const require_ThunderIDContext = require('./ThunderIDContext.cjs');
|
|
10
|
+
const require_getCurrentOrganizationUnitAction = require('../../../server/actions/account/getCurrentOrganizationUnitAction.cjs');
|
|
11
|
+
const require_switchOrganizationUnitAction = require('../../../server/actions/auth/switchOrganizationUnitAction.cjs');
|
|
7
12
|
const require_fetchFlowMetaFromServer = require('../../fetchFlowMetaFromServer.cjs');
|
|
8
13
|
const require_fetchManagementFromServer = require('../../fetchManagementFromServer.cjs');
|
|
9
14
|
let __thunderid_node = require("@thunderid/node");
|
|
@@ -62,6 +67,38 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
62
67
|
(0, react.useEffect)(() => {
|
|
63
68
|
setIsLoading(false);
|
|
64
69
|
}, [isSignedIn, user]);
|
|
70
|
+
const [currentOrganizationUnit, setCurrentOrganizationUnit] = (0, react.useState)(null);
|
|
71
|
+
const { currentProject, setCurrentProject } = (0, __thunderid_react.useCurrentProjectState)((0, __thunderid_node.getVendorPrefix)(vendor));
|
|
72
|
+
(0, react.useEffect)(() => {
|
|
73
|
+
if (!isSignedIn) {
|
|
74
|
+
setCurrentOrganizationUnit(null);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
require_getCurrentOrganizationUnitAction.default().then(setCurrentOrganizationUnit).catch(() => setCurrentOrganizationUnit(null));
|
|
78
|
+
}, [isSignedIn, user]);
|
|
79
|
+
/**
|
|
80
|
+
* Signs in again bounded to another organization unit through a server action. Redirect mode sends the
|
|
81
|
+
* browser to the unit's authorization endpoint and resolves with `undefined`; embedded mode replaces
|
|
82
|
+
* the session in place and resolves with the refreshed user. A failure keeps the previous session and
|
|
83
|
+
* rejects with an error whose code is one of `OrganizationUnitSwitchErrorCodes`.
|
|
84
|
+
*/
|
|
85
|
+
const handleSwitchOrganizationUnit = async (organizationUnitId, options) => {
|
|
86
|
+
const result = await require_switchOrganizationUnitAction.default(organizationUnitId, { redirect: options?.redirect });
|
|
87
|
+
if (!result.success) throw new __thunderid_node.ThunderIDAPIError(JSON.stringify({
|
|
88
|
+
code: result.code,
|
|
89
|
+
message: { defaultValue: "Switching the organization unit failed" }
|
|
90
|
+
}), result.code, "nextjs", result.statusCode);
|
|
91
|
+
if (result.data.signInUrl) {
|
|
92
|
+
window.location.href = result.data.signInUrl;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const sessionId = await require_getSessionId.default();
|
|
96
|
+
const refreshedUser = (sessionId ? await require_getUserAction.default(sessionId) : void 0)?.data?.user ?? null;
|
|
97
|
+
if (refreshedUser) setUser(refreshedUser);
|
|
98
|
+
setCurrentOrganizationUnit(await require_getCurrentOrganizationUnitAction.default());
|
|
99
|
+
router.refresh();
|
|
100
|
+
return refreshedUser ?? void 0;
|
|
101
|
+
};
|
|
65
102
|
const handleSignIn = async (payload, request) => {
|
|
66
103
|
if (!signIn) throw new __thunderid_node.ThunderIDRuntimeError("`signIn` function is not available.", "ThunderIDClientProvider-handleSignIn-RuntimeError-001", "nextjs");
|
|
67
104
|
const result = await signIn(payload, request);
|
|
@@ -113,11 +150,16 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
113
150
|
applicationId,
|
|
114
151
|
baseUrl,
|
|
115
152
|
clearSession,
|
|
153
|
+
currentOrganizationUnit,
|
|
154
|
+
currentProject,
|
|
155
|
+
getCurrentOrganizationUnit: require_getCurrentOrganizationUnitAction.default,
|
|
116
156
|
isLoading,
|
|
117
157
|
isSignedIn,
|
|
118
158
|
organizationHandle,
|
|
119
159
|
preferences,
|
|
120
160
|
refreshToken,
|
|
161
|
+
setCurrentProject,
|
|
162
|
+
switchOrganizationUnit: handleSwitchOrganizationUnit,
|
|
121
163
|
scopes,
|
|
122
164
|
signIn: handleSignIn,
|
|
123
165
|
signInUrl,
|
|
@@ -135,7 +177,10 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
135
177
|
applicationId,
|
|
136
178
|
organizationHandle,
|
|
137
179
|
scopes,
|
|
138
|
-
preferences
|
|
180
|
+
preferences,
|
|
181
|
+
currentOrganizationUnit,
|
|
182
|
+
currentProject,
|
|
183
|
+
setCurrentProject
|
|
139
184
|
]);
|
|
140
185
|
const handleProfileUpdate = (payload) => {
|
|
141
186
|
setUser(payload);
|
|
@@ -145,6 +190,15 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
145
190
|
profile: payload
|
|
146
191
|
}));
|
|
147
192
|
};
|
|
193
|
+
/**
|
|
194
|
+
* Re-reads `/users/me` through the server-held session, so a change made outside the profile API,
|
|
195
|
+
* such as a recorded verification, shows.
|
|
196
|
+
*/
|
|
197
|
+
const revalidateProfile = async () => {
|
|
198
|
+
if (preferences?.user?.fetchUserProfile === false) return;
|
|
199
|
+
const result = await require_getUserProfileAction.default(await require_getSessionId.default() ?? "");
|
|
200
|
+
if (result.success) handleProfileUpdate(result.data.userProfile.profile);
|
|
201
|
+
};
|
|
148
202
|
const unsupported = (name) => {
|
|
149
203
|
return () => Promise.reject(new __thunderid_node.ThunderIDRuntimeError(`\`${name}\` is not supported in @thunderid/nextjs.`, `ThunderIDClientProvider-${name}-NotSupportedError-001`, "nextjs"));
|
|
150
204
|
};
|
|
@@ -154,10 +208,13 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
154
208
|
baseUrl,
|
|
155
209
|
clearSession,
|
|
156
210
|
clientId: void 0,
|
|
211
|
+
currentOrganizationUnit,
|
|
212
|
+
currentProject,
|
|
157
213
|
discovery: { wellKnown: null },
|
|
158
214
|
endpoints,
|
|
159
215
|
exchangeToken: unsupported("exchangeToken"),
|
|
160
216
|
getAccessToken: unsupported("getAccessToken"),
|
|
217
|
+
getCurrentOrganizationUnit: require_getCurrentOrganizationUnitAction.default,
|
|
161
218
|
getDecodedIdToken: unsupported("getDecodedIdToken"),
|
|
162
219
|
getGrantedPermissions: unsupported("getGrantedPermissions"),
|
|
163
220
|
getIdToken: unsupported("getIdToken"),
|
|
@@ -178,12 +235,14 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
178
235
|
recover: unsupported("recover"),
|
|
179
236
|
resolveFlowTemplateLiterals: (text) => text ?? "",
|
|
180
237
|
scopes,
|
|
238
|
+
setCurrentProject,
|
|
181
239
|
signIn: handleSignIn,
|
|
182
240
|
signInSilently: unsupported("signInSilently"),
|
|
183
241
|
signInUrl,
|
|
184
242
|
signOut: handleSignOut,
|
|
185
243
|
signUp: handleSignUp,
|
|
186
244
|
signUpUrl,
|
|
245
|
+
switchOrganizationUnit: handleSwitchOrganizationUnit,
|
|
187
246
|
user,
|
|
188
247
|
userSchema,
|
|
189
248
|
vendor: (0, __thunderid_node.getVendorPrefix)(vendor)
|
|
@@ -201,7 +260,10 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
201
260
|
user,
|
|
202
261
|
userSchema,
|
|
203
262
|
initialMeta,
|
|
204
|
-
vendor
|
|
263
|
+
vendor,
|
|
264
|
+
currentOrganizationUnit,
|
|
265
|
+
currentProject,
|
|
266
|
+
setCurrentProject
|
|
205
267
|
]);
|
|
206
268
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThunderIDContext.default.Provider, {
|
|
207
269
|
value: contextValue,
|
|
@@ -220,6 +282,7 @@ const ThunderIDClientProvider = ({ baseUrl, children, endpoints, signIn, clearSe
|
|
|
220
282
|
profile: userProfile,
|
|
221
283
|
userSchema,
|
|
222
284
|
onUpdateProfile: handleProfileUpdate,
|
|
285
|
+
revalidateProfile,
|
|
223
286
|
updateProfile,
|
|
224
287
|
children
|
|
225
288
|
}) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDProvider.cjs","names":["ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>>","reRenderCheckRef: RefObject<boolean>","router: AppRouterInstance","searchParams: ReadonlyURLSearchParams","code: string | null","state: string | null","result: {error?: string; redirectUrl?: string; success: boolean}","ThunderIDRuntimeError","result: any","contextValue: ThunderIDContextProps","reactContextValue: ReactThunderIDContextProps","fetchManagementFromServer","ThunderIDContext","ReactThunderIDContext","I18nProvider","FlowMetaProvider","fetchFlowMetaFromServer","ThemeProvider","FlowProvider","UserProvider"],"sources":["../../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {\n AttributeSchema,\n EmbeddedFlowExecuteRequestConfig,\n FlowMetadataResponse,\n generateFlattenedUserProfile,\n UpdateMeProfileConfig,\n User,\n UserProfile,\n ThunderIDRuntimeError,\n getVendorPrefix,\n} from '@thunderid/node';\nimport {\n I18nProvider,\n FlowMetaProvider,\n FlowProvider,\n UserProvider,\n ThemeProvider,\n ThunderIDContext as ReactThunderIDContext,\n ThunderIDContextProps as ReactThunderIDContextProps,\n ThunderIDProviderProps,\n} from '@thunderid/react';\nimport {ReadonlyURLSearchParams} from 'next/dist/client/components/navigation.react-server';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter, useSearchParams} from 'next/navigation';\nimport {FC, PropsWithChildren, RefObject, useEffect, useMemo, useRef, useState} from 'react';\nimport ThunderIDContext, {ThunderIDContextProps} from './ThunderIDContext';\nimport {RefreshResult} from '../../../server/actions/refreshToken';\nimport logger from '../../../utils/logger';\nimport fetchFlowMetaFromServer from '../../fetchFlowMetaFromServer';\nimport fetchManagementFromServer from '../../fetchManagementFromServer';\n\n/**\n * Props interface of {@link ThunderIDClientProvider}\n */\nexport type ThunderIDClientProviderProps = Partial<Omit<ThunderIDProviderProps, 'baseUrl' | 'clientId'>> &\n Pick<ThunderIDProviderProps, 'baseUrl' | 'clientId'> & {\n applicationId: ThunderIDContextProps['applicationId'];\n clearSession: () => Promise<void>;\n handleOAuthCallback: (\n code: string,\n state: string,\n ) => Promise<{error?: string; redirectUrl?: string; success: boolean}>;\n /**\n * Flow metadata fetched server-side ahead of time, seeding `FlowMetaProvider` so it can skip\n * its own initial client-side fetch (avoiding a flash of untranslated i18n keys).\n */\n initialMeta?: FlowMetadataResponse | null;\n isSignedIn: boolean;\n organizationHandle: ThunderIDContextProps['organizationHandle'];\n refreshToken: () => Promise<RefreshResult>;\n signIn: ThunderIDContextProps['signIn'];\n signOut: ThunderIDContextProps['signOut'];\n signUp: ThunderIDContextProps['signUp'];\n updateProfile: (\n requestConfig: UpdateMeProfileConfig,\n sessionId?: string,\n ) => Promise<{data: {user: User}; error: string; success: boolean}>;\n user: User | null;\n userProfile: UserProfile;\n userSchema?: Record<string, AttributeSchema> | null;\n };\n\nconst ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>> = ({\n baseUrl,\n children,\n endpoints,\n signIn,\n clearSession,\n refreshToken,\n signOut,\n signUp,\n handleOAuthCallback,\n preferences,\n isSignedIn,\n signInUrl,\n signUpUrl,\n user: _user,\n userProfile: _userProfile,\n userSchema: _userSchema = null,\n updateProfile,\n applicationId,\n organizationHandle,\n scopes,\n vendor,\n initialMeta = null,\n}: PropsWithChildren<ThunderIDClientProviderProps>) => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const router: AppRouterInstance = useRouter();\n const searchParams: ReadonlyURLSearchParams = useSearchParams();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [user, setUser] = useState<User | null>(_user);\n const [userProfile, setUserProfile] = useState<UserProfile>(_userProfile);\n const [userSchema, setUserSchema] = useState<Record<string, AttributeSchema> | null>(_userSchema);\n\n useEffect(() => {\n setUserProfile(_userProfile);\n }, [_userProfile]);\n\n useEffect(() => {\n setUserSchema(_userSchema);\n }, [_userSchema]);\n\n useEffect(() => {\n setUser(_user);\n }, [_user]);\n\n // Handle OAuth callback automatically\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n // Don't handle callback if already signed in\n if (isSignedIn) return;\n\n (async (): Promise<void> => {\n try {\n const code: string | null = searchParams.get('code');\n const state: string | null = searchParams.get('state');\n const error: string | null = searchParams.get('error');\n\n // Check for OAuth errors first\n if (error) {\n logger.error('[ThunderIDClientProvider] An error was received for the initiated sign-in request.');\n\n return;\n }\n\n // Handle OAuth callback if code and state are present\n if (code && state) {\n setIsLoading(true);\n\n const result: {error?: string; redirectUrl?: string; success: boolean} = await handleOAuthCallback(\n code,\n state,\n );\n\n if (result.success) {\n // Redirect to the success URL\n if (result.redirectUrl) {\n router.push(result.redirectUrl);\n } else {\n // Refresh the page to update authentication state\n window.location.reload();\n }\n } else {\n logger.error(\n `[ThunderIDClientProvider] An error occurred while signing in: ${result.error || 'Authentication failed'}`,\n );\n }\n }\n } catch (error) {\n logger.error('[ThunderIDClientProvider] Failed to handle OAuth callback:', error);\n }\n })();\n }, []);\n\n useEffect(() => {\n // Set loading to false when server has resolved authentication state\n setIsLoading(false);\n }, [isSignedIn, user]);\n\n const handleSignIn = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signIn) {\n throw new ThunderIDRuntimeError(\n '`signIn` function is not available.',\n 'ThunderIDClientProvider-handleSignIn-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signIn(payload, request);\n\n // Redirect based flow URL is sent as `signInUrl` in the response.\n // Use window.location.href instead of router.push() — the OAuth authorization\n // endpoint is on an external server, and router.push() would send RSC fetch\n // headers that the identity provider doesn't understand, causing a CORS error.\n if (result?.data?.signInUrl) {\n window.location.href = result.data.signInUrl;\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignInUrl` in the response.\n if (result?.data?.afterSignInUrl) {\n router.push(result.data.afterSignInUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignUp = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'ThunderIDClientProvider-handleSignUp-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signUp(payload, request);\n\n // Redirect based flow URL is sent as `signUpUrl` in the response.\n if (result?.data?.signUpUrl) {\n router.push(result.data.signUpUrl);\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignUpUrl` in the response.\n if (result?.data?.afterSignUpUrl) {\n router.push(result.data.afterSignUpUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignOut = async (): Promise<any> => {\n logger.debug('[ThunderIDClientProvider][handleSignOut] `handleSignOut` called.');\n\n try {\n const result: any = await signOut();\n\n logger.debug('[ThunderIDClientProvider][handleSignOut] Sign out result:', result);\n\n if (result?.data?.afterSignOutUrl) {\n router.push(result.data.afterSignOutUrl);\n\n return {location: result.data.afterSignOutUrl, redirected: true};\n }\n\n if (result?.error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error result was returned during signing the user out with a button click:',\n result.error,\n );\n }\n\n return result?.data ?? result;\n } catch (error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error occurred during signing the user out with a button click:',\n error,\n );\n\n return undefined;\n }\n };\n\n const contextValue: ThunderIDContextProps = useMemo(\n () => ({\n applicationId,\n baseUrl,\n clearSession,\n isLoading,\n isSignedIn,\n organizationHandle,\n preferences,\n refreshToken,\n scopes,\n signIn: handleSignIn,\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n }),\n [\n baseUrl,\n user,\n isSignedIn,\n isLoading,\n signInUrl,\n signUpUrl,\n applicationId,\n organizationHandle,\n scopes,\n preferences,\n ],\n );\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile) => ({\n ...prev,\n flattenedProfile: generateFlattenedUserProfile(payload),\n profile: payload,\n }));\n };\n\n // Bridge into @thunderid/react's own ThunderIDContext. Internal react components rendered by\n // BaseSignIn/BaseSignUp — most notably FlowMetaProvider, which fetches `/flow/meta` and injects\n // its i18n bundle — call react's `useThunderID()` directly. Without this bridge they'd only see\n // react's context default (applicationId/baseUrl undefined, isInitialized false), so the meta\n // fetch would never fire and flow labels would render as untranslated i18n keys. Fields with no\n // nextjs equivalent (token/http helpers meant for direct browser API calls) are stubbed out,\n // since nextjs routes those operations through server actions instead.\n const unsupported = (name: string): (() => Promise<never>) => {\n return () =>\n Promise.reject(\n new ThunderIDRuntimeError(\n `\\`${name}\\` is not supported in @thunderid/nextjs.`,\n `ThunderIDClientProvider-${name}-NotSupportedError-001`,\n 'nextjs',\n ),\n );\n };\n\n const reactContextValue: ReactThunderIDContextProps = useMemo(\n () => ({\n afterSignInUrl: undefined,\n applicationId,\n baseUrl,\n clearSession,\n clientId: undefined,\n discovery: {wellKnown: null},\n // Only the management collection overrides arrive here, so the admin hooks build the URLs the\n // management server action accepts.\n endpoints,\n exchangeToken: unsupported('exchangeToken'),\n getAccessToken: unsupported('getAccessToken'),\n getDecodedIdToken: unsupported('getDecodedIdToken'),\n // The Next.js useGrantedPermissions reads them through a server action instead.\n getGrantedPermissions: unsupported('getGrantedPermissions'),\n getIdToken: unsupported('getIdToken'),\n getStorageManager: () => Promise.resolve(null),\n http: {\n // The admin components and hooks send management requests through a server action that adds\n // the server-held access token, so the token never reaches the browser.\n fetcher: fetchManagementFromServer,\n request: unsupported('http.request'),\n requestAll: unsupported('http.requestAll'),\n },\n instanceId: 0,\n isInitialized: !isLoading,\n isLoading,\n isMetaLoading: false,\n isSignedIn,\n meta: initialMeta ?? null,\n organizationHandle,\n reInitialize: unsupported('reInitialize'),\n recover: unsupported('recover'),\n resolveFlowTemplateLiterals: (text: string | undefined): string => text ?? '',\n scopes,\n signIn: handleSignIn,\n signInSilently: unsupported('signInSilently'),\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n userSchema,\n vendor: getVendorPrefix(vendor),\n }),\n [\n applicationId,\n baseUrl,\n clearSession,\n endpoints,\n isLoading,\n isSignedIn,\n organizationHandle,\n scopes,\n signInUrl,\n signUpUrl,\n user,\n userSchema,\n initialMeta,\n vendor,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={contextValue}>\n <ReactThunderIDContext.Provider value={reactContextValue}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider\n enabled={preferences?.resolveFromMeta !== false}\n initialMeta={initialMeta}\n fetchMeta={fetchFlowMetaFromServer}\n >\n <ThemeProvider theme={preferences?.theme?.overrides} mode={preferences?.theme?.mode}>\n <FlowProvider>\n <UserProvider\n profile={userProfile}\n userSchema={userSchema}\n onUpdateProfile={handleProfileUpdate}\n updateProfile={updateProfile}\n >\n {children}\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ReactThunderIDContext.Provider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDClientProvider;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThunderIDProvider.cjs","names":["ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>>","reRenderCheckRef: RefObject<boolean>","router: AppRouterInstance","searchParams: ReadonlyURLSearchParams","code: string | null","state: string | null","result: {error?: string; redirectUrl?: string; success: boolean}","result: SwitchOrganizationUnitActionResult","switchOrganizationUnitAction","ThunderIDAPIError","sessionId: string | undefined","getSessionId","refreshedUser: User | null","getUserAction","getCurrentOrganizationUnitAction","ThunderIDRuntimeError","result: any","contextValue: ThunderIDContextProps","result: Awaited<ReturnType<typeof getUserProfileAction>>","getUserProfileAction","reactContextValue: ReactThunderIDContextProps","fetchManagementFromServer","ThunderIDContext","ReactThunderIDContext","I18nProvider","FlowMetaProvider","fetchFlowMetaFromServer","ThemeProvider","FlowProvider","UserProvider"],"sources":["../../../../../src/client/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use client';\n\nimport {\n AttributeSchema,\n EmbeddedFlowExecuteRequestConfig,\n FlowMetadataResponse,\n generateFlattenedUserProfile,\n UpdateMeProfileConfig,\n User,\n UserProfile,\n ThunderIDRuntimeError,\n getVendorPrefix,\n CurrentOrganizationUnit,\n SwitchOrganizationUnitOptions,\n ThunderIDAPIError,\n} from '@thunderid/node';\nimport {\n I18nProvider,\n FlowMetaProvider,\n FlowProvider,\n UserProvider,\n ThemeProvider,\n ThunderIDContext as ReactThunderIDContext,\n ThunderIDContextProps as ReactThunderIDContextProps,\n ThunderIDProviderProps,\n useCurrentProjectState,\n} from '@thunderid/react';\nimport {ReadonlyURLSearchParams} from 'next/dist/client/components/navigation.react-server';\nimport {AppRouterInstance} from 'next/dist/shared/lib/app-router-context.shared-runtime';\nimport {useRouter, useSearchParams} from 'next/navigation';\nimport {FC, PropsWithChildren, RefObject, useEffect, useMemo, useRef, useState} from 'react';\nimport ThunderIDContext, {ThunderIDContextProps} from './ThunderIDContext';\nimport getCurrentOrganizationUnitAction from '../../../server/actions/account/getCurrentOrganizationUnitAction';\nimport getUserAction from '../../../server/actions/account/getUserAction';\nimport getUserProfileAction from '../../../server/actions/account/getUserProfileAction';\nimport switchOrganizationUnitAction, {\n SwitchOrganizationUnitActionResult,\n} from '../../../server/actions/auth/switchOrganizationUnitAction';\nimport getSessionId from '../../../server/actions/getSessionId';\nimport {RefreshResult} from '../../../server/actions/refreshToken';\nimport logger from '../../../utils/logger';\nimport fetchFlowMetaFromServer from '../../fetchFlowMetaFromServer';\nimport fetchManagementFromServer from '../../fetchManagementFromServer';\n\n/**\n * Props interface of {@link ThunderIDClientProvider}\n */\nexport type ThunderIDClientProviderProps = Partial<Omit<ThunderIDProviderProps, 'baseUrl' | 'clientId'>> &\n Pick<ThunderIDProviderProps, 'baseUrl' | 'clientId'> & {\n applicationId: ThunderIDContextProps['applicationId'];\n clearSession: () => Promise<void>;\n handleOAuthCallback: (\n code: string,\n state: string,\n ) => Promise<{error?: string; redirectUrl?: string; success: boolean}>;\n /**\n * Flow metadata fetched server-side ahead of time, seeding `FlowMetaProvider` so it can skip\n * its own initial client-side fetch (avoiding a flash of untranslated i18n keys).\n */\n initialMeta?: FlowMetadataResponse | null;\n isSignedIn: boolean;\n organizationHandle: ThunderIDContextProps['organizationHandle'];\n refreshToken: () => Promise<RefreshResult>;\n signIn: ThunderIDContextProps['signIn'];\n signOut: ThunderIDContextProps['signOut'];\n signUp: ThunderIDContextProps['signUp'];\n updateProfile: (\n requestConfig: UpdateMeProfileConfig,\n sessionId?: string,\n ) => Promise<{data: {user: User}; error: string; success: boolean}>;\n user: User | null;\n userProfile: UserProfile;\n userSchema?: Record<string, AttributeSchema> | null;\n };\n\nconst ThunderIDClientProvider: FC<PropsWithChildren<ThunderIDClientProviderProps>> = ({\n baseUrl,\n children,\n endpoints,\n signIn,\n clearSession,\n refreshToken,\n signOut,\n signUp,\n handleOAuthCallback,\n preferences,\n isSignedIn,\n signInUrl,\n signUpUrl,\n user: _user,\n userProfile: _userProfile,\n userSchema: _userSchema = null,\n updateProfile,\n applicationId,\n organizationHandle,\n scopes,\n vendor,\n initialMeta = null,\n}: PropsWithChildren<ThunderIDClientProviderProps>) => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const router: AppRouterInstance = useRouter();\n const searchParams: ReadonlyURLSearchParams = useSearchParams();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [user, setUser] = useState<User | null>(_user);\n const [userProfile, setUserProfile] = useState<UserProfile>(_userProfile);\n const [userSchema, setUserSchema] = useState<Record<string, AttributeSchema> | null>(_userSchema);\n\n useEffect(() => {\n setUserProfile(_userProfile);\n }, [_userProfile]);\n\n useEffect(() => {\n setUserSchema(_userSchema);\n }, [_userSchema]);\n\n useEffect(() => {\n setUser(_user);\n }, [_user]);\n\n // Handle OAuth callback automatically\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n // Don't handle callback if already signed in\n if (isSignedIn) return;\n\n (async (): Promise<void> => {\n try {\n const code: string | null = searchParams.get('code');\n const state: string | null = searchParams.get('state');\n const error: string | null = searchParams.get('error');\n\n // Check for OAuth errors first\n if (error) {\n logger.error('[ThunderIDClientProvider] An error was received for the initiated sign-in request.');\n\n return;\n }\n\n // Handle OAuth callback if code and state are present\n if (code && state) {\n setIsLoading(true);\n\n const result: {error?: string; redirectUrl?: string; success: boolean} = await handleOAuthCallback(\n code,\n state,\n );\n\n if (result.success) {\n // Redirect to the success URL\n if (result.redirectUrl) {\n router.push(result.redirectUrl);\n } else {\n // Refresh the page to update authentication state\n window.location.reload();\n }\n } else {\n logger.error(\n `[ThunderIDClientProvider] An error occurred while signing in: ${result.error || 'Authentication failed'}`,\n );\n }\n }\n } catch (error) {\n logger.error('[ThunderIDClientProvider] Failed to handle OAuth callback:', error);\n }\n })();\n }, []);\n\n useEffect(() => {\n // Set loading to false when server has resolved authentication state\n setIsLoading(false);\n }, [isSignedIn, user]);\n\n const [currentOrganizationUnit, setCurrentOrganizationUnit] = useState<CurrentOrganizationUnit | null>(null);\n // The current project is client-side context for the management UI, kept in the browser like the\n // React SDK's: it changes no session, cookie or token.\n const {currentProject, setCurrentProject} = useCurrentProjectState(getVendorPrefix(vendor));\n\n useEffect(() => {\n if (!isSignedIn) {\n setCurrentOrganizationUnit(null);\n\n return;\n }\n\n getCurrentOrganizationUnitAction()\n .then(setCurrentOrganizationUnit)\n .catch(() => setCurrentOrganizationUnit(null));\n }, [isSignedIn, user]);\n\n /**\n * Signs in again bounded to another organization unit through a server action. Redirect mode sends the\n * browser to the unit's authorization endpoint and resolves with `undefined`; embedded mode replaces\n * the session in place and resolves with the refreshed user. A failure keeps the previous session and\n * rejects with an error whose code is one of `OrganizationUnitSwitchErrorCodes`.\n */\n const handleSwitchOrganizationUnit = async (\n organizationUnitId: string,\n options?: SwitchOrganizationUnitOptions,\n ): Promise<User | undefined> => {\n const result: SwitchOrganizationUnitActionResult = await switchOrganizationUnitAction(organizationUnitId, {\n redirect: options?.redirect,\n });\n\n if (!result.success) {\n throw new ThunderIDAPIError(\n JSON.stringify({code: result.code, message: {defaultValue: 'Switching the organization unit failed'}}),\n result.code,\n 'nextjs',\n result.statusCode,\n );\n }\n\n if (result.data.signInUrl) {\n // The authorization endpoint is on the identity server, so leave the app rather than route.\n window.location.href = result.data.signInUrl;\n\n return undefined;\n }\n\n const sessionId: string | undefined = await getSessionId();\n const refreshed: Awaited<ReturnType<typeof getUserAction>> | undefined = sessionId\n ? await getUserAction(sessionId)\n : undefined;\n const refreshedUser: User | null = refreshed?.data?.user ?? null;\n\n if (refreshedUser) {\n setUser(refreshedUser);\n }\n\n setCurrentOrganizationUnit(await getCurrentOrganizationUnitAction());\n router.refresh();\n\n return refreshedUser ?? undefined;\n };\n\n const handleSignIn = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signIn) {\n throw new ThunderIDRuntimeError(\n '`signIn` function is not available.',\n 'ThunderIDClientProvider-handleSignIn-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signIn(payload, request);\n\n // Redirect based flow URL is sent as `signInUrl` in the response.\n // Use window.location.href instead of router.push() — the OAuth authorization\n // endpoint is on an external server, and router.push() would send RSC fetch\n // headers that the identity provider doesn't understand, causing a CORS error.\n if (result?.data?.signInUrl) {\n window.location.href = result.data.signInUrl;\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignInUrl` in the response.\n if (result?.data?.afterSignInUrl) {\n router.push(result.data.afterSignInUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignUp = async (payload: any, request: EmbeddedFlowExecuteRequestConfig): Promise<any> => {\n if (!signUp) {\n throw new ThunderIDRuntimeError(\n '`signUp` function is not available.',\n 'ThunderIDClientProvider-handleSignUp-RuntimeError-001',\n 'nextjs',\n );\n }\n\n const result: any = await signUp(payload, request);\n\n // Redirect based flow URL is sent as `signUpUrl` in the response.\n if (result?.data?.signUpUrl) {\n router.push(result.data.signUpUrl);\n\n return undefined;\n }\n\n // After the Embedded flow is successful, the URL to navigate next is sent as `afterSignUpUrl` in the response.\n if (result?.data?.afterSignUpUrl) {\n router.push(result.data.afterSignUpUrl);\n\n return undefined;\n }\n\n if (result?.error) {\n throw new Error(result.error);\n }\n\n return result?.data ?? result;\n };\n\n const handleSignOut = async (): Promise<any> => {\n logger.debug('[ThunderIDClientProvider][handleSignOut] `handleSignOut` called.');\n\n try {\n const result: any = await signOut();\n\n logger.debug('[ThunderIDClientProvider][handleSignOut] Sign out result:', result);\n\n if (result?.data?.afterSignOutUrl) {\n router.push(result.data.afterSignOutUrl);\n\n return {location: result.data.afterSignOutUrl, redirected: true};\n }\n\n if (result?.error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error result was returned during signing the user out with a button click:',\n result.error,\n );\n }\n\n return result?.data ?? result;\n } catch (error) {\n logger.error(\n '[ThunderIDClientProvider][handleSignOut] Error occurred during signing the user out with a button click:',\n error,\n );\n\n return undefined;\n }\n };\n\n const contextValue: ThunderIDContextProps = useMemo(\n () => ({\n applicationId,\n baseUrl,\n clearSession,\n currentOrganizationUnit,\n currentProject,\n getCurrentOrganizationUnit: getCurrentOrganizationUnitAction,\n isLoading,\n isSignedIn,\n organizationHandle,\n preferences,\n refreshToken,\n setCurrentProject,\n switchOrganizationUnit: handleSwitchOrganizationUnit,\n scopes,\n signIn: handleSignIn,\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n user,\n }),\n [\n baseUrl,\n user,\n isSignedIn,\n isLoading,\n signInUrl,\n signUpUrl,\n applicationId,\n organizationHandle,\n scopes,\n preferences,\n currentOrganizationUnit,\n currentProject,\n setCurrentProject,\n ],\n );\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile) => ({\n ...prev,\n flattenedProfile: generateFlattenedUserProfile(payload),\n profile: payload,\n }));\n };\n\n /**\n * Re-reads `/users/me` through the server-held session, so a change made outside the profile API,\n * such as a recorded verification, shows.\n */\n const revalidateProfile = async (): Promise<void> => {\n if (preferences?.user?.fetchUserProfile === false) return;\n\n const result: Awaited<ReturnType<typeof getUserProfileAction>> = await getUserProfileAction(\n (await getSessionId()) ?? '',\n );\n\n if (result.success) {\n handleProfileUpdate(result.data.userProfile.profile);\n }\n };\n\n // Bridge into @thunderid/react's own ThunderIDContext. Internal react components rendered by\n // BaseSignIn/BaseSignUp — most notably FlowMetaProvider, which fetches `/flow/meta` and injects\n // its i18n bundle — call react's `useThunderID()` directly. Without this bridge they'd only see\n // react's context default (applicationId/baseUrl undefined, isInitialized false), so the meta\n // fetch would never fire and flow labels would render as untranslated i18n keys. Fields with no\n // nextjs equivalent (token/http helpers meant for direct browser API calls) are stubbed out,\n // since nextjs routes those operations through server actions instead.\n const unsupported = (name: string): (() => Promise<never>) => {\n return () =>\n Promise.reject(\n new ThunderIDRuntimeError(\n `\\`${name}\\` is not supported in @thunderid/nextjs.`,\n `ThunderIDClientProvider-${name}-NotSupportedError-001`,\n 'nextjs',\n ),\n );\n };\n\n const reactContextValue: ReactThunderIDContextProps = useMemo(\n () => ({\n afterSignInUrl: undefined,\n applicationId,\n baseUrl,\n clearSession,\n clientId: undefined,\n currentOrganizationUnit,\n currentProject,\n discovery: {wellKnown: null},\n // Only the management collection overrides arrive here, so the admin hooks build the URLs the\n // management server action accepts.\n endpoints,\n exchangeToken: unsupported('exchangeToken'),\n getAccessToken: unsupported('getAccessToken'),\n getCurrentOrganizationUnit: getCurrentOrganizationUnitAction,\n getDecodedIdToken: unsupported('getDecodedIdToken'),\n // The Next.js useGrantedPermissions reads them through a server action instead.\n getGrantedPermissions: unsupported('getGrantedPermissions'),\n getIdToken: unsupported('getIdToken'),\n getStorageManager: () => Promise.resolve(null),\n http: {\n // The admin components and hooks send management requests through a server action that adds\n // the server-held access token, so the token never reaches the browser.\n fetcher: fetchManagementFromServer,\n request: unsupported('http.request'),\n requestAll: unsupported('http.requestAll'),\n },\n instanceId: 0,\n isInitialized: !isLoading,\n isLoading,\n isMetaLoading: false,\n isSignedIn,\n meta: initialMeta ?? null,\n organizationHandle,\n reInitialize: unsupported('reInitialize'),\n recover: unsupported('recover'),\n resolveFlowTemplateLiterals: (text: string | undefined): string => text ?? '',\n scopes,\n setCurrentProject,\n signIn: handleSignIn,\n signInSilently: unsupported('signInSilently'),\n signInUrl,\n signOut: handleSignOut,\n signUp: handleSignUp,\n signUpUrl,\n switchOrganizationUnit: handleSwitchOrganizationUnit,\n user,\n userSchema,\n vendor: getVendorPrefix(vendor),\n }),\n [\n applicationId,\n baseUrl,\n clearSession,\n endpoints,\n isLoading,\n isSignedIn,\n organizationHandle,\n scopes,\n signInUrl,\n signUpUrl,\n user,\n userSchema,\n initialMeta,\n vendor,\n currentOrganizationUnit,\n currentProject,\n setCurrentProject,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={contextValue}>\n <ReactThunderIDContext.Provider value={reactContextValue}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider\n enabled={preferences?.resolveFromMeta !== false}\n initialMeta={initialMeta}\n fetchMeta={fetchFlowMetaFromServer}\n >\n <ThemeProvider theme={preferences?.theme?.overrides} mode={preferences?.theme?.mode}>\n <FlowProvider>\n <UserProvider\n profile={userProfile}\n userSchema={userSchema}\n onUpdateProfile={handleProfileUpdate}\n revalidateProfile={revalidateProfile}\n updateProfile={updateProfile}\n >\n {children}\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ReactThunderIDContext.Provider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDClientProvider;\n"],"mappings":"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"}
|
|
@@ -9,30 +9,42 @@ const require_DeviceGrant = require('./components/auth/DeviceGrant/DeviceGrant.c
|
|
|
9
9
|
const require_SignOutButton = require('./components/auth/buttons/SignOutButton/SignOutButton.cjs');
|
|
10
10
|
const require_User = require('./components/account/User/User.cjs');
|
|
11
11
|
const require_SignUp = require('./components/auth/SignUp/SignUp.cjs');
|
|
12
|
+
const require_VerifyAttribute = require('./components/account/VerifyAttribute/VerifyAttribute.cjs');
|
|
12
13
|
const require_UserProfile = require('./components/account/UserProfile/UserProfile.cjs');
|
|
13
14
|
const require_UserDropdown = require('./components/account/UserDropdown/UserDropdown.cjs');
|
|
14
15
|
const require_UserAvatar = require('./components/account/UserAvatar/UserAvatar.cjs');
|
|
15
16
|
const require_ChangeCredential = require('./components/account/ChangeCredential/ChangeCredential.cjs');
|
|
17
|
+
const require_OrganizationUnitSwitcher = require('./components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs');
|
|
16
18
|
const require_UserSelect = require('./components/primitives/UserSelect/UserSelect.cjs');
|
|
17
19
|
const require_AuthFlowSelect = require('./components/primitives/AuthFlowSelect/AuthFlowSelect.cjs');
|
|
18
20
|
const require_UserTypeSelect = require('./components/primitives/UserTypeSelect/UserTypeSelect.cjs');
|
|
19
|
-
const require_UserList = require('./components/
|
|
20
|
-
const require_UserCreate = require('./components/
|
|
21
|
-
const require_UserDetails = require('./components/
|
|
22
|
-
const require_GroupList = require('./components/
|
|
23
|
-
const require_GroupCreate = require('./components/
|
|
24
|
-
const require_GroupMembers = require('./components/
|
|
25
|
-
const require_RoleList = require('./components/
|
|
26
|
-
const require_RoleCreate = require('./components/
|
|
27
|
-
const require_RoleAssignments = require('./components/
|
|
28
|
-
const require_RolePermissions = require('./components/
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
21
|
+
const require_UserList = require('./components/management/UserList/UserList.cjs');
|
|
22
|
+
const require_UserCreate = require('./components/management/UserCreate/UserCreate.cjs');
|
|
23
|
+
const require_UserDetails = require('./components/management/UserDetails/UserDetails.cjs');
|
|
24
|
+
const require_GroupList = require('./components/management/GroupList/GroupList.cjs');
|
|
25
|
+
const require_GroupCreate = require('./components/management/GroupCreate/GroupCreate.cjs');
|
|
26
|
+
const require_GroupMembers = require('./components/management/GroupMembers/GroupMembers.cjs');
|
|
27
|
+
const require_RoleList = require('./components/management/RoleList/RoleList.cjs');
|
|
28
|
+
const require_RoleCreate = require('./components/management/RoleCreate/RoleCreate.cjs');
|
|
29
|
+
const require_RoleAssignments = require('./components/management/RoleAssignments/RoleAssignments.cjs');
|
|
30
|
+
const require_RolePermissions = require('./components/management/RolePermissions/RolePermissions.cjs');
|
|
31
|
+
const require_GroupDetails = require('./components/management/GroupDetails/GroupDetails.cjs');
|
|
32
|
+
const require_RoleDetails = require('./components/management/RoleDetails/RoleDetails.cjs');
|
|
33
|
+
const require_AgentList = require('./components/management/AgentList/AgentList.cjs');
|
|
34
|
+
const require_AgentCreate = require('./components/management/AgentCreate/AgentCreate.cjs');
|
|
35
|
+
const require_AgentDetails = require('./components/management/AgentDetails/AgentDetails.cjs');
|
|
36
|
+
const require_ApplicationList = require('./components/management/ApplicationList/ApplicationList.cjs');
|
|
37
|
+
const require_ApplicationCreate = require('./components/management/ApplicationCreate/ApplicationCreate.cjs');
|
|
38
|
+
const require_ApplicationDetails = require('./components/management/ApplicationDetails/ApplicationDetails.cjs');
|
|
39
|
+
const require_ProjectList = require('./components/management/ProjectList/ProjectList.cjs');
|
|
40
|
+
const require_ProjectCreate = require('./components/management/ProjectCreate/ProjectCreate.cjs');
|
|
41
|
+
const require_ProjectDetails = require('./components/management/ProjectDetails/ProjectDetails.cjs');
|
|
42
|
+
const require_ProjectSwitcher = require('./components/management/ProjectSwitcher/ProjectSwitcher.cjs');
|
|
43
|
+
const require_OrganizationUnitList = require('./components/management/OrganizationUnitList/OrganizationUnitList.cjs');
|
|
44
|
+
const require_OrganizationUnitCreate = require('./components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs');
|
|
45
|
+
const require_OrganizationUnitDetails = require('./components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs');
|
|
46
|
+
const require_SharingPolicies = require('./components/management/SharingPolicies/SharingPolicies.cjs');
|
|
35
47
|
const require_useGrantedPermissions = require('./hooks/management/useGrantedPermissions.cjs');
|
|
36
|
-
require('./
|
|
48
|
+
require('./management.cjs');
|
|
37
49
|
let __thunderid_react = require("@thunderid/react");
|
|
38
50
|
__thunderid_react = require_rolldown_runtime.__toESM(__thunderid_react);
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -16,29 +16,41 @@ const require_DeviceGrant = require('./client/components/auth/DeviceGrant/Device
|
|
|
16
16
|
const require_SignOutButton = require('./client/components/auth/buttons/SignOutButton/SignOutButton.cjs');
|
|
17
17
|
const require_User = require('./client/components/account/User/User.cjs');
|
|
18
18
|
const require_SignUp = require('./client/components/auth/SignUp/SignUp.cjs');
|
|
19
|
+
const require_VerifyAttribute = require('./client/components/account/VerifyAttribute/VerifyAttribute.cjs');
|
|
19
20
|
const require_UserProfile = require('./client/components/account/UserProfile/UserProfile.cjs');
|
|
20
21
|
const require_UserDropdown = require('./client/components/account/UserDropdown/UserDropdown.cjs');
|
|
21
22
|
const require_UserAvatar = require('./client/components/account/UserAvatar/UserAvatar.cjs');
|
|
22
23
|
const require_ChangeCredential = require('./client/components/account/ChangeCredential/ChangeCredential.cjs');
|
|
24
|
+
const require_OrganizationUnitSwitcher = require('./client/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs');
|
|
23
25
|
const require_UserSelect = require('./client/components/primitives/UserSelect/UserSelect.cjs');
|
|
24
26
|
const require_AuthFlowSelect = require('./client/components/primitives/AuthFlowSelect/AuthFlowSelect.cjs');
|
|
25
27
|
const require_UserTypeSelect = require('./client/components/primitives/UserTypeSelect/UserTypeSelect.cjs');
|
|
26
|
-
const require_UserList = require('./client/components/
|
|
27
|
-
const require_UserCreate = require('./client/components/
|
|
28
|
-
const require_UserDetails = require('./client/components/
|
|
29
|
-
const require_GroupList = require('./client/components/
|
|
30
|
-
const require_GroupCreate = require('./client/components/
|
|
31
|
-
const require_GroupMembers = require('./client/components/
|
|
32
|
-
const require_RoleList = require('./client/components/
|
|
33
|
-
const require_RoleCreate = require('./client/components/
|
|
34
|
-
const require_RoleAssignments = require('./client/components/
|
|
35
|
-
const require_RolePermissions = require('./client/components/
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const
|
|
28
|
+
const require_UserList = require('./client/components/management/UserList/UserList.cjs');
|
|
29
|
+
const require_UserCreate = require('./client/components/management/UserCreate/UserCreate.cjs');
|
|
30
|
+
const require_UserDetails = require('./client/components/management/UserDetails/UserDetails.cjs');
|
|
31
|
+
const require_GroupList = require('./client/components/management/GroupList/GroupList.cjs');
|
|
32
|
+
const require_GroupCreate = require('./client/components/management/GroupCreate/GroupCreate.cjs');
|
|
33
|
+
const require_GroupMembers = require('./client/components/management/GroupMembers/GroupMembers.cjs');
|
|
34
|
+
const require_RoleList = require('./client/components/management/RoleList/RoleList.cjs');
|
|
35
|
+
const require_RoleCreate = require('./client/components/management/RoleCreate/RoleCreate.cjs');
|
|
36
|
+
const require_RoleAssignments = require('./client/components/management/RoleAssignments/RoleAssignments.cjs');
|
|
37
|
+
const require_RolePermissions = require('./client/components/management/RolePermissions/RolePermissions.cjs');
|
|
38
|
+
const require_GroupDetails = require('./client/components/management/GroupDetails/GroupDetails.cjs');
|
|
39
|
+
const require_RoleDetails = require('./client/components/management/RoleDetails/RoleDetails.cjs');
|
|
40
|
+
const require_AgentList = require('./client/components/management/AgentList/AgentList.cjs');
|
|
41
|
+
const require_AgentCreate = require('./client/components/management/AgentCreate/AgentCreate.cjs');
|
|
42
|
+
const require_AgentDetails = require('./client/components/management/AgentDetails/AgentDetails.cjs');
|
|
43
|
+
const require_ApplicationList = require('./client/components/management/ApplicationList/ApplicationList.cjs');
|
|
44
|
+
const require_ApplicationCreate = require('./client/components/management/ApplicationCreate/ApplicationCreate.cjs');
|
|
45
|
+
const require_ApplicationDetails = require('./client/components/management/ApplicationDetails/ApplicationDetails.cjs');
|
|
46
|
+
const require_ProjectList = require('./client/components/management/ProjectList/ProjectList.cjs');
|
|
47
|
+
const require_ProjectCreate = require('./client/components/management/ProjectCreate/ProjectCreate.cjs');
|
|
48
|
+
const require_ProjectDetails = require('./client/components/management/ProjectDetails/ProjectDetails.cjs');
|
|
49
|
+
const require_ProjectSwitcher = require('./client/components/management/ProjectSwitcher/ProjectSwitcher.cjs');
|
|
50
|
+
const require_OrganizationUnitList = require('./client/components/management/OrganizationUnitList/OrganizationUnitList.cjs');
|
|
51
|
+
const require_OrganizationUnitCreate = require('./client/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs');
|
|
52
|
+
const require_OrganizationUnitDetails = require('./client/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs');
|
|
53
|
+
const require_SharingPolicies = require('./client/components/management/SharingPolicies/SharingPolicies.cjs');
|
|
42
54
|
const require_useGrantedPermissions = require('./client/hooks/management/useGrantedPermissions.cjs');
|
|
43
55
|
require('./client/index.cjs');
|
|
44
56
|
let __thunderid_react = require("@thunderid/react");
|
|
@@ -93,6 +105,12 @@ Object.defineProperty(exports, 'BaseGroupCreate', {
|
|
|
93
105
|
return __thunderid_react.BaseGroupCreate;
|
|
94
106
|
}
|
|
95
107
|
});
|
|
108
|
+
Object.defineProperty(exports, 'BaseGroupDetails', {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () {
|
|
111
|
+
return __thunderid_react.BaseGroupDetails;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
96
114
|
Object.defineProperty(exports, 'BaseGroupList', {
|
|
97
115
|
enumerable: true,
|
|
98
116
|
get: function () {
|
|
@@ -105,6 +123,48 @@ Object.defineProperty(exports, 'BaseGroupMembers', {
|
|
|
105
123
|
return __thunderid_react.BaseGroupMembers;
|
|
106
124
|
}
|
|
107
125
|
});
|
|
126
|
+
Object.defineProperty(exports, 'BaseOrganizationUnitCreate', {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function () {
|
|
129
|
+
return __thunderid_react.BaseOrganizationUnitCreate;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperty(exports, 'BaseOrganizationUnitDetails', {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function () {
|
|
135
|
+
return __thunderid_react.BaseOrganizationUnitDetails;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
Object.defineProperty(exports, 'BaseOrganizationUnitList', {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function () {
|
|
141
|
+
return __thunderid_react.BaseOrganizationUnitList;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(exports, 'BaseProjectCreate', {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function () {
|
|
147
|
+
return __thunderid_react.BaseProjectCreate;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(exports, 'BaseProjectDetails', {
|
|
151
|
+
enumerable: true,
|
|
152
|
+
get: function () {
|
|
153
|
+
return __thunderid_react.BaseProjectDetails;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
Object.defineProperty(exports, 'BaseProjectList', {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: function () {
|
|
159
|
+
return __thunderid_react.BaseProjectList;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
Object.defineProperty(exports, 'BaseProjectSwitcher', {
|
|
163
|
+
enumerable: true,
|
|
164
|
+
get: function () {
|
|
165
|
+
return __thunderid_react.BaseProjectSwitcher;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
108
168
|
Object.defineProperty(exports, 'BaseRoleAssignments', {
|
|
109
169
|
enumerable: true,
|
|
110
170
|
get: function () {
|
|
@@ -117,6 +177,12 @@ Object.defineProperty(exports, 'BaseRoleCreate', {
|
|
|
117
177
|
return __thunderid_react.BaseRoleCreate;
|
|
118
178
|
}
|
|
119
179
|
});
|
|
180
|
+
Object.defineProperty(exports, 'BaseRoleDetails', {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function () {
|
|
183
|
+
return __thunderid_react.BaseRoleDetails;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
120
186
|
Object.defineProperty(exports, 'BaseRoleList', {
|
|
121
187
|
enumerable: true,
|
|
122
188
|
get: function () {
|
|
@@ -129,6 +195,12 @@ Object.defineProperty(exports, 'BaseRolePermissions', {
|
|
|
129
195
|
return __thunderid_react.BaseRolePermissions;
|
|
130
196
|
}
|
|
131
197
|
});
|
|
198
|
+
Object.defineProperty(exports, 'BaseSharingPolicies', {
|
|
199
|
+
enumerable: true,
|
|
200
|
+
get: function () {
|
|
201
|
+
return __thunderid_react.BaseSharingPolicies;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
132
204
|
Object.defineProperty(exports, 'BaseUserCreate', {
|
|
133
205
|
enumerable: true,
|
|
134
206
|
get: function () {
|
|
@@ -150,12 +222,23 @@ Object.defineProperty(exports, 'BaseUserList', {
|
|
|
150
222
|
exports.ChangeCredential = require_ChangeCredential.default;
|
|
151
223
|
exports.DeviceGrant = require_DeviceGrant.default;
|
|
152
224
|
exports.GroupCreate = require_GroupCreate.default;
|
|
225
|
+
exports.GroupDetails = require_GroupDetails.default;
|
|
153
226
|
exports.GroupList = require_GroupList.default;
|
|
154
227
|
exports.GroupMembers = require_GroupMembers.default;
|
|
228
|
+
exports.OrganizationUnitCreate = require_OrganizationUnitCreate.default;
|
|
229
|
+
exports.OrganizationUnitDetails = require_OrganizationUnitDetails.default;
|
|
230
|
+
exports.OrganizationUnitList = require_OrganizationUnitList.default;
|
|
231
|
+
exports.OrganizationUnitSwitcher = require_OrganizationUnitSwitcher.default;
|
|
232
|
+
exports.ProjectCreate = require_ProjectCreate.default;
|
|
233
|
+
exports.ProjectDetails = require_ProjectDetails.default;
|
|
234
|
+
exports.ProjectList = require_ProjectList.default;
|
|
235
|
+
exports.ProjectSwitcher = require_ProjectSwitcher.default;
|
|
155
236
|
exports.RoleAssignments = require_RoleAssignments.default;
|
|
156
237
|
exports.RoleCreate = require_RoleCreate.default;
|
|
238
|
+
exports.RoleDetails = require_RoleDetails.default;
|
|
157
239
|
exports.RoleList = require_RoleList.default;
|
|
158
240
|
exports.RolePermissions = require_RolePermissions.default;
|
|
241
|
+
exports.SharingPolicies = require_SharingPolicies.default;
|
|
159
242
|
exports.SignIn = require_SignIn.default;
|
|
160
243
|
exports.SignInButton = require_SignInButton.default;
|
|
161
244
|
exports.SignOutButton = require_SignOutButton.default;
|
|
@@ -174,6 +257,7 @@ exports.UserList = require_UserList.default;
|
|
|
174
257
|
exports.UserProfile = require_UserProfile.default;
|
|
175
258
|
exports.UserSelect = require_UserSelect.default;
|
|
176
259
|
exports.UserTypeSelect = require_UserTypeSelect.default;
|
|
260
|
+
exports.VerifyAttribute = require_VerifyAttribute.default;
|
|
177
261
|
exports.backchannelLogout = require_backchannelLogout.default;
|
|
178
262
|
exports.createRouteMatcher = require_createRouteMatcher.default;
|
|
179
263
|
exports.removeChunkedCookieFromHeader = require_thunderIDProxy.removeChunkedCookieFromHeader;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use server';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
5
|
+
const require_getClient = require('../../getClient.cjs');
|
|
6
|
+
const require_getAccessToken = require('../getAccessToken.cjs');
|
|
7
|
+
let __thunderid_node = require("@thunderid/node");
|
|
8
|
+
__thunderid_node = require_rolldown_runtime.__toESM(__thunderid_node);
|
|
9
|
+
|
|
10
|
+
//#region src/server/actions/account/getAccessibleOrganizationUnitsAction.ts
|
|
11
|
+
/**
|
|
12
|
+
* Lists the organization units the signed-in user can access (`/users/me/ous`) with the session's
|
|
13
|
+
* access token, which stays on the server. Only `scope`, `limit` and `offset` are taken from the caller;
|
|
14
|
+
* the session is the one in the request's cookie.
|
|
15
|
+
*
|
|
16
|
+
* Failures are returned rather than thrown, so the error crosses the server action boundary with its
|
|
17
|
+
* status and code, and without the server's message.
|
|
18
|
+
*/
|
|
19
|
+
const getAccessibleOrganizationUnitsAction = async ({ limit, offset, scope } = {}) => {
|
|
20
|
+
const accessToken = await require_getAccessToken.default();
|
|
21
|
+
if (!accessToken) return {
|
|
22
|
+
statusCode: 401,
|
|
23
|
+
success: false
|
|
24
|
+
};
|
|
25
|
+
try {
|
|
26
|
+
const client = require_getClient.default();
|
|
27
|
+
if (!client.isInitialized) await client.initialize({});
|
|
28
|
+
const config = await client.getConfiguration();
|
|
29
|
+
return {
|
|
30
|
+
data: await (0, __thunderid_node.getAccessibleOrganizationUnits)({
|
|
31
|
+
baseUrl: config.baseUrl,
|
|
32
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
33
|
+
limit,
|
|
34
|
+
offset,
|
|
35
|
+
scope: scope === "siblings" ? "siblings" : void 0,
|
|
36
|
+
url: (0, __thunderid_node.resolveResourceEndpoint)("usersMeOrganizationUnits", config)
|
|
37
|
+
}),
|
|
38
|
+
success: true
|
|
39
|
+
};
|
|
40
|
+
} catch (error) {
|
|
41
|
+
if (error instanceof __thunderid_node.ThunderIDAPIError) return {
|
|
42
|
+
code: error.code,
|
|
43
|
+
statusCode: error.statusCode,
|
|
44
|
+
success: false
|
|
45
|
+
};
|
|
46
|
+
return { success: false };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var getAccessibleOrganizationUnitsAction_default = getAccessibleOrganizationUnitsAction;
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.default = getAccessibleOrganizationUnitsAction_default;
|
|
53
|
+
//# sourceMappingURL=getAccessibleOrganizationUnitsAction.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessibleOrganizationUnitsAction.cjs","names":["accessToken: string | undefined","getAccessToken","getClient","config: ThunderIDNextConfig","ThunderIDAPIError"],"sources":["../../../../../src/server/actions/account/getAccessibleOrganizationUnitsAction.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n'use server';\n\nimport {\n AccessibleOrganizationUnitList,\n AccessibleOrganizationUnitsOptions,\n ThunderIDAPIError,\n getAccessibleOrganizationUnits,\n resolveResourceEndpoint,\n} from '@thunderid/node';\nimport {ThunderIDNextConfig} from '../../../models/config';\nimport getClient from '../../getClient';\nimport getAccessToken from '../getAccessToken';\n\nexport type GetAccessibleOrganizationUnitsActionResult =\n | {data: AccessibleOrganizationUnitList; success: true}\n | {code?: string; statusCode?: number; success: false};\n\n/**\n * Lists the organization units the signed-in user can access (`/users/me/ous`) with the session's\n * access token, which stays on the server. Only `scope`, `limit` and `offset` are taken from the caller;\n * the session is the one in the request's cookie.\n *\n * Failures are returned rather than thrown, so the error crosses the server action boundary with its\n * status and code, and without the server's message.\n */\nconst getAccessibleOrganizationUnitsAction = async ({\n limit,\n offset,\n scope,\n}: AccessibleOrganizationUnitsOptions = {}): Promise<GetAccessibleOrganizationUnitsActionResult> => {\n const accessToken: string | undefined = await getAccessToken();\n\n if (!accessToken) {\n return {statusCode: 401, success: false};\n }\n\n try {\n const client = getClient();\n\n if (!client.isInitialized) {\n await client.initialize({} as ThunderIDNextConfig);\n }\n\n const config: ThunderIDNextConfig = await client.getConfiguration();\n const data: AccessibleOrganizationUnitList = await getAccessibleOrganizationUnits({\n baseUrl: config.baseUrl,\n headers: {Authorization: `Bearer ${accessToken}`},\n limit,\n offset,\n scope: scope === 'siblings' ? 'siblings' : undefined,\n url: resolveResourceEndpoint('usersMeOrganizationUnits', config),\n });\n\n return {data, success: true};\n } catch (error) {\n if (error instanceof ThunderIDAPIError) {\n return {code: error.code, statusCode: error.statusCode, success: false};\n }\n\n return {success: false};\n }\n};\n\nexport default getAccessibleOrganizationUnitsAction;\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4BA,MAAM,uCAAuC,OAAO,EAClD,OACA,QACA,UACsC,EAAE,KAA0D;CAClG,MAAMA,cAAkC,MAAMC,gCAAgB;AAE9D,KAAI,CAAC,YACH,QAAO;EAAC,YAAY;EAAK,SAAS;EAAM;AAG1C,KAAI;EACF,MAAM,SAASC,2BAAW;AAE1B,MAAI,CAAC,OAAO,cACV,OAAM,OAAO,WAAW,EAAE,CAAwB;EAGpD,MAAMC,SAA8B,MAAM,OAAO,kBAAkB;AAUnE,SAAO;GAAC,MATqC,2DAAqC;IAChF,SAAS,OAAO;IAChB,SAAS,EAAC,eAAe,UAAU,eAAc;IACjD;IACA;IACA,OAAO,UAAU,aAAa,aAAa;IAC3C,mDAA6B,4BAA4B,OAAO;IACjE,CAAC;GAEY,SAAS;GAAK;UACrB,OAAO;AACd,MAAI,iBAAiBC,mCACnB,QAAO;GAAC,MAAM,MAAM;GAAM,YAAY,MAAM;GAAY,SAAS;GAAM;AAGzE,SAAO,EAAC,SAAS,OAAM;;;AAI3B,mDAAe"}
|