feat: require compliance confirmation for paid features

Gate payment, redemption, subscription, and invitation reward flows behind an audited compliance acknowledgement.
This commit is contained in:
CaIon
2026-05-13 22:18:46 +08:00
parent aa56667b8f
commit 0526a22643
57 changed files with 1806 additions and 216 deletions
+25 -3
View File
@@ -22,13 +22,18 @@ import { Alert, AlertDescription } from '@/components/ui/alert'
import { SectionPageLayout } from '@/components/layout'
import { SubscriptionsDialogs } from './components/subscriptions-dialogs'
import { SubscriptionsPrimaryButtons } from './components/subscriptions-primary-buttons'
import { SubscriptionsProvider } from './components/subscriptions-provider'
import {
SubscriptionsProvider,
useSubscriptions,
} from './components/subscriptions-provider'
import { SubscriptionsTable } from './components/subscriptions-table'
export function Subscriptions() {
function SubscriptionsContent() {
const { t } = useTranslation()
const { complianceConfirmed } = useSubscriptions()
return (
<SubscriptionsProvider>
<>
<SectionPageLayout>
<SectionPageLayout.Title>
{t('Subscription Management')}
@@ -50,11 +55,28 @@ export function Subscriptions() {
</div>
</SectionPageLayout.Actions>
<SectionPageLayout.Content>
{!complianceConfirmed ? (
<Alert variant='destructive' className='mb-4'>
<AlertDescription>
{t(
'Subscription plan creation and changes are locked until the administrator confirms compliance terms in Payment Gateway settings.'
)}
</AlertDescription>
</Alert>
) : null}
<SubscriptionsTable />
</SectionPageLayout.Content>
</SectionPageLayout>
<SubscriptionsDialogs />
</>
)
}
export function Subscriptions() {
return (
<SubscriptionsProvider>
<SubscriptionsContent />
</SubscriptionsProvider>
)
}