From 320f2133190164388c278abc08a51d29ba56849e Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Wed, 5 Nov 2025 18:45:23 +0900 Subject: [PATCH] Add permission checks to additional service pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add grant check (54, 'D') to link payment download buttons - Add grant check (54, 'X') to link payment request buttons - Add grant check (65, 'D') to face auth download button - Add grant check (60, 'D') to account holder search download button - Add grant check (60, 'X') to account holder search request button - Refactor inline onClick handlers to method references Changes: - link-payment-history-wrap: Add permission checks for download and request - link-payment-wait-send-wrap: Add permission checks for download and request - face-auth-page: Add permission check for download - account-holder-search-page: Add permission check for download - account-holder-search-list: Add permission check for search request 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../account-holder-search-list.tsx | 8 +++++++- .../ui/link-payment/link-payment-history-wrap.tsx | 14 ++++++++++++-- .../link-payment/link-payment-wait-send-wrap.tsx | 14 ++++++++++++-- .../account-holder-search-page.tsx | 6 ++++++ .../face-auth/face-auth-page.tsx | 8 +++++++- 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx b/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx index 22d1abd..2fe3c09 100644 --- a/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx +++ b/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx @@ -4,6 +4,8 @@ import { ListDateGroup } from '../list-date-group'; import { AdditionalServiceCategory } from '../../model/types' import { AccountHolderSearchListProps } from '../../model/account-holder-search/types'; import { useTranslation } from 'react-i18next'; +import { checkGrant } from '@/shared/lib/check-grant'; +import { showAlert } from '@/widgets/show-alert'; export const AccountHolderSearchList = ({ listItems, @@ -63,6 +65,10 @@ export const AccountHolderSearchList = ({ const onClickToNavigate = () => { + if (!checkGrant(60, 'X')) { + showAlert(t('common.nopermission')); + return; + } navigate(PATHS.additionalService.accountHolderSearch.request) }; @@ -74,7 +80,7 @@ export const AccountHolderSearchList = ({
diff --git a/src/entities/additional-service/ui/link-payment/link-payment-history-wrap.tsx b/src/entities/additional-service/ui/link-payment/link-payment-history-wrap.tsx index 683a9ea..f1449db 100644 --- a/src/entities/additional-service/ui/link-payment/link-payment-history-wrap.tsx +++ b/src/entities/additional-service/ui/link-payment/link-payment-history-wrap.tsx @@ -17,6 +17,8 @@ import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { useTranslation } from 'react-i18next'; import { LinkPaymentHistoryDetail } from './detail/link-payment-history-detail'; +import { checkGrant } from '@/shared/lib/check-grant'; +import { showAlert } from '@/widgets/show-alert'; const getPaymentResultBtnGroup = (t: any) => [ { name: t('additionalService.linkPayment.all'), value: LinkPaymentPaymentStatus.ALL }, @@ -76,6 +78,10 @@ export const LinkPaymentHistoryWrap = () => { }); const onClickToNavigate = () => { + if (!checkGrant(54, 'X')) { + showAlert(t('common.nopermission')); + return; + } navigate(PATHS.additionalService.linkPayment.request) }; @@ -133,6 +139,10 @@ export const LinkPaymentHistoryWrap = () => { }; const onClickToOpenEmailBottomSheet = () => { + if (!checkGrant(54, 'D')) { + showAlert(t('common.nopermission')); + return; + } setEmailBottomSheetOn(true); }; @@ -219,7 +229,7 @@ export const LinkPaymentHistoryWrap = () => { { @@ -64,6 +66,10 @@ export const LinkPaymentWaitSendWrap = () => { setFilterOn(!filterOn); }; const onClickToNavigate = () => { + if (!checkGrant(54, 'X')) { + showAlert(t('common.nopermission')); + return; + } navigate(PATHS.additionalService.linkPayment.request) } @@ -120,6 +126,10 @@ export const LinkPaymentWaitSendWrap = () => { }; const onClickToOpenEmailBottomSheet = () => { + if (!checkGrant(54, 'D')) { + showAlert(t('common.nopermission')); + return; + } setEmailBottomSheetOn(true); }; @@ -195,7 +205,7 @@ export const LinkPaymentWaitSendWrap = () => { { const { navigate } = useNavigate(); @@ -139,6 +141,10 @@ export const AccountHolderSearchPage = () => { }; const onClickToOpenEmailBottomSheet = () => { + if (!checkGrant(60, 'D')) { + showAlert(t('common.nopermission')); + return; + } setEmailBottomSheetOn(true); }; diff --git a/src/pages/additional-service/face-auth/face-auth-page.tsx b/src/pages/additional-service/face-auth/face-auth-page.tsx index 3f2455f..1152c25 100644 --- a/src/pages/additional-service/face-auth/face-auth-page.tsx +++ b/src/pages/additional-service/face-auth/face-auth-page.tsx @@ -25,6 +25,8 @@ import { ListDateGroup } from '@/entities/additional-service/ui/list-date-group' import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { useTranslation } from 'react-i18next'; +import { checkGrant } from '@/shared/lib/check-grant'; +import { showAlert } from '@/widgets/show-alert'; export const FaceAuthPage = () => { const { navigate } = useNavigate(); @@ -126,6 +128,10 @@ export const FaceAuthPage = () => { }; const onClickToOpenEmailBottomSheet = () => { + if (!checkGrant(65, 'D')) { + showAlert(t('common.nopermission')); + return; + } setEmailBottomSheetOn(true); }; @@ -244,7 +250,7 @@ export const FaceAuthPage = () => {