From bf99f2d947bedc2305e82e1d8cf0ecc6bb9a1f0f Mon Sep 17 00:00:00 2001 From: Derek Burgman Date: Mon, 18 Apr 2022 10:51:30 -0500 Subject: [PATCH] feat: added dbxFirebaseLoginModule - added DbxFirebaseLoginModule and related services for Firebase authentication --- .../modules/action/container/map.component.ts | 1 - .../form/component/example.form.component.ts | 1 + .../app/modules/doc/modules/form/doc.form.ts | 2 +- .../lib/auth/login/firebase.login.module.ts | 7 +++++- .../dbx-firebase/src/lib/auth/login/index.ts | 1 + .../lib/auth/login/login.button.component.ts | 10 +++++++- .../lib/auth/login/login.email.component.ts | 2 +- .../login/login.email.content.component.html | 2 +- .../login/login.email.content.component.ts | 12 +++++++--- .../auth/login/login.email.form.component.ts | 21 ++++++++++------- .../src/lib/auth/login/login.password.ts | 7 ++++++ .../src/lib/auth/login/login.service.ts | 23 +++++++++++++++++-- .../auth/login/register.email.component.ts | 2 +- .../src/lib/form/io/form.changes.directive.ts | 18 ++++++++++----- .../dbx-form/src/lib/formly/template/login.ts | 9 +++++--- 15 files changed, 89 insertions(+), 29 deletions(-) create mode 100644 packages/dbx-firebase/src/lib/auth/login/login.password.ts diff --git a/apps/demo/src/app/modules/doc/modules/action/container/map.component.ts b/apps/demo/src/app/modules/doc/modules/action/container/map.component.ts index f892b1425..8368abdb7 100644 --- a/apps/demo/src/app/modules/doc/modules/action/container/map.component.ts +++ b/apps/demo/src/app/modules/doc/modules/action/container/map.component.ts @@ -20,7 +20,6 @@ export class DocActionMapComponent { saveThrottleTime = ms('2s'); handleSaveDraft: HandleActionFunction = (value: DocActionFormExampleValue) => { - console.log('Save?'); return of(value).pipe( delay(ms('1s')), tap(() => { diff --git a/apps/demo/src/app/modules/doc/modules/form/component/example.form.component.ts b/apps/demo/src/app/modules/doc/modules/form/component/example.form.component.ts index cb49a7de2..125f33cad 100644 --- a/apps/demo/src/app/modules/doc/modules/form/component/example.form.component.ts +++ b/apps/demo/src/app/modules/doc/modules/form/component/example.form.component.ts @@ -19,6 +19,7 @@ import { map, Observable } from "rxjs"; export class DocFormExampleComponent extends AbstractConfigAsyncFormlyFormDirective { value: any; + readonly fields$: Observable = this.config$.pipe(map((fields: FormlyFieldConfig[]) => fields ?? [])); } diff --git a/apps/demo/src/app/modules/doc/modules/form/doc.form.ts b/apps/demo/src/app/modules/doc/modules/form/doc.form.ts index eae63e344..c0e9f9921 100644 --- a/apps/demo/src/app/modules/doc/modules/form/doc.form.ts +++ b/apps/demo/src/app/modules/doc/modules/form/doc.form.ts @@ -30,7 +30,7 @@ export const DOC_FORM_ROUTES = [{ detail: 'form wrappers', ref: 'doc.form.wrapper' }, { - icon: 'template', + icon: 'article', title: 'Templates', detail: 'form field templates', ref: 'doc.form.template' diff --git a/packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts b/packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts index a0812ba39..bcc12ed60 100644 --- a/packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts +++ b/packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts @@ -12,7 +12,7 @@ import { DbxFirebaseLoginComponent } from './login.component'; import { DbxFirebaseLoginEmailComponent } from './login.email.component'; import { DbxFirebaseLoginFacebookComponent } from './login.facebook.component'; import { DbxFirebaseLoginGoogleComponent } from './login.google.component'; -import { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN } from './login.service'; +import { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN } from './login.service'; import { DbxFirebaseRegisterComponent } from './register.component'; import { DbxFirebaseLoginGitHubComponent } from './login.github.component'; import { DbxFirebaseLoginTwitterComponent } from './login.twitter.component'; @@ -27,12 +27,14 @@ import { DbxFirebaseLoginTermsComponent } from './login.terms.component'; import { DbxFirebaseLoginTermsViewComponent } from './login.terms.default.component'; import { DbxFirebaseLoginContextBackButtonComponent } from './login.context.back.component'; import { DbxFirebaseEmailRecoveryFormComponent } from './login.email.recovery.form.component'; +import { DbxFirebaseAuthLoginPasswordConfig } from './login.password'; export abstract class DbxFirebaseLoginModuleRootConfig { abstract readonly tosUrl: string; abstract readonly privacyUrl: string; abstract readonly enabledLoginMethods: FirebaseLoginMethodType[] | true; abstract readonly termsComponentClass?: Type; + abstract readonly passwordConfig?: DbxFirebaseAuthLoginPasswordConfig; } export function defaultFirebaseAuthLoginProvidersFactory(): DbxFirebaseAuthLoginProvider[] { @@ -204,6 +206,9 @@ export class DbxFirebaseLoginModule { }, { provide: DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, useValue: config.termsComponentClass + }, { + provide: DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, + useValue: config.passwordConfig }, { provide: DbxFirebaseLoginModuleRootConfig, useValue: config diff --git a/packages/dbx-firebase/src/lib/auth/login/index.ts b/packages/dbx-firebase/src/lib/auth/login/index.ts index 51d331505..d99f912a8 100644 --- a/packages/dbx-firebase/src/lib/auth/login/index.ts +++ b/packages/dbx-firebase/src/lib/auth/login/index.ts @@ -12,6 +12,7 @@ export * from './login.github.component'; export * from './login.google.component'; export * from './login.list.component'; export * from './login.microsoft.component'; +export * from './login.password'; export * from './login.service'; export * from './login'; export * from './login.twitter.component'; diff --git a/packages/dbx-firebase/src/lib/auth/login/login.button.component.ts b/packages/dbx-firebase/src/lib/auth/login/login.button.component.ts index 411d2bdc0..9271ea82a 100644 --- a/packages/dbx-firebase/src/lib/auth/login/login.button.component.ts +++ b/packages/dbx-firebase/src/lib/auth/login/login.button.component.ts @@ -104,7 +104,7 @@ export abstract class AbstractConfiguredDbxFirebaseLoginButtonDirective implemen readonly dbxFirebaseLoginContext: DbxFirebaseLoginContext) { } ngOnInit(): void { - const assets = this.dbxFirebaseAuthLoginService.getProviderAssets(this.loginProvider) ?? {}; + const assets = this.assetConfig; this._config = { text: assets.loginText ?? ``, @@ -118,6 +118,14 @@ export abstract class AbstractConfiguredDbxFirebaseLoginButtonDirective implemen abstract handleLogin(): Promise; + get providerConfig() { + return this.dbxFirebaseAuthLoginService.getLoginProvider(this.loginProvider); + } + + get assetConfig() { + return this.dbxFirebaseAuthLoginService.getProviderAssets(this.loginProvider) ?? {}; + } + get config() { return this._config; } diff --git a/packages/dbx-firebase/src/lib/auth/login/login.email.component.ts b/packages/dbx-firebase/src/lib/auth/login/login.email.component.ts index c9542e6cf..0cd34f76e 100644 --- a/packages/dbx-firebase/src/lib/auth/login/login.email.component.ts +++ b/packages/dbx-firebase/src/lib/auth/login/login.email.component.ts @@ -10,7 +10,7 @@ export class DbxFirebaseLoginEmailComponent extends AbstractConfiguredDbxFirebas readonly loginProvider = 'email'; handleLogin(): Promise { - return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'login' }); + return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'login', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() }); } } diff --git a/packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html b/packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html index 4c9fc3772..0379024a6 100644 --- a/packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html +++ b/packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html @@ -12,7 +12,7 @@ - +