Guest User

Untitled

a guest
Aug 16th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. //user.service.ts
  2. logout() {
  3. localStorage.removeItem('id_token');
  4. this.loggedIn = false;
  5. }
  6.  
  7. //nav.component.ts
  8. import { Component, Inject } from 'angular2/core';
  9. import { RouteConfig, ROUTER_DIRECTIVES } from 'angular2/router';
  10.  
  11. import { UserService } from '../user/services/user.service';
  12.  
  13. @Component({
  14. selector: 'nav-bar',
  15. template: `
  16. <div class="nav">
  17. <a [routerLink]="['LoginComponent']" *ngIf="!_userService.isLoggedIn()">Login</a>
  18. <a [routerLink]="['SignupComponent']" *ngIf="!_userService.isLoggedIn()">Sign Up</a>
  19. <a [routerLink]="['TodoComponent']" *ngIf="_userService.isLoggedIn()">ToDo</a>
  20. <button (click)="_userService.logout($event)" *ngIf="_userService.isLoggedIn()">Log Out</button>
  21. </div>
  22. `,
  23. styleUrls: ['client/dev/todo/styles/todo.css'],
  24. directives: [ROUTER_DIRECTIVES],
  25. providers: [ UserService ]
  26. })
  27.  
  28. export class NavComponent {
  29.  
  30. constructor(@Inject(UserService) private _userService: UserService) {}
  31.  
  32. }
  33.  
  34. import {ReplaySubject, Observable} from 'rxjs/Rx';
  35. import {Injectable} from 'angular2/core';
  36.  
  37. @Injectable()
  38. export class LoginService {
  39. private logged = new ReplaySubject<boolean>(1); // Resend 1 old value to new subscribers
  40.  
  41. // isLoggedIn checks with server if user is already logged in.
  42. // Returns true if logged in, and caches the result and user data.
  43. isLoggedIn(): ReplaySubject<boolean> {
  44. return this.logged;
  45. }
  46.  
  47. // logIn attempts to log in a user, returns attempt result.
  48. // Caches login status.
  49. logIn(user: string, password: string): Observable<boolean> {
  50. return Observable.timer(100).map(() => { // emulate a 100ms delay on login
  51. this.logged.next(true);
  52. return true;
  53. })
  54.  
  55. }
  56.  
  57. logOut() {
  58. // need api call to logout here
  59. this.user = null;
  60. this.logged.next(false);
  61. }
  62. }
  63.  
  64. import {Component} from 'angular2/core';
  65. import {LoginService} from "../user/login.service";
  66.  
  67. @Component({
  68. selector: 'an-menu',
  69. templateUrl: 'app/user/menu.html',
  70. })
  71. export class MenuComponent {
  72. loggedIn: boolean;
  73.  
  74. constructor(private _loginService: LoginService) {
  75. this._loginService.isLoggedIn()
  76. .subscribe(r => {
  77. this.loggedIn = r;
  78. });
  79. }
  80.  
  81. onLogout() {
  82. this._loginService.logOut();
  83. }
  84. }
  85.  
  86. logout() {
  87. localStorage.removeItem('id_token');
  88. this.loggedIn = false;
  89. }
  90.  
  91. *ngIf="!_userService.isLoggedIn()
Add Comment
Please, Sign In to add comment