Oshop Tips

Decoupling service module

  • create service provider

    ng g s auth

  • add to app.module.ts as provider

    providers: [
      AuthService
    ],

Protect router using auth-guard

  • create router guard service

    ng g s auth-guard

  • add to app.module.ts as provider

    providers: [
      AuthGuard
    ],
  • In AuthGuard to implement CanActivate, remember canActivate return Observable[boolean]

  • protect future router { path: 'check-out', component: CheckOutComponent, canActivate: [AuthGuard]}

Redirecting after login

  • Using CanActivate's RouterStateSnapShot to set return Url to queryParam

 this.router.navigate(['/login'], { queryParams: { returnUrl: state.url}});
  • Save returnUrl to localStorage, because Redirect to Google login will lost queryParam

  • Get returnUrl after login and use router to navigate to returnUrl

Authorization (Store user in firebase)

  • Using service for this layer

ng g s services/user

  • add as service provider in app.module.ts

  • create userservice

    constructor(private db: AngularFireDatabase) { }
    
    save(user: firebase.User) {
      this.db.object('/users/' + user.uid).update({
        name: user.displayName,
        email: user.email
      });
    }

Last updated

Was this helpful?