From c95e87290f85011ab31fdf2039f627a05c3aec5f Mon Sep 17 00:00:00 2001
From: "narindra.rajohnso" <narindra-hasimanjaka-david.rajohnson@etu.hesge.ch>
Date: Thu, 8 Jun 2023 10:30:17 +0200
Subject: [PATCH] add token send and verify

---
 .../quizz-game/src/app/app-routing.module.ts  | 22 ++++++++++++
 Frontend/quizz-game/src/app/app.module.ts     | 18 ++++++++--
 .../src/app/homepage/homepage.component.css   |  0
 .../src/app/homepage/homepage.component.html  | 20 +++++++++++
 .../app/homepage/homepage.component.spec.ts   | 21 ++++++++++++
 .../src/app/homepage/homepage.component.ts    | 19 +++++++++++
 .../quizz-play/quizz-play.component.css       |  0
 .../quizz-play/quizz-play.component.html      |  1 +
 .../quizz-play/quizz-play.component.spec.ts   | 21 ++++++++++++
 .../quizz-play/quizz-play.component.ts        | 10 ++++++
 .../src/app/homepage/quizz.service.spec.ts    | 16 +++++++++
 .../src/app/homepage/quizz.service.ts         | 15 ++++++++
 .../waiting-players.component.css             |  0
 .../waiting-players.component.html            | 14 ++++++++
 .../waiting-players.component.spec.ts         | 21 ++++++++++++
 .../waiting-players.component.ts              | 24 +++++++++++++
 .../quizz-game/src/app/login/session-model.ts |  6 ++++
 .../src/app/login/session.service.spec.ts     | 16 +++++++++
 .../src/app/login/session.service.ts          | 34 +++++++++++++++++++
 .../app/login/sign-in/sign-in.component.ts    | 10 ++++--
 .../app/login/sign-up/sign-up.component.ts    |  8 +++--
 .../login/token-interceptor.service.spec.ts   | 16 +++++++++
 .../app/login/token-interceptor.service.ts    | 25 ++++++++++++++
 .../users/list-users/list-users.component.ts  |  5 +--
 24 files changed, 331 insertions(+), 11 deletions(-)
 create mode 100644 Frontend/quizz-game/src/app/homepage/homepage.component.css
 create mode 100644 Frontend/quizz-game/src/app/homepage/homepage.component.html
 create mode 100644 Frontend/quizz-game/src/app/homepage/homepage.component.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/homepage.component.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.css
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.html
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz.service.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/quizz.service.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.css
 create mode 100644 Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.html
 create mode 100644 Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.ts
 create mode 100644 Frontend/quizz-game/src/app/login/session.service.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/login/session.service.ts
 create mode 100644 Frontend/quizz-game/src/app/login/token-interceptor.service.spec.ts
 create mode 100644 Frontend/quizz-game/src/app/login/token-interceptor.service.ts

diff --git a/Frontend/quizz-game/src/app/app-routing.module.ts b/Frontend/quizz-game/src/app/app-routing.module.ts
index 4c9cd1f..fda8f9f 100644
--- a/Frontend/quizz-game/src/app/app-routing.module.ts
+++ b/Frontend/quizz-game/src/app/app-routing.module.ts
@@ -9,6 +9,9 @@ import {ListQuestionsComponent} from "./manage/questions/list-questions/list-que
 import {CreateUserComponent} from "./manage/users/create-user/create-user.component";
 import {CreateQuestionComponent} from "./manage/questions/create-question/create-question.component";
 import {AccountDetailsComponent} from "./manage/account-details/account-details.component";
+import {HomepageComponent} from "./homepage/homepage.component";
+import {WaitingPlayersComponent} from "./homepage/waiting-players/waiting-players.component";
+import {QuizzPlayComponent} from "./homepage/quizz-play/quizz-play.component";
 
 const routes: Routes = [
   { path: '', redirectTo: 'login', pathMatch: 'full' },
@@ -52,8 +55,27 @@ const routes: Routes = [
         component: AccountDetailsComponent
       }
     ]
+  },
+  { path: ':username/play',
+    component: HomepageComponent,
+    children: [
+      {
+        path: '',
+        redirectTo: 'waiting-players',
+        pathMatch: 'full'
+      },
+      {
+        path: 'waiting-players',
+        component: WaitingPlayersComponent
+      },
+      {
+        path: 'quizz-play',
+        component: QuizzPlayComponent
+      }
+    ]
   }
 
+
 ];
 
 @NgModule({
diff --git a/Frontend/quizz-game/src/app/app.module.ts b/Frontend/quizz-game/src/app/app.module.ts
index 9e50a3d..48bd2b7 100644
--- a/Frontend/quizz-game/src/app/app.module.ts
+++ b/Frontend/quizz-game/src/app/app.module.ts
@@ -9,7 +9,7 @@ import { LoginComponent } from './login/login.component';
 import {CommonModule, NgOptimizedImage} from "@angular/common";
 import { FormsModule } from '@angular/forms';
 import { ReactiveFormsModule } from '@angular/forms';
-import { HttpClientModule } from '@angular/common/http';
+import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
 import { ErrorloginComponent } from './login/errorlogin/errorlogin.component';
 import { ManageComponent } from './manage/manage.component';
 import { ListUsersComponent } from './manage/users/list-users/list-users.component';
@@ -22,6 +22,10 @@ import { LoadingComponent } from './manage/component/loading/loading.component';
 import { EditUserComponent } from './manage/users/edit-user/edit-user.component';
 import { EditQuestionComponent } from './manage/questions/edit-question/edit-question.component';
 import { DeleteItemComponent } from './manage/component/delete-item/delete-item.component';
+import { HomepageComponent } from './homepage/homepage.component';
+import { WaitingPlayersComponent } from './homepage/waiting-players/waiting-players.component';
+import { QuizzPlayComponent } from './homepage/quizz-play/quizz-play.component';
+import {TokenInterceptorService} from "./login/token-interceptor.service";
 
 
 
@@ -42,7 +46,10 @@ import { DeleteItemComponent } from './manage/component/delete-item/delete-item.
     LoadingComponent,
     EditUserComponent,
     EditQuestionComponent,
-    DeleteItemComponent
+    DeleteItemComponent,
+    HomepageComponent,
+    WaitingPlayersComponent,
+    QuizzPlayComponent
   ],
   imports: [
     BrowserModule,
@@ -53,7 +60,12 @@ import { DeleteItemComponent } from './manage/component/delete-item/delete-item.
     HttpClientModule,
     NgOptimizedImage
   ],
-  providers: [],
+  providers: [{
+    provide: HTTP_INTERCEPTORS,
+    useClass: TokenInterceptorService,
+    multi: true
+  }],
+
   bootstrap: [AppComponent]
 })
 export class AppModule { }
diff --git a/Frontend/quizz-game/src/app/homepage/homepage.component.css b/Frontend/quizz-game/src/app/homepage/homepage.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/Frontend/quizz-game/src/app/homepage/homepage.component.html b/Frontend/quizz-game/src/app/homepage/homepage.component.html
new file mode 100644
index 0000000..114dc72
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/homepage.component.html
@@ -0,0 +1,20 @@
+<div class="flex h-screen">
+  <div class="w-1/4 flex h-screen flex-col justify-between border-e bg-white">
+
+    <div class="bg-white p-8">
+      <h1 class="text-2xl font-bold mb-4">Joueurs Connectés</h1>
+      <ul class="text-gray-600">
+        <li *ngFor="let player of players" class="mb-2">{{ player.firstname }} {{ player.lastname }}</li>
+      </ul>
+      <ng-container *ngIf="players.length === 3">
+        <p class="text-green-500 mt-4">Tous les joueurs sont connectés ! La partie peut commencer.</p>
+      </ng-container>
+    </div>
+
+
+  </div>
+  <div class="w-3/4 h-screen">
+    <router-outlet></router-outlet>
+  </div>
+</div>
+
diff --git a/Frontend/quizz-game/src/app/homepage/homepage.component.spec.ts b/Frontend/quizz-game/src/app/homepage/homepage.component.spec.ts
new file mode 100644
index 0000000..5115657
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/homepage.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { HomepageComponent } from './homepage.component';
+
+describe('HomepageComponent', () => {
+  let component: HomepageComponent;
+  let fixture: ComponentFixture<HomepageComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [HomepageComponent]
+    });
+    fixture = TestBed.createComponent(HomepageComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/homepage/homepage.component.ts b/Frontend/quizz-game/src/app/homepage/homepage.component.ts
new file mode 100644
index 0000000..50fa2ce
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/homepage.component.ts
@@ -0,0 +1,19 @@
+import {Component, OnInit} from '@angular/core';
+import {User} from "../manage/users/user-model";
+
+@Component({
+  selector: 'app-homepage',
+  templateUrl: './homepage.component.html',
+  styleUrls: ['./homepage.component.css']
+})
+export class HomepageComponent implements OnInit {
+  players: User[]= [];
+
+  ngOnInit() {
+    this.players.push(new User("test", "voila", "moi", "sdfg@sdf.th", "user", "fsfdss"));
+  }
+
+  onUserConnect(user:User){
+    this.players.push(user);
+  }
+}
diff --git a/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.css b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.html b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.html
new file mode 100644
index 0000000..d4ff39b
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.html
@@ -0,0 +1 @@
+<p>quizz-play works!</p>
diff --git a/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.spec.ts b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.spec.ts
new file mode 100644
index 0000000..2c9ee6d
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuizzPlayComponent } from './quizz-play.component';
+
+describe('QuizzPlayComponent', () => {
+  let component: QuizzPlayComponent;
+  let fixture: ComponentFixture<QuizzPlayComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [QuizzPlayComponent]
+    });
+    fixture = TestBed.createComponent(QuizzPlayComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.ts b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.ts
new file mode 100644
index 0000000..5308be1
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/quizz-play/quizz-play.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-quizz-play',
+  templateUrl: './quizz-play.component.html',
+  styleUrls: ['./quizz-play.component.css']
+})
+export class QuizzPlayComponent {
+
+}
diff --git a/Frontend/quizz-game/src/app/homepage/quizz.service.spec.ts b/Frontend/quizz-game/src/app/homepage/quizz.service.spec.ts
new file mode 100644
index 0000000..1c8c518
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/quizz.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { QuizzService } from './quizz.service';
+
+describe('QuizzService', () => {
+  let service: QuizzService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(QuizzService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/homepage/quizz.service.ts b/Frontend/quizz-game/src/app/homepage/quizz.service.ts
new file mode 100644
index 0000000..36b1331
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/quizz.service.ts
@@ -0,0 +1,15 @@
+import { Injectable } from '@angular/core';
+import {User} from "../manage/users/user-model";
+import {BehaviorSubject} from "rxjs";
+
+@Injectable({
+  providedIn: 'root'
+})
+export class QuizzService {
+  private _players= new BehaviorSubject<User[]>([]);
+
+  get players(){
+    return this._players.asObservable();
+  }
+  constructor() { }
+}
diff --git a/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.css b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.html b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.html
new file mode 100644
index 0000000..934d865
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.html
@@ -0,0 +1,14 @@
+<script src="waiting-players.component.ts"></script>
+<div class="flex items-center justify-center h-screen bg-primary">
+  <div class="bg-white rounded-lg shadow p-8">
+    <h1 class="text-2xl font-bold mb-4">Bienvenue></h1>
+    <h2 class="text-2xl font-bold mb-4">En attente de 3 joueurs...</h2>
+    <p class="text-gray-600">Veuillez patienter pendant que d'autres joueurs se connectent.</p>
+    <div class="flex justify-center mt-6">
+      <div class="w-8 h-8 bg-sky-500 rounded-full animate-bounce"></div>
+      <div class="w-8 h-8 bg-sky-500 rounded-full mx-1 "></div>
+      <div class="w-8 h-8 bg-sky-500 rounded-full"></div>
+    </div>
+  </div>
+</div>
+
diff --git a/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.spec.ts b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.spec.ts
new file mode 100644
index 0000000..5140f89
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { WaitingPlayersComponent } from './waiting-players.component';
+
+describe('WaitingPlayersComponent', () => {
+  let component: WaitingPlayersComponent;
+  let fixture: ComponentFixture<WaitingPlayersComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [WaitingPlayersComponent]
+    });
+    fixture = TestBed.createComponent(WaitingPlayersComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.ts b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.ts
new file mode 100644
index 0000000..cc6d73f
--- /dev/null
+++ b/Frontend/quizz-game/src/app/homepage/waiting-players/waiting-players.component.ts
@@ -0,0 +1,24 @@
+import {Component, OnInit} from '@angular/core';
+import {Session} from "../../login/session-model";
+import {SessionService} from "../../login/session.service";
+import {Subscription} from "rxjs";
+
+@Component({
+  selector: 'app-waiting-players',
+  templateUrl: './waiting-players.component.html',
+  styleUrls: ['./waiting-players.component.css']
+})
+export class WaitingPlayersComponent implements OnInit{
+  userInfo!: Session;
+  userSub!: Subscription;
+  constructor(private sessionService: SessionService) {
+  }
+
+  ngOnInit() {
+    this.userSub=this.sessionService.sessionSubject.subscribe((session)=>{
+      this.userInfo=session;
+    })
+    console.log(this.userInfo);
+  }
+
+}
diff --git a/Frontend/quizz-game/src/app/login/session-model.ts b/Frontend/quizz-game/src/app/login/session-model.ts
index e69de29..1039275 100644
--- a/Frontend/quizz-game/src/app/login/session-model.ts
+++ b/Frontend/quizz-game/src/app/login/session-model.ts
@@ -0,0 +1,6 @@
+export class Session {
+  constructor(
+    public firstname: string,
+    public lastname: string
+  ) {}
+}
diff --git a/Frontend/quizz-game/src/app/login/session.service.spec.ts b/Frontend/quizz-game/src/app/login/session.service.spec.ts
new file mode 100644
index 0000000..4238e14
--- /dev/null
+++ b/Frontend/quizz-game/src/app/login/session.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { SessionService } from './session.service';
+
+describe('SessionService', () => {
+  let service: SessionService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(SessionService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/login/session.service.ts b/Frontend/quizz-game/src/app/login/session.service.ts
new file mode 100644
index 0000000..33b4872
--- /dev/null
+++ b/Frontend/quizz-game/src/app/login/session.service.ts
@@ -0,0 +1,34 @@
+import { Injectable } from '@angular/core';
+import {Subject} from "rxjs";
+import {Session} from "./session-model";
+
+@Injectable({
+  providedIn: 'root'
+})
+export class SessionService {
+  private static LS_SESSION_TOKEN: string = "sessionToken"
+
+  private _session!: Session;
+
+  public sessionSubject: Subject<Session> = new Subject<Session>()
+
+  get session(): Session {
+    return this._session
+  }
+
+  set session(session: Session) {
+    this._session = session
+    this.sessionSubject.next(this._session)
+  }
+
+  get token(): string {
+    return localStorage.getItem(SessionService.LS_SESSION_TOKEN) ?? ""
+  }
+
+  set token(token: string) {
+    localStorage.setItem(SessionService.LS_SESSION_TOKEN, token)
+  }
+
+  constructor() { }
+
+}
diff --git a/Frontend/quizz-game/src/app/login/sign-in/sign-in.component.ts b/Frontend/quizz-game/src/app/login/sign-in/sign-in.component.ts
index 2699332..45b29ab 100644
--- a/Frontend/quizz-game/src/app/login/sign-in/sign-in.component.ts
+++ b/Frontend/quizz-game/src/app/login/sign-in/sign-in.component.ts
@@ -3,6 +3,8 @@ import {Router} from "@angular/router";
 import {FormControl, FormGroup, Validators} from "@angular/forms";
 import {HttpClient} from "@angular/common/http";
 import {ErrorLogin, LoginService} from "../login.service";
+import {SessionService} from "../session.service";
+import {Session} from "../session-model";
 
 @Component({
   selector: 'app-sign-in',
@@ -13,7 +15,7 @@ export class SignInComponent implements OnInit{
   formData!: FormGroup;
   errorOccured!: boolean;
 
-  constructor(private httpClient: HttpClient, private loginService: LoginService, private router: Router) {
+  constructor(private sessionService: SessionService, private httpClient: HttpClient, private loginService: LoginService, private router: Router) {
 
   }
 
@@ -40,13 +42,15 @@ export class SignInComponent implements OnInit{
     let username:string=this.formData.value.username;
     this.httpClient.post<any>('http://localhost:30992/api/v1/guest/'+username, passwordPost).subscribe(
       response => {
+        console.log("reponse sign in:", response);
+        this.sessionService.token=response.token;
+        this.sessionService.session=new Session(response.firstname, response.lastname);
         if(response.message === "USER_ALLOWED"){
-          this.router.navigate(['/'+username+'/manage']);
+          this.router.navigate(['/'+username+'/play']);
         }
         if(response.message === "ADMIN_ALLOWED"){
           this.router.navigate(['/' + username + '/manage'])
         }
-        console.log(response.message);
 
       },
       error => {
diff --git a/Frontend/quizz-game/src/app/login/sign-up/sign-up.component.ts b/Frontend/quizz-game/src/app/login/sign-up/sign-up.component.ts
index e96e5f6..0f943d7 100644
--- a/Frontend/quizz-game/src/app/login/sign-up/sign-up.component.ts
+++ b/Frontend/quizz-game/src/app/login/sign-up/sign-up.component.ts
@@ -2,6 +2,7 @@ import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
 import {FormControl, FormGroup, Validators} from "@angular/forms";
 import {HttpClient} from "@angular/common/http";
 import {ErrorLogin, LoginService} from "../login.service";
+import {Router} from "@angular/router";
 
 @Component({
   selector: 'app-sign-up',
@@ -12,7 +13,7 @@ export class SignUpComponent{
   formData!: FormGroup;
   @ViewChild('passwordConfirmation') passwordConfirmation!: ElementRef
   errorOccured!: boolean;
-  constructor(private httpClient: HttpClient, private loginService: LoginService) { }
+  constructor(private router: Router, private httpClient: HttpClient, private loginService: LoginService) { }
 
   ngOnInit() {
     this.errorOccured=false;
@@ -34,8 +35,9 @@ export class SignUpComponent{
     this.formData.value.accountType=0;
     this.httpClient.post<any>('http://localhost:30992/api/v1/guest/create-account', this.formData.value).subscribe(
       response => {
-        console.log(response); // Affiche la réponse du serveur dans la console
-        // Effectuer une action en fonction de la réponse du serveur ici
+        console.log(response);
+        this.router.navigate(['/login/sign-in']);
+
       },
       error => {
         this.errorOccured=true;
diff --git a/Frontend/quizz-game/src/app/login/token-interceptor.service.spec.ts b/Frontend/quizz-game/src/app/login/token-interceptor.service.spec.ts
new file mode 100644
index 0000000..b3ca21c
--- /dev/null
+++ b/Frontend/quizz-game/src/app/login/token-interceptor.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { TokenInterceptorService } from './token-interceptor.service';
+
+describe('TokenInterceptorService', () => {
+  let service: TokenInterceptorService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(TokenInterceptorService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/Frontend/quizz-game/src/app/login/token-interceptor.service.ts b/Frontend/quizz-game/src/app/login/token-interceptor.service.ts
new file mode 100644
index 0000000..4747a5d
--- /dev/null
+++ b/Frontend/quizz-game/src/app/login/token-interceptor.service.ts
@@ -0,0 +1,25 @@
+import { Injectable } from '@angular/core';
+import {SessionService} from "./session.service";
+import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http";
+import {Observable} from "rxjs";
+
+@Injectable({
+  providedIn: 'root'
+})
+export class TokenInterceptorService implements HttpInterceptor {
+
+  constructor(private sessionService: SessionService) { }
+
+  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
+    if ((req.url.indexOf("127.0.0.1") !== -1 || req.url.indexOf("localhost") !== -1) && req.url.indexOf("assets") === -1) {
+      req = req.clone({
+        setHeaders: {
+          Authorization: "Bearer " + this.sessionService.token
+        }
+      })
+    }
+
+    return next.handle(req)
+  }
+
+}
diff --git a/Frontend/quizz-game/src/app/manage/users/list-users/list-users.component.ts b/Frontend/quizz-game/src/app/manage/users/list-users/list-users.component.ts
index 39d0ffa..4fbfe7d 100644
--- a/Frontend/quizz-game/src/app/manage/users/list-users/list-users.component.ts
+++ b/Frontend/quizz-game/src/app/manage/users/list-users/list-users.component.ts
@@ -63,13 +63,14 @@ export class ListUsersComponent implements OnInit, OnDestroy {
     this.modalUser=false;
     this.userEdited=null;
     this.alertDelete=false;
-    if(value !== "error"){
+    if(value !== "error" && value !== undefined){
       this.alertSuccess=value;
       this.addSuccess=true;
       setTimeout(() => {
         this.addSuccess = false;
       }, 5000);
-    }else{
+    }
+    if(value === "error"){
       this.errorOccured=true;
       setTimeout(() => {
         this.errorOccured = false;
-- 
GitLab