Router ne pas afficher une page une fois connecté

4 views
Skip to first unread message

Nicolas DOUZET

unread,
Jul 3, 2020, 7:55:02 AM7/3/20
to FrAngular - AngularJS en français
Bonjour,

voila mon problème si quelqu'un a la solution, j'ai tenté un truc ça fonctionne mais je voudrais avoir l'avis de personne plus expérimenté...

const appRoutesRoutes = [
  { path: 'index'canActivate: [AuthGuardService], component: IndexComponent },
  { path: 'auth/signup'component: SignupComponent },
  { path: 'auth/signin'component: SigninComponent },
  /* { path: 'books', canActivate: [AuthGuardService], component: BookListComponent }, */
  { path: ''redirectTo: 'auth/signin'pathMatch: 'full'  },
  { path: '**'redirectTo: 'auth/signin' }
];

Voila dans mon app.module.ts, mon routing pour mes pages. Dans mon AuthGuardService, je protège les pages si l'utilisateur n'est pas connecté, il n'a donc pas accès.

import { Injectable } from '@angular/core';
import { CanActivateRouter } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import * as firebase from 'firebase';

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor(private routerRouter) { }

  canActivate(): Observable<boolean> | Promise<boolean> | boolean {
    return new Promise(
      (resolvereject=> {
        firebase.auth().onAuthStateChanged(
          (user=> {
            if(user) {
              resolve(true);
            } else {
              this.router.navigate(['/auth''signin']);
              resolve(false);
            }
          }
        );
      }
    );
  }
}

Cependant je voudrais réaliser la même opération mais une fois que l'utilisateur est connecté pour ne plus avoir accès au formule de connection et d'inscription... Comment faire ?
J'ai trouvé une solution celle de duppliquer mon AuthGaurdService et d'inverser le resolve mais je ne trouve pas ça très clean...
Avez-vous une meilleure solution que la mienne ?

Merci
Reply all
Reply to author
Forward
0 new messages