J'ai essayé de définir les propriétés ou les attributs personnalisés de l'utilisateur à l'aide de la fonction auth.updateProfile
mais elle n'enregistre que displayName
car elle est mentionnée dans son docs :
this.af.auth.createUser({
email: formData.value.email,
password: formData.value.password,
}).then((user) => {
let userProfile = formData.value;
userProfile.role = AuthService.ROLE_PATIENT;
userProfile.displayName = `${formData.value.firstName} ${formData.value.lastName}`;
user.auth.updateProfile(userProfile).then(function(){
this.router.navigate(['/']);
});
Problème maintenant, comment puis-je définir les propriétés personnalisées de l'utilisateur afin de pouvoir les obtenir dans FirebaseAuthState
Question : Pourquoi dois-je enregistrer les propriétés personnalisées avec chaque utilisateur ?
Réponse : Parce que je travaille avec Auth Guard pour activer une route particulière en utilisant role
qui est sauvegardée dans l'exemple de base de données :
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
//Currently I'm using this which only check that user is logged in or not
return this.auth
.take(1)
.map((authState: FirebaseAuthState) => !!authState)
.do(authenticated => {
if (!authenticated) this.router.navigate(['/login']);
});
}
Mais je veux une vérification supplémentaire pour valider que l'utilisateur a le rôle de patient que j'ai enregistré lors de la création de l'utilisateur ci-dessus, par exemple : return user.role == 'patient'