Bom dia Nayanne
Segue
UsuarioService
import { Injectable } from '@angular/core';
import { TokenService } from './token.service';
import { Usuario } from './usuario/usuario';
import jwt_decode from 'jwt-decode';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class UsuarioService {
private usuarioSubject = new BehaviorSubject<Usuario>({});
constructor(private tokenService : TokenService) {
if(this.tokenService.possuiToken()){
this.decodificaJWT();
}
}
private decodificaJWT(){
const token = this.tokenService.retornaToken();
const usuario = jwt_decode(token) as Usuario;
this.usuarioSubject.next(usuario);
}
retornaUsuario(){
return this.usuarioSubject.asObservable();
}
salvaToken(token:string) {
this.tokenService.salvaToken(token);
this.decodificaJWT();
}
logout(){
this.tokenService.excluiToken();
this.usuarioSubject.next({});
}
estaLogado(){
return this.tokenService.possuiToken();
}
}
Token Service
import { Injectable } from '@angular/core';
const KEY = 'token';
@Injectable({
providedIn: 'root'
})
export class TokenService {
retornaToken(){
return localStorage.getItem(KEY) ?? '';
}
salvaToken(token : string){
localStorage.setItem(KEY,token);
}
excluiToken(){
localStorage.removeItem(KEY);
}
possuiToken(){
return !!this.retornaToken();
}
}
Package.Json
{
"name": "skote-angular-vertical",
"version": "1.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"build-prod": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng build --prod"
},
"private": true,
"dependencies": {
"-": "^0.0.1",
"@agm/core": "^1.1.0",
"@angular/animations": "^13.0.2",
"@angular/common": "~13.0.2",
"@angular/compiler": "~13.0.2",
"@angular/core": "~13.0.2",
"@angular/fire": "^6.1.5",
"@angular/forms": "~13.0.2",
"@angular/localize": "^13.0.2",
"@angular/platform-browser": "~13.0.2",
"@angular/platform-browser-dynamic": "~13.0.2",
"@angular/router": "~13.0.2",
"@ckeditor/ckeditor5-angular": "^2.0.1",
"@ckeditor/ckeditor5-build-classic": "^26.0.0",
"@fullcalendar/angular": "^5.8.0",
"@fullcalendar/bootstrap": "^5.8.0",
"@fullcalendar/core": "^5.8.0",
"@fullcalendar/daygrid": "^5.8.0",
"@fullcalendar/interaction": "^5.8.0",
"@fullcalendar/list": "^5.8.0",
"@fullcalendar/timegrid": "^5.8.0",
"@ng-bootstrap/ng-bootstrap": "^10.0.0",
"@ng-select/ng-select": "^7.0.0",
"@ngx-translate/core": "^13.0.0",
"@ngx-translate/http-loader": "^6.0.0",
"@nicky-lenaers/ngx-scroll-to": "^9.0.0",
"@types/chartist": "^0.11.0",
"angular-archwizard": "^7.0.0",
"apexcharts": "^3.27.1",
"bootstrap": "^5.1.3",
"bs-custom-file-input": "^1.3.4",
"chart.js": "^2.9.4",
"chartist": "^0.11.4",
"echarts": "^5.1.2",
"firebase": "^8.6.8",
"g": "^2.0.1",
"jwt-decode": "^3.1.2",
"metismenujs": "^1.2.1",
"ng-apexcharts": "^1.5.12",
"ng-chartist": "^4.1.0",
"ng-click-outside": "^8.0.0",
"ng-otp-input": "^1.7.1",
"ng2-charts": "^2.4.2",
"ng2-completer": "^9.0.1",
"ng2-search-filter": "^0.5.1",
"ng2-smart-table": "^1.7.2",
"ng5-slider": "^1.2.6",
"ngx-chartist": "^1.0.3",
"ngx-color-picker": "^11.0.0",
"ngx-cookie-service": "^11.0.2",
"ngx-drag-drop": "^2.0.0",
"ngx-dropzone": "^3.0.0",
"ngx-dropzone-wrapper": "^10.0.1",
"ngx-echarts": "^6.0.1",
"ngx-image-cropper": "^3.3.5",
"ngx-lightbox": "^2.4.0",
"ngx-mask": "^12.0.0",
"ngx-owl-carousel-o": "^6.0.0",
"ngx-ui-switch": "^10.0.2",
"ngx-youtube-player": "^9.1.0",
"resize-observer-polyfill": "^1.5.1",
"rxjs": "~6.6.6",
"sass-loader": "^11.1.1",
"simplebar-angular": "^2.3.4",
"sweetalert2": "^11.0.18",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^13.0.3",
"@angular/cli": "^13.3.0",
"@angular/compiler-cli": "~13.0.2",
"@angular/language-service": "~13.0.2",
"@juggle/resize-observer": "^3.3.1",
"@types/echarts": "^4.9.8",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^15.12.4",
"codelyzer": "^6.0.0",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~6.3.2",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"protractor": "~7.0.0",
"ts-node": "~7.0.0",
"typescript": "~4.4.4"
}
}