Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. import {Injectable} from '@angular/core';
  2. import {JwtHelper} from 'angular2-jwt';
  3. import { User } from '../shared/models/user';
  4. import {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot} from '@angular/router';
  5. import {Observable} from 'rxjs/Observable';
  6.  
  7. @Injectable()
  8. export class SessionService implements CanActivate {
  9.  
  10. session;
  11. isAuthenticated: boolean;
  12. jwtHelper: JwtHelper = new JwtHelper();
  13. user: User;
  14.  
  15. constructor() {
  16. // TODO: Verify session valid
  17. this.exists();
  18. }
  19.  
  20. /**
  21. * @param accessToken
  22. * @returns {{accessToken: *}|*|null}
  23. */
  24. create(accessToken) {
  25. this.session = {
  26. accessToken: accessToken
  27. };
  28. this.isAuthenticated = true;
  29. this.user = new User();
  30. this.decodeUserFromToken(accessToken);
  31.  
  32. localStorage.session = this.session;
  33. return this.session;
  34. }
  35.  
  36. destroy() {
  37. this.session = null;
  38.  
  39. const subdomain = localStorage.subdomain;
  40. this.isAuthenticated = false;
  41. this.user = null;
  42.  
  43. localStorage.clear();
  44.  
  45. if (subdomain) {
  46. localStorage.subdomain = subdomain;
  47. }
  48. }
  49.  
  50. exists() {
  51. const exists = typeof localStorage.session !== 'undefined' && localStorage.session !== null;
  52. if (exists) {
  53. this.isAuthenticated = true;
  54. console.log('User exists');
  55. }
  56. return exists;
  57. }
  58.  
  59. decodeUserFromToken(token) {
  60. const decodedToken = this.jwtHelper.decodeToken(token);
  61. if (decodedToken) {
  62. this.setUser(decodedToken);
  63. }
  64. }
  65.  
  66. setUser(decodedUser) {
  67. this.user.id = decodedUser._id;
  68. this.user.email = decodedUser.email;
  69. }
  70.  
  71. addAuthHeaders(headers) {
  72. if (this.exists()) {
  73. headers.append('Authorization', this.session.accessToken);
  74. }
  75. }
  76.  
  77. getUser() {
  78. return this.user;
  79. }
  80.  
  81. getSession() {
  82. return localStorage.session;
  83. }
  84.  
  85. getParameterByName(name) {
  86. name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
  87. const regex = new RegExp('[\\?&]' + name + '=([^&#]*)'),
  88. results = regex.exec(location.href);
  89. return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
  90. }
  91.  
  92.  
  93. canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  94. return this.isAuthenticated;
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement