Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //user.service.ts
- logout() {
- localStorage.removeItem('id_token');
- this.loggedIn = false;
- }
- //nav.component.ts
- import { Component, Inject } from 'angular2/core';
- import { RouteConfig, ROUTER_DIRECTIVES } from 'angular2/router';
- import { UserService } from '../user/services/user.service';
- @Component({
- selector: 'nav-bar',
- template: `
- <div class="nav">
- <a [routerLink]="['LoginComponent']" *ngIf="!_userService.isLoggedIn()">Login</a>
- <a [routerLink]="['SignupComponent']" *ngIf="!_userService.isLoggedIn()">Sign Up</a>
- <a [routerLink]="['TodoComponent']" *ngIf="_userService.isLoggedIn()">ToDo</a>
- <button (click)="_userService.logout($event)" *ngIf="_userService.isLoggedIn()">Log Out</button>
- </div>
- `,
- styleUrls: ['client/dev/todo/styles/todo.css'],
- directives: [ROUTER_DIRECTIVES],
- providers: [ UserService ]
- })
- export class NavComponent {
- constructor(@Inject(UserService) private _userService: UserService) {}
- }
- import {ReplaySubject, Observable} from 'rxjs/Rx';
- import {Injectable} from 'angular2/core';
- @Injectable()
- export class LoginService {
- private logged = new ReplaySubject<boolean>(1); // Resend 1 old value to new subscribers
- // isLoggedIn checks with server if user is already logged in.
- // Returns true if logged in, and caches the result and user data.
- isLoggedIn(): ReplaySubject<boolean> {
- return this.logged;
- }
- // logIn attempts to log in a user, returns attempt result.
- // Caches login status.
- logIn(user: string, password: string): Observable<boolean> {
- return Observable.timer(100).map(() => { // emulate a 100ms delay on login
- this.logged.next(true);
- return true;
- })
- }
- logOut() {
- // need api call to logout here
- this.user = null;
- this.logged.next(false);
- }
- }
- import {Component} from 'angular2/core';
- import {LoginService} from "../user/login.service";
- @Component({
- selector: 'an-menu',
- templateUrl: 'app/user/menu.html',
- })
- export class MenuComponent {
- loggedIn: boolean;
- constructor(private _loginService: LoginService) {
- this._loginService.isLoggedIn()
- .subscribe(r => {
- this.loggedIn = r;
- });
- }
- onLogout() {
- this._loginService.logOut();
- }
- }
- logout() {
- localStorage.removeItem('id_token');
- this.loggedIn = false;
- }
- *ngIf="!_userService.isLoggedIn()
Add Comment
Please, Sign In to add comment