diff --git a/src/auth/auth-config.ts b/src/auth/auth-config.ts index 3f8f387f84..604a694459 100644 --- a/src/auth/auth-config.ts +++ b/src/auth/auth-config.ts @@ -1722,3 +1722,68 @@ export class SmsRegionsAuthConfig { } } } + +/** + * Enforcement state of reCAPTCHA protection. + * - 'OFF': Unenforced. + * - 'AUDIT': Assessment is created but result is not used to enforce. + * - 'ENFORCE': Assessment is created and result is used to enforce. + */ +export type RecaptchaProviderEnforcementState = 'OFF' | 'AUDIT' | 'ENFORCE'; + +/** + * The actions for reCAPTCHA-protected requests. + * - 'BLOCK': The reCAPTCHA-protected request will be blocked. + */ +export type RecaptchaAction = 'BLOCK'; + +/** + * The config for a reCAPTCHA action rule. + */ +export interface RecaptchaManagedRule { + /** + * The action will be enforced if the reCAPTCHA score of a request is larger than endScore. + */ + endScore: number; + /** + * The action for reCAPTCHA-protected requests. + */ + action?: RecaptchaAction; +} + +/** + * The key's platform type: only web supported now. + */ +export type RecaptchaKeyClientType = 'WEB'; + +/** + * The reCAPTCHA key config. + */ +export interface RecaptchaKey { + /** + * The key's client platform type. + */ + type?: RecaptchaKeyClientType; + + /** + * The reCAPTCHA site key. + */ + key: string; +} + +export interface RecaptchaConfig { + /** + * The enforcement state of email password provider. + */ + emailPasswordEnforcementState?: RecaptchaProviderEnforcementState; + + /** + * The reCAPTCHA managed rules. + */ + managedRules: RecaptchaManagedRule[]; + + /** + * The reCAPTCHA keys. + */ + recaptchaKeys?: RecaptchaKey[]; +}