From ef5ee3e06f628e9deda389bccc7bbc5799b80c5a Mon Sep 17 00:00:00 2001 From: Riddhiagrawal001 Date: Wed, 25 Sep 2024 15:10:51 +0530 Subject: [PATCH 1/3] chore: internal entity removal --- .../AuthModule/UserInfo/UserInfoTypes.res | 2 +- .../AuthModule/UserInfo/UserInfoUtils.res | 3 +-- src/entryPoints/HyperSwitchApp.res | 12 +++++------- src/entryPoints/SidebarValues.res | 16 ++++++++++++---- src/screens/APIUtils/APIUtils.res | 19 ++++--------------- src/screens/Sidebar/Sidebar.res | 4 ++-- .../UserRevamp/NewUserInvitationForm.res | 1 - .../UserRevamp/UserManagementHelper.res | 7 ++----- 8 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/entryPoints/AuthModule/UserInfo/UserInfoTypes.res b/src/entryPoints/AuthModule/UserInfo/UserInfoTypes.res index 42f4af293..802544079 100644 --- a/src/entryPoints/AuthModule/UserInfo/UserInfoTypes.res +++ b/src/entryPoints/AuthModule/UserInfo/UserInfoTypes.res @@ -1,4 +1,4 @@ -type entity = [#Internal | #Organization | #Merchant | #Profile] +type entity = [#Organization | #Merchant | #Profile] type userInfo = { email: string, isTwoFactorAuthSetup: bool, diff --git a/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res b/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res index 286a52098..821e91eba 100644 --- a/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res +++ b/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res @@ -17,7 +17,6 @@ let defaultValueOfUserInfo = { let entityMapper = entity => { switch entity->String.toLowerCase { - | "internal" => #Internal | "organization" => #Organization | "merchant" => #Merchant | "profile" => #Profile @@ -61,7 +60,7 @@ let itemMapper = dict => { name: dict->getString("name", defaultValueOfUserInfo.name), orgId: dict->getString("org_id", defaultValueOfUserInfo.orgId), recoveryCodesLeft: dict->getOptionInt("recovery_codes_left"), - roleId: dict->getString("role_id", defaultValueOfUserInfo.email), + roleId: dict->getString("role_id", defaultValueOfUserInfo.roleId), verificationDaysLeft: dict->getOptionInt("verification_days_left"), profileId: dict->getString("profile_id", ""), userEntity: dict->getString("entity_type", "")->entityMapper, diff --git a/src/entryPoints/HyperSwitchApp.res b/src/entryPoints/HyperSwitchApp.res index 54969f9af..ef27858f6 100644 --- a/src/entryPoints/HyperSwitchApp.res +++ b/src/entryPoints/HyperSwitchApp.res @@ -25,7 +25,7 @@ let make = () => { let featureFlagDetails = featureFlagAtom->Recoil.useRecoilValueFromAtom let (userPermissionJson, setuserPermissionJson) = Recoil.useRecoilState(userPermissionAtom) let getEnumDetails = EnumVariantHook.useFetchEnumDetails() - let {userInfo: {orgId, merchantId, profileId}, checkUserEntity} = React.useContext( + let {userInfo: {orgId, merchantId, profileId, roleId}, checkUserEntity} = React.useContext( UserInfoProvider.defaultContext, ) let modeText = featureFlagDetails.isLiveMode ? "Live Mode" : "Test Mode" @@ -151,12 +151,10 @@ let make = () => { - + String.startsWith("internal")}> - - - +
{modeText->React.string} @@ -264,8 +262,8 @@ let make = () => { | list{"developer-system-metrics"} => String.startsWith("internal") && + featureFlagDetails.systemMetrics} permission=userPermissionJson.analyticsView> diff --git a/src/entryPoints/SidebarValues.res b/src/entryPoints/SidebarValues.res index 4f215b779..c40a6b1c8 100644 --- a/src/entryPoints/SidebarValues.res +++ b/src/entryPoints/SidebarValues.res @@ -516,8 +516,14 @@ let paymentSettings = () => { }) } -let developers = (isDevelopersEnabled, systemMetrics, ~permissionJson, ~checkUserEntity) => { - let isInternalUser = checkUserEntity([#Internal]) +let developers = ( + isDevelopersEnabled, + systemMetrics, + ~permissionJson, + ~checkUserEntity, + ~roleId, +) => { + let isInternalUser = roleId->String.startsWith("internal") let isProfileUser = checkUserEntity([#Profile]) let apiKeys = apiKeys(permissionJson) let paymentSettings = paymentSettings() @@ -625,7 +631,9 @@ let reconAndSettlement = (recon, isReconEnabled, checkUserEntity) => { let useGetSidebarValues = (~isReconEnabled: bool) => { let featureFlagDetails = HyperswitchAtom.featureFlagAtom->Recoil.useRecoilValueFromAtom let permissionJson = Recoil.useRecoilValueFromAtom(HyperswitchAtom.userPermissionAtom) - let {userInfo: {userEntity}, checkUserEntity} = React.useContext(UserInfoProvider.defaultContext) + let {userInfo: {userEntity, roleId}, checkUserEntity} = React.useContext( + UserInfoProvider.defaultContext, + ) let { frm, payOut, @@ -670,7 +678,7 @@ let useGetSidebarValues = (~isReconEnabled: bool) => { ), default->workflow(isSurchargeEnabled, ~permissionJson, ~isPayoutEnabled=payOut, ~userEntity), recon->reconAndSettlement(isReconEnabled, checkUserEntity), - default->developers(systemMetrics, ~permissionJson, ~checkUserEntity), + default->developers(systemMetrics, ~permissionJson, ~checkUserEntity, ~roleId), settings(~isConfigurePmtsEnabled=configurePmts, ~permissionJson, ~complianceCertificate), ] diff --git a/src/screens/APIUtils/APIUtils.res b/src/screens/APIUtils/APIUtils.res index ba51076fc..9d79d516e 100644 --- a/src/screens/APIUtils/APIUtils.res +++ b/src/screens/APIUtils/APIUtils.res @@ -55,8 +55,7 @@ let useGetURL = () => { switch userEntity { | #Organization | #Merchant - | #Profile - | #Internal => + | #Profile => `account/${merchantId}/profile/connectors` } } @@ -226,8 +225,7 @@ let useGetURL = () => { switch userEntity { | #Organization | #Merchant - | #Profile - | #Internal => `routing/list/profile` + | #Profile => `routing/list/profile` } } | Post => @@ -249,7 +247,6 @@ let useGetURL = () => { | #Organization => `analytics/v2/org/metrics/${domain}` | #Merchant => `analytics/v2/merchant/metrics/${domain}` | #Profile => `analytics/v2/profile/metrics/${domain}` - | _ => `analytics/v2/merchant/metrics/${domain}` } | _ => "" @@ -274,7 +271,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/${domain}/info` | #Merchant => `analytics/v1/merchant/${domain}/info` | #Profile => `analytics/v1/profile/${domain}/info` - | _ => `analytics/v1/merchant/${domain}/info` } | _ => "" @@ -286,7 +282,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/metrics/${domain}` | #Merchant => `analytics/v1/merchant/metrics/${domain}` | #Profile => `analytics/v1/profile/metrics/${domain}` - | _ => `analytics/v1/merchant/metrics/${domain}` } | _ => "" @@ -302,7 +297,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/filters/${domain}` | #Merchant => `analytics/v1/merchant/filters/${domain}` | #Profile => `analytics/v1/profile/filters/${domain}` - | _ => `analytics/v1/merchant/filters/${domain}` } | _ => "" @@ -331,8 +325,7 @@ let useGetURL = () => { switch userEntity { | #Organization | #Merchant - | #Profile - | #Internal => `routing/payouts/list/profile` + | #Profile => `routing/payouts/list/profile` } } @@ -365,7 +358,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/report/payments` | #Merchant => `analytics/v1/merchant/report/payments` | #Profile => `analytics/v1/profile/report/payments` - | _ => `analytics/v1/merchant/report/payments` } | REFUND_REPORT => @@ -373,7 +365,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/report/refunds` | #Merchant => `analytics/v1/merchant/report/refunds` | #Profile => `analytics/v1/profile/report/refunds` - | _ => `analytics/v1/merchant/report/refunds` } | DISPUTE_REPORT => @@ -381,7 +372,6 @@ let useGetURL = () => { | #Organization => `analytics/v1/org/report/dispute` | #Merchant => `analytics/v1/merchant/report/dispute` | #Profile => `analytics/v1/profile/report/dispute` - | _ => `analytics/v1/merchant/report/dispute` } /* EVENT LOGS */ @@ -429,8 +419,7 @@ let useGetURL = () => { switch userEntity { | #Organization | #Merchant - | #Profile - | #Internal => + | #Profile => `account/${merchantId}/profile` } | Post => diff --git a/src/screens/Sidebar/Sidebar.res b/src/screens/Sidebar/Sidebar.res index 11ee3c328..acb7edd70 100644 --- a/src/screens/Sidebar/Sidebar.res +++ b/src/screens/Sidebar/Sidebar.res @@ -457,7 +457,7 @@ let make = ( let isMobileView = MatchMedia.useMobileChecker() let sideBarRef = React.useRef(Nullable.null) let {email} = useCommonAuthInfo()->Option.getOr(defaultAuthInfo) - let {checkUserEntity} = React.useContext(UserInfoProvider.defaultContext) + let {userInfo: {roleId}} = React.useContext(UserInfoProvider.defaultContext) let (openItem, setOpenItem) = React.useState(_ => "") let {isSidebarExpanded, setIsSidebarExpanded} = React.useContext(SidebarProvider.defaultContext) @@ -551,7 +551,7 @@ let make = (
- + String.startsWith("internal"))}>
`You can only invite people for ${profileId} here. To invite users to another profile, please switch the profile.` - | _ => "" }
diff --git a/src/screens/UserManagement/UserRevamp/UserManagementHelper.res b/src/screens/UserManagement/UserRevamp/UserManagementHelper.res index 322536d70..5a22eacd2 100644 --- a/src/screens/UserManagement/UserRevamp/UserManagementHelper.res +++ b/src/screens/UserManagement/UserRevamp/UserManagementHelper.res @@ -10,7 +10,6 @@ module OrganisationSelection = { let disableSelect = switch userEntity { | #Organization | #Merchant | #Profile => true - | _ => false } let handleOnChange = async (event, input: ReactFinalForm.fieldRenderPropsInput) => { @@ -62,8 +61,7 @@ module MerchantSelection = { let disableSelect = switch userEntity { | #Merchant | #Profile => true - | #Organization - | _ => false + | #Organization => false } let handleOnChange = async (event, input: ReactFinalForm.fieldRenderPropsInput) => { @@ -118,8 +116,7 @@ module ProfileSelection = { let disableSelect = switch userEntity { | #Profile => true | #Organization - | #Merchant - | _ => false + | #Merchant => false } let handleOnChange = async (event, input: ReactFinalForm.fieldRenderPropsInput) => { From 2ac46c2cd6d0fa53ca1bf916ca68d08e29e482f0 Mon Sep 17 00:00:00 2001 From: Riddhiagrawal001 Date: Wed, 25 Sep 2024 15:31:16 +0530 Subject: [PATCH 2/3] chore: internal entity removal --- src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res | 6 ++---- src/entryPoints/HyperSwitchApp.res | 8 +++++--- src/entryPoints/SidebarValues.res | 4 +++- src/screens/Sidebar/Sidebar.res | 5 ++++- .../UserManagement/UserRevamp/UserManagementTypes.res | 2 ++ .../UserManagement/UserRevamp/UserManagementUtils.res | 9 +++++++++ 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res b/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res index 821e91eba..9442fe360 100644 --- a/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res +++ b/src/entryPoints/AuthModule/UserInfo/UserInfoUtils.res @@ -26,9 +26,7 @@ let entityMapper = entity => { let transactionEntityMapper = entity => { switch entity->String.toLowerCase { - | "internal" - | "merchant" => - #Merchant + | "merchant" => #Merchant | "profile" => #Profile | _ => #Merchant } @@ -37,7 +35,7 @@ let transactionEntityMapper = entity => { let analyticsEntityMapper = entity => { switch entity->String.toLowerCase { | "organization" => #Organization - | "merchant" | "internal" => #Merchant + | "merchant" => #Merchant | "profile" => #Profile | _ => #Merchant } diff --git a/src/entryPoints/HyperSwitchApp.res b/src/entryPoints/HyperSwitchApp.res index ef27858f6..8d46eb67a 100644 --- a/src/entryPoints/HyperSwitchApp.res +++ b/src/entryPoints/HyperSwitchApp.res @@ -28,6 +28,9 @@ let make = () => { let {userInfo: {orgId, merchantId, profileId, roleId}, checkUserEntity} = React.useContext( UserInfoProvider.defaultContext, ) + let isInternalUser = + roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || + roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin let modeText = featureFlagDetails.isLiveMode ? "Live Mode" : "Test Mode" let modeStyles = featureFlagDetails.isLiveMode ? "bg-hyperswitch_green_trans border-hyperswitch_green_trans text-hyperswitch_green" @@ -151,7 +154,7 @@ let make = () => { - String.startsWith("internal")}> + @@ -262,8 +265,7 @@ let make = () => { | list{"developer-system-metrics"} => String.startsWith("internal") && - featureFlagDetails.systemMetrics} + isEnabled={isInternalUser && featureFlagDetails.systemMetrics} permission=userPermissionJson.analyticsView> diff --git a/src/entryPoints/SidebarValues.res b/src/entryPoints/SidebarValues.res index c40a6b1c8..8461a44c6 100644 --- a/src/entryPoints/SidebarValues.res +++ b/src/entryPoints/SidebarValues.res @@ -523,7 +523,9 @@ let developers = ( ~checkUserEntity, ~roleId, ) => { - let isInternalUser = roleId->String.startsWith("internal") + let isInternalUser = + roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || + roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin let isProfileUser = checkUserEntity([#Profile]) let apiKeys = apiKeys(permissionJson) let paymentSettings = paymentSettings() diff --git a/src/screens/Sidebar/Sidebar.res b/src/screens/Sidebar/Sidebar.res index acb7edd70..2b475bd51 100644 --- a/src/screens/Sidebar/Sidebar.res +++ b/src/screens/Sidebar/Sidebar.res @@ -458,6 +458,9 @@ let make = ( let sideBarRef = React.useRef(Nullable.null) let {email} = useCommonAuthInfo()->Option.getOr(defaultAuthInfo) let {userInfo: {roleId}} = React.useContext(UserInfoProvider.defaultContext) + let isInternalUser = + roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || + roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin let (openItem, setOpenItem) = React.useState(_ => "") let {isSidebarExpanded, setIsSidebarExpanded} = React.useContext(SidebarProvider.defaultContext) @@ -551,7 +554,7 @@ let make = (
- String.startsWith("internal"))}> +
{ [default] } } + +let stringToVariantMapper = roleId => { + open UserManagementTypes + switch roleId { + | "internal_view_only" => InternalViewOnly + | "internal_admin" => InternalAdmin + | _ => NonInternal + } +} From 36f1f111c3c45040d130097642e76800fbe38b62 Mon Sep 17 00:00:00 2001 From: Riddhiagrawal001 Date: Thu, 26 Sep 2024 14:40:45 +0530 Subject: [PATCH 3/3] fix: made a util func to check internal user --- src/entryPoints/HyperSwitchApp.res | 4 +--- src/entryPoints/SidebarValues.res | 4 +--- src/screens/Sidebar/Sidebar.res | 4 +--- src/utils/HyperSwitchUtils.res | 6 ++++++ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/entryPoints/HyperSwitchApp.res b/src/entryPoints/HyperSwitchApp.res index 8d46eb67a..ed1b46bb4 100644 --- a/src/entryPoints/HyperSwitchApp.res +++ b/src/entryPoints/HyperSwitchApp.res @@ -28,9 +28,7 @@ let make = () => { let {userInfo: {orgId, merchantId, profileId, roleId}, checkUserEntity} = React.useContext( UserInfoProvider.defaultContext, ) - let isInternalUser = - roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || - roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin + let isInternalUser = roleId->HyperSwitchUtils.checkIsInternalUser let modeText = featureFlagDetails.isLiveMode ? "Live Mode" : "Test Mode" let modeStyles = featureFlagDetails.isLiveMode ? "bg-hyperswitch_green_trans border-hyperswitch_green_trans text-hyperswitch_green" diff --git a/src/entryPoints/SidebarValues.res b/src/entryPoints/SidebarValues.res index 8461a44c6..cd172ba99 100644 --- a/src/entryPoints/SidebarValues.res +++ b/src/entryPoints/SidebarValues.res @@ -523,9 +523,7 @@ let developers = ( ~checkUserEntity, ~roleId, ) => { - let isInternalUser = - roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || - roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin + let isInternalUser = roleId->HyperSwitchUtils.checkIsInternalUser let isProfileUser = checkUserEntity([#Profile]) let apiKeys = apiKeys(permissionJson) let paymentSettings = paymentSettings() diff --git a/src/screens/Sidebar/Sidebar.res b/src/screens/Sidebar/Sidebar.res index 2b475bd51..0b382c767 100644 --- a/src/screens/Sidebar/Sidebar.res +++ b/src/screens/Sidebar/Sidebar.res @@ -458,9 +458,7 @@ let make = ( let sideBarRef = React.useRef(Nullable.null) let {email} = useCommonAuthInfo()->Option.getOr(defaultAuthInfo) let {userInfo: {roleId}} = React.useContext(UserInfoProvider.defaultContext) - let isInternalUser = - roleId->UserManagementUtils.stringToVariantMapper == InternalViewOnly || - roleId->UserManagementUtils.stringToVariantMapper == InternalAdmin + let isInternalUser = roleId->HyperSwitchUtils.checkIsInternalUser let (openItem, setOpenItem) = React.useState(_ => "") let {isSidebarExpanded, setIsSidebarExpanded} = React.useContext(SidebarProvider.defaultContext) diff --git a/src/utils/HyperSwitchUtils.res b/src/utils/HyperSwitchUtils.res index 0249a0ba9..e9bdc6878 100644 --- a/src/utils/HyperSwitchUtils.res +++ b/src/utils/HyperSwitchUtils.res @@ -39,3 +39,9 @@ let delay = ms => Promise.make((resolve, _) => { let _ = setTimeout(() => resolve(), ms) }) + +let checkIsInternalUser = roleId => { + open UserManagementUtils + roleId->stringToVariantMapper == InternalViewOnly || + roleId->stringToVariantMapper == InternalAdmin +}