session.service.ts 930 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Injectable } from '@angular/core';
  2. import { BehaviorSubject, Observable } from 'rxjs';
  3. export interface User {
  4. id: string;
  5. name: string;
  6. department: string;
  7. medical_allowance: number;
  8. }
  9. @Injectable({
  10. providedIn: 'root'
  11. })
  12. export class SessionService {
  13. private currentUserSubject = new BehaviorSubject<User | null>(null);
  14. currentUser$: Observable<User | null> = this.currentUserSubject.asObservable();
  15. constructor() {
  16. const savedUser = localStorage.getItem('currentUser');
  17. if (savedUser) {
  18. this.currentUserSubject.next(JSON.parse(savedUser));
  19. }
  20. }
  21. setCurrentUser(user: User): void {
  22. localStorage.setItem('currentUser', JSON.stringify(user));
  23. this.currentUserSubject.next(user);
  24. }
  25. getCurrentUser(): User | null {
  26. return this.currentUserSubject.value;
  27. }
  28. logout(): void {
  29. localStorage.removeItem('currentUser');
  30. this.currentUserSubject.next(null);
  31. }
  32. }