ai/at
1
0

fix age bypass

This commit is contained in:
2026-01-10 10:49:17 +09:00
parent a25ed0e92c
commit 16e11575f6
2 changed files with 129 additions and 31 deletions

View File

@@ -1,17 +1,22 @@
diff --git a/src/ageAssurance/index.tsx b/src/ageAssurance/index.tsx diff --git a/src/ageAssurance/index.tsx b/src/ageAssurance/index.tsx
index 9a0a9c9d5..5a6563e52 100644
--- a/src/ageAssurance/index.tsx --- a/src/ageAssurance/index.tsx
+++ b/src/ageAssurance/index.tsx +++ b/src/ageAssurance/index.tsx
@@ -88,19 +88,16 @@ function InnerProvider({children}: {children: React.ReactNode}) { @@ -90,25 +90,16 @@ function InnerProvider({children}: {children: React.ReactNode}) {
return ( return (
<AgeAssuranceStateContext.Provider <AgeAssuranceStateContext.Provider
value={useMemo(() => { value={useMemo(() => {
- const chatDisabled = state.access !== AgeAssuranceAccess.Full - const chatDisabled = state.access !== AgeAssuranceAccess.Full
- const isUnderage = data?.birthdate - const isUnderAdultAge = data?.birthdate
- ? isUserUnderAdultAge(data.birthdate) - ? isUnderAge(data.birthdate, 18)
- : true - : true
- const isOverRegionMinAccessAge = data?.birthdate
- ? !isUnderAge(data.birthdate, config.minAccessAge)
- : false
- const isOverAppMinAccessAge = data?.birthdate
- ? !isUnderAge(data.birthdate, MIN_ACCESS_AGE)
- : false
- const adultContentDisabled = - const adultContentDisabled =
- state.access !== AgeAssuranceAccess.Full || isUnderage - state.access !== AgeAssuranceAccess.Full || isUnderAdultAge
return { return {
Access: AgeAssuranceAccess, Access: AgeAssuranceAccess,
Status: AgeAssuranceStatus, Status: AgeAssuranceStatus,
@@ -23,8 +28,12 @@ index 9a0a9c9d5..5a6563e52 100644
flags: { flags: {
- adultContentDisabled, - adultContentDisabled,
- chatDisabled, - chatDisabled,
- isOverRegionMinAccessAge,
- isOverAppMinAccessAge,
+ adultContentDisabled: false, + adultContentDisabled: false,
+ chatDisabled: false, + chatDisabled: false,
+ isOverRegionMinAccessAge: true,
+ isOverAppMinAccessAge: true,
}, },
} }
}, [state, data])}> }, [state, data, config])}>

View File

@@ -1,21 +1,35 @@
diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo/index.tsx
--- a/src/screens/Signup/StepInfo/index.tsx --- a/src/screens/Signup/StepInfo/index.tsx
+++ b/src/screens/Signup/StepInfo/index.tsx +++ b/src/screens/Signup/StepInfo/index.tsx
@@ -7,11 +7,9 @@ @@ -9,44 +9,17 @@
import {isEmailMaybeInvalid} from '#/lib/strings/email'
import {logger} from '#/logger' import {logger} from '#/logger'
-import {is13, is18, useSignupContext} from '#/screens/Signup/state' import {isNative} from '#/platform/detection'
+import {useSignupContext} from '#/screens/Signup/state' import {useSignupContext} from '#/screens/Signup/state'
import {Policies} from '#/screens/Signup/StepInfo/Policies' -import {Policies} from '#/screens/Signup/StepInfo/Policies'
import {atoms as a, native} from '#/alf' import {atoms as a, native} from '#/alf'
-import * as Admonition from '#/components/Admonition'
-import * as Dialog from '#/components/Dialog'
-import {DeviceLocationRequestDialog} from '#/components/dialogs/DeviceLocationRequestDialog'
-import * as DateField from '#/components/forms/DateField' -import * as DateField from '#/components/forms/DateField'
-import {type DateFieldRef} from '#/components/forms/DateField/types' -import {type DateFieldRef} from '#/components/forms/DateField/types'
import {FormError} from '#/components/forms/FormError' import {FormError} from '#/components/forms/FormError'
import {HostingProvider} from '#/components/forms/HostingProvider' import {HostingProvider} from '#/components/forms/HostingProvider'
import * as TextField from '#/components/forms/TextField' import * as TextField from '#/components/forms/TextField'
@@ -22,16 +20,6 @@ import {Envelope_Stroke2_Corner0_Rounded as Envelope} from '#/components/icons/Envelope'
import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
import {Ticket_Stroke2_Corner0_Rounded as Ticket} from '#/components/icons/Ticket'
-import {createStaticClick, SimpleInlineLinkText} from '#/components/Link'
import {Loader} from '#/components/Loader'
import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate' import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate'
-import * as Toast from '#/components/Toast'
-import {
- isUnderAge,
- MIN_ACCESS_AGE,
- useAgeAssuranceRegionConfigWithFallback,
-} from '#/ageAssurance/util'
-import {
- useDeviceGeolocationApi,
- useIsDeviceGeolocationGranted,
-} from '#/geolocation'
import {BackNextButtons} from '../BackNextButtons' import {BackNextButtons} from '../BackNextButtons'
-function sanitizeDate(date: Date): Date { -function sanitizeDate(date: Date): Date {
@@ -31,26 +45,40 @@ diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo
export function StepInfo({ export function StepInfo({
onPressBack, onPressBack,
isServerError, isServerError,
@@ -55,7 +43,6 @@ @@ -70,21 +43,6 @@
const emailInputRef = useRef<TextInput>(null) const emailInputRef = useRef<TextInput>(null)
const passwordInputRef = useRef<TextInput>(null) const passwordInputRef = useRef<TextInput>(null)
- const birthdateInputRef = useRef<DateFieldRef>(null) - const birthdateInputRef = useRef<DateFieldRef>(null)
-
- const aaRegionConfig = useAgeAssuranceRegionConfigWithFallback()
- const {setDeviceGeolocation} = useDeviceGeolocationApi()
- const locationControl = Dialog.useDialogControl()
- const isOverRegionMinAccessAge = state.dateOfBirth
- ? !isUnderAge(state.dateOfBirth.toISOString(), aaRegionConfig.minAccessAge)
- : true
- const isOverAppMinAccessAge = state.dateOfBirth
- ? !isUnderAge(state.dateOfBirth.toISOString(), MIN_ACCESS_AGE)
- : true
- const isOverMinAdultAge = state.dateOfBirth
- ? !isUnderAge(state.dateOfBirth.toISOString(), 18)
- : true
- const isDeviceGeolocationGranted = useIsDeviceGeolocationGranted()
const [hasWarnedEmail, setHasWarnedEmail] = React.useState<boolean>(false) const [hasWarnedEmail, setHasWarnedEmail] = React.useState<boolean>(false)
@@ -76,10 +63,6 @@ @@ -105,10 +63,6 @@
const emailChanged = prevEmailValueRef.current !== email const emailChanged = prevEmailValueRef.current !== email
const password = passwordValueRef.current const password = passwordValueRef.current
- if (!is13(state.dateOfBirth)) { - if (!isOverRegionMinAccessAge) {
- return - return
- } - }
- -
if (state.serviceDescription?.inviteCodeRequired && !inviteCode) { if (state.serviceDescription?.inviteCodeRequired && !inviteCode) {
return dispatch({ return dispatch({
type: 'setError', type: 'setError',
@@ -246,44 +229,21 @@ @@ -275,107 +229,16 @@
secureTextEntry secureTextEntry
autoComplete="new-password" autoComplete="new-password"
autoCapitalize="none" autoCapitalize="none"
@@ -83,18 +111,79 @@ diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo
- maximumDate={new Date()} - maximumDate={new Date()}
- /> - />
- </View> - </View>
<Policies -
serviceDescription={state.serviceDescription} - <View style={[a.gap_sm]}>
- needsGuardian={!is18(state.dateOfBirth)} - <Policies serviceDescription={state.serviceDescription} />
- under13={!is13(state.dateOfBirth)} -
+ needsGuardian={false} - {!isOverRegionMinAccessAge || !isOverAppMinAccessAge ? (
+ under13={false} - <Admonition.Outer type="error">
/> - <Admonition.Row>
- <Admonition.Icon />
- <Admonition.Content>
- <Admonition.Text>
- {!isOverAppMinAccessAge ? (
- <Trans>
- You must be {MIN_ACCESS_AGE} years of age or older
- to create an account.
- </Trans>
- ) : (
- <Trans>
- You must be {aaRegionConfig.minAccessAge} years of
- age or older to create an account in your region.
- </Trans>
- )}
- </Admonition.Text>
- {isNative &&
- !isDeviceGeolocationGranted &&
- isOverAppMinAccessAge && (
- <Admonition.Text>
- <Trans>
- Have we got your location wrong?{' '}
- <SimpleInlineLinkText
- label={_(
- msg`Tap here to confirm your location with GPS.`,
- )}
- {...createStaticClick(() => {
- locationControl.open()
- })}>
- Tap here to confirm your location with GPS.
- </SimpleInlineLinkText>
- </Trans>
- </Admonition.Text>
- )}
- </Admonition.Content>
- </Admonition.Row>
- </Admonition.Outer>
- ) : !isOverMinAdultAge ? (
- <Admonition.Admonition type="warning">
- <Trans>
- If you are not yet an adult according to the laws of your
- country, your parent or legal guardian must read these Terms
- on your behalf.
- </Trans>
- </Admonition.Admonition>
- ) : undefined}
- </View>
-
- {isNative && (
- <DeviceLocationRequestDialog
- control={locationControl}
- onLocationAcquired={props => {
- props.closeDialog(() => {
- // set this after close!
- setDeviceGeolocation(props.geolocation)
- Toast.show(_(msg`Your location has been updated.`), {
- type: 'success',
- })
- })
- }}
- />
- )}
</> </>
) : undefined} ) : undefined}
</View> </View>
<BackNextButtons <BackNextButtons
- hideNext={!is13(state.dateOfBirth)} - hideNext={!isOverRegionMinAccessAge}
+ hideNext={false} + hideNext={false}
showRetry={isServerError} showRetry={isServerError}
isLoading={state.isLoading} isLoading={state.isLoading}