I have this app.component.html
:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class='container'>
<ul class="nav navbar-nav">
<li class='nav-item'>
<a class='nav-link' routerLink="/">Strona główna</a>
</li>
<li class='nav-item'>
<a class='nav-link' routerLink="/about">O nas</a>
</li>
<li class='nav-item' *ngIf='!user'>
<a class='nav-link' routerLink="/login">Zaloguj</a>
</li>
<li class='nav-item' *ngIf='!user'>
<a class='nav-link' routerLink="/register">Zarejestruj</a>
</li>
<li class='nav-item' *ngIf='user'>
<a class='nav-link' routerLink="/logout">Wyloguj</a>
</li>
</ul>
</div>
</nav>
<main>
<router-outlet></router-outlet>
</main>
What I'm trying to do is to show the /logout
button if the user is logged in and hide it otherwise, and show the /login
and /register
buttons if the user is not logged in.
Here's my login logic:
import {Component} from '@angular/core';
import {AuthService} from '../core/auth.service';
import {Router, Params} from '@angular/router';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
@Component({
selector: 'page-login',
templateUrl: 'login.component.html',
styleUrls: ['login.scss']
})
export class LoginComponent {
loginForm: FormGroup;
errorMessage: string = '';
constructor(
public authService: AuthService,
private router: Router,
private fb: FormBuilder
) {
this.createForm();
}
createForm() {
this.loginForm = this.fb.group({
email: ['', Validators.required],
password: ['', Validators.required]
});
}
tryFacebookLogin() {
this.authService.doFacebookLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryTwitterLogin() {
this.authService.doTwitterLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryGoogleLogin() {
this.authService.doGoogleLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryLogin(value) {
this.authService.doLogin(value)
.then(res => {
this.router.navigate(['/user']);
}, err => {
console.log(err);
this.errorMessage = err.message;
});
}
}
Example of the doLogin
function:
doLogin(value){
return new Promise<any>((resolve, reject) => {
firebase.auth().signInWithEmailAndPassword(value.email, value.password)
.then(res => {
resolve(res);
}, err => reject(err))
})
}
I am new to Angular. I was mostly working with Express until now. I was thinking to set something like a session variable, to keep if the user is logged in, or not. How can I do it in Angular?