Skip to content

Commit c87f8a5

Browse files
pragatimodilahirumarambakevinthecheung
authored
feat(auth): Add Password Policies support in Project and Tenant config (#2107)
* Password Policy Tenant and Project Changes - Config changes - Basic integration tests - Basic unit tests * Adding unit tests for PasswordPolicyAuthConfig + Comment for PasswordPolicyEnforcementState type * Adding Project Config Unit Tests * Tenant Unit Tests * Lint fixes * `npm run api-extractor:local` changes * 1. `npm run api-extractor:local` changes 2. Documentation for some PasswordPolicyConfig interfaces/methods * Revert formatting changes * Lint changes * Line break lint changes * `eslint --fix .` fixes * 1. Changing type of passwordPolicies to PasswordPolicyConfig on Tenant and ProjectConfig 2. Removing toJSON() method from PasswordPolicyAuthConfig 3. Marking PasswordPolicyAuthConfig as `internal` * Minor changes * Changes with approved config * Undo package-lock.json changes * Undo package-lock.json changes * Undo package-lock.json changes * Update package-lock.json * Lint fixes * Cleanup * Revert package-lock.json * Update project-config.ts * Minor formatting * Descriptive constants * Lint fixes * Fix import * Update test/integration/auth.spec.ts Co-authored-by: Lahiru Maramba <llahiru@gmail.com> * Apply suggestions from code review Co-authored-by: Lahiru Maramba <llahiru@gmail.com> * Apply suggestions from code review Co-authored-by: Kevin Cheung <kevinthecheung@users.noreply.github.com> * Integration tests fix * Small fix * Reset password policy in integration tests to prevent breaking changes * lint fix * package-lock.json undo changes * update merge * lint fixes * merge fixes * Update package-lock.json * Update package.json * Allow enforcementState `OFF` with default constraints * Lint fixes * Adding recaptcha to server request * Fill default passwordPolicyVersions values * Lint fix * remove debug logging --------- Co-authored-by: Lahiru Maramba <llahiru@gmail.com> Co-authored-by: Kevin Cheung <kevinthecheung@users.noreply.github.com>
1 parent ce6b13c commit c87f8a5

File tree

9 files changed

+1209
-148
lines changed

9 files changed

+1209
-148
lines changed

etc/firebase-admin.auth.api.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,16 @@ export interface CreateRequest extends UpdateRequest {
138138
// @public
139139
export type CreateTenantRequest = UpdateTenantRequest;
140140

141+
// @public
142+
export interface CustomStrengthOptionsConfig {
143+
maxLength?: number;
144+
minLength?: number;
145+
requireLowercase?: boolean;
146+
requireNonAlphanumeric?: boolean;
147+
requireNumeric?: boolean;
148+
requireUppercase?: boolean;
149+
}
150+
141151
// @alpha (undocumented)
142152
export interface DecodedAuthBlockingToken {
143153
// (undocumented)
@@ -329,6 +339,16 @@ export interface OIDCUpdateAuthProviderRequest {
329339
responseType?: OAuthResponseType;
330340
}
331341

342+
// @public
343+
export interface PasswordPolicyConfig {
344+
constraints?: CustomStrengthOptionsConfig;
345+
enforcementState?: PasswordPolicyEnforcementState;
346+
forceUpgradeOnSignin?: boolean;
347+
}
348+
349+
// @public
350+
export type PasswordPolicyEnforcementState = 'ENFORCE' | 'OFF';
351+
332352
// @public
333353
export interface PhoneIdentifier {
334354
// (undocumented)
@@ -344,6 +364,7 @@ export class PhoneMultiFactorInfo extends MultiFactorInfo {
344364
// @public
345365
export class ProjectConfig {
346366
get multiFactorConfig(): MultiFactorConfig | undefined;
367+
readonly passwordPolicyConfig?: PasswordPolicyConfig;
347368
get recaptchaConfig(): RecaptchaConfig | undefined;
348369
readonly smsRegionConfig?: SmsRegionConfig;
349370
toJSON(): object;
@@ -427,6 +448,7 @@ export class Tenant {
427448
readonly displayName?: string;
428449
get emailSignInConfig(): EmailSignInProviderConfig | undefined;
429450
get multiFactorConfig(): MultiFactorConfig | undefined;
451+
readonly passwordPolicyConfig?: PasswordPolicyConfig;
430452
get recaptchaConfig(): RecaptchaConfig | undefined;
431453
readonly smsRegionConfig?: SmsRegionConfig;
432454
readonly tenantId: string;
@@ -479,6 +501,7 @@ export interface UpdatePhoneMultiFactorInfoRequest extends BaseUpdateMultiFactor
479501
// @public
480502
export interface UpdateProjectConfigRequest {
481503
multiFactorConfig?: MultiFactorConfig;
504+
passwordPolicyConfig?: PasswordPolicyConfig;
482505
recaptchaConfig?: RecaptchaConfig;
483506
smsRegionConfig?: SmsRegionConfig;
484507
}
@@ -503,6 +526,7 @@ export interface UpdateTenantRequest {
503526
displayName?: string;
504527
emailSignInConfig?: EmailSignInProviderConfig;
505528
multiFactorConfig?: MultiFactorConfig;
529+
passwordPolicyConfig?: PasswordPolicyConfig;
506530
recaptchaConfig?: RecaptchaConfig;
507531
smsRegionConfig?: SmsRegionConfig;
508532
testPhoneNumbers?: {

0 commit comments

Comments
 (0)