From f7fe44320a8e961a87037f55fc8e91cdc7591a2d Mon Sep 17 00:00:00 2001 From: bramjanssen Date: Sat, 27 Jan 2024 18:10:57 +0100 Subject: [PATCH] fix: fixed login issue --- src/app/login/login.page.ts | 1 + src/app/services/auth.service.ts | 16 ++++++++-------- src/app/services/features.service.ts | 8 ++++---- src/app/verify-email/verify-email.page.html | 2 +- src/app/verify-email/verify-email.page.ts | 8 +++++++- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/app/login/login.page.ts b/src/app/login/login.page.ts index 32a01d3..43450c8 100644 --- a/src/app/login/login.page.ts +++ b/src/app/login/login.page.ts @@ -39,6 +39,7 @@ export class LoginPage implements OnInit { } else { this.router.navigate(['verify-email']); } + this.loading = false; } }, }); diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 311b28d..d041f8c 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -43,12 +43,9 @@ export class AuthService { } }) ) - .subscribe(({ user, data }) => { + .subscribe(({ user }) => { if (user) { localStorage.setItem('user', JSON.stringify(user)); - this.updateUser(user, data).then(() => { - console.log('User updated'); - }); } else { localStorage.removeItem('user'); } @@ -56,15 +53,18 @@ export class AuthService { }); } - public async updateUser(user: User, data: UserData): Promise { + public updateUser(user: User, data: UserData): Observable { const newData: UserData = { id: user.uid, name: user.displayName, role: data?.role || UserRole.BASIC, customerId: data?.customerId || '', }; - await this.fireStore.collection('users').doc(user.uid).set(newData); - return newData; + return from(this.fireStore.collection('users').doc(user.uid).set(newData)).pipe( + map(() => { + return newData; + }) + ); } public readUserData(user: User): Observable { @@ -75,7 +75,7 @@ export class AuthService { .pipe( take(1), map((data: DocumentSnapshot) => data.data()), - switchMap((data: UserData) => (!data ? from(this.updateUser(user, null)) : of(data))), + switchMap((data: UserData) => (!data ? this.updateUser(user, null) : of(data))), switchMap((data: UserData) => data.customerId !== '' ? of(data) diff --git a/src/app/services/features.service.ts b/src/app/services/features.service.ts index 7d844b9..6bcc03b 100644 --- a/src/app/services/features.service.ts +++ b/src/app/services/features.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { AuthService } from './auth.service'; import { PREMIUM_ROLES, UserData, UserRole } from '../models/userdata.model'; -import { combineLatest, from, Observable } from 'rxjs'; +import { combineLatest, Observable } from 'rxjs'; import { map, skipWhile, switchMap, take } from 'rxjs/operators'; import { User } from 'firebase'; @@ -30,12 +30,12 @@ export class FeaturesService { return combineLatest(this.authService.getUser(), this.authService.getUserData()).pipe( take(1), switchMap(([user, userData]: [User, UserData]) => - from( - this.authService.updateUser(user, { + this.authService + .updateUser(user, { ...userData, role, }) - ).pipe(switchMap(() => this.authService.readUserData(user))) + .pipe(switchMap(() => this.authService.readUserData(user))) ) ); } diff --git a/src/app/verify-email/verify-email.page.html b/src/app/verify-email/verify-email.page.html index 54df086..cf1d236 100644 --- a/src/app/verify-email/verify-email.page.html +++ b/src/app/verify-email/verify-email.page.html @@ -18,7 +18,7 @@

Thank You for Registering

- + Back to login diff --git a/src/app/verify-email/verify-email.page.ts b/src/app/verify-email/verify-email.page.ts index 1a57a6b..b3ff257 100644 --- a/src/app/verify-email/verify-email.page.ts +++ b/src/app/verify-email/verify-email.page.ts @@ -3,6 +3,7 @@ import { AuthService } from '../services/auth.service'; import { BehaviorSubject } from 'rxjs'; import { User } from 'firebase'; import { UtilService } from '../services/util.service'; +import { Router } from '@angular/router'; @Component({ selector: 'app-verify-email', @@ -12,9 +13,14 @@ import { UtilService } from '../services/util.service'; export class VerifyEmailPage implements OnInit { public user: BehaviorSubject; - constructor(public authService: AuthService, public utilService: UtilService) {} + constructor(public authService: AuthService, private router: Router, public utilService: UtilService) {} ngOnInit() { this.user = this.authService.getUser(); } + + async toLogin() { + await this.authService.logout(); + await this.router.navigate(['login']); + } }