diff --git a/daidokoro/src/app/app.routes.ts b/daidokoro/src/app/app.routes.ts
index 1654526..586ade3 100644
--- a/daidokoro/src/app/app.routes.ts
+++ b/daidokoro/src/app/app.routes.ts
@@ -1,6 +1,5 @@
import { Routes } from '@angular/router';
-import {LoginComponent} from "./component/login/login.component";
+import {AuthGuard} from "./guard.guard";
export const routes: Routes = [
- {path: 'login',component:LoginComponent}
];
diff --git a/daidokoro/src/app/component/accueil/accueil.component.html b/daidokoro/src/app/component/accueil/accueil.component.html
index 2e76ae7..bb0bee6 100644
--- a/daidokoro/src/app/component/accueil/accueil.component.html
+++ b/daidokoro/src/app/component/accueil/accueil.component.html
@@ -62,6 +62,13 @@
+
+
+
diff --git a/daidokoro/src/app/component/accueil/accueil.component.ts b/daidokoro/src/app/component/accueil/accueil.component.ts
index 21f82a7..a9cdaa1 100644
--- a/daidokoro/src/app/component/accueil/accueil.component.ts
+++ b/daidokoro/src/app/component/accueil/accueil.component.ts
@@ -8,6 +8,7 @@ import {LinkService} from "../../service/link.service";
import {Link} from "../../model/link.model";
import {LoginService} from "../../service/login.service";
import {RouterLink, RouterLinkActive,RouterOutlet} from "@angular/router";
+import {CommonModule} from "@angular/common";
@Component({
selector: 'app-accueil',
@@ -15,7 +16,7 @@ import {RouterLink, RouterLinkActive,RouterOutlet} from "@angular/router";
imports: [
RecipeListComponent,
RecipeFormComponent,
- NgIf,
+ CommonModule,
NgForOf,
RouterLink,
RouterOutlet,
@@ -29,11 +30,6 @@ export class AccueilComponent {
constructor(private recipeService: RecipeService,private linkService: LinkService,private loginService: LoginService) {
- if(this.loginService.isLogged()){
- this.links.push({$name: '/logout',$link: '/logout'});
- }else{
- this.links.push({$name: '/login',$link: '/login'});
- }
}
@@ -44,4 +40,19 @@ export class AccueilComponent {
toggleForm() {
this.isFormVisible = !this.isFormVisible;
}
+
+ onClickLogin(event: Event): void {
+ event.preventDefault(); // Prevent the default anchor behavior
+ this.loginService.login();
+ }
+
+ onClickLogout(event: Event): void {
+ event.preventDefault(); // Prevent the default anchor behavior
+ this.loginService.logout();
+ }
+
+ isLogged(): boolean {
+ return this.loginService.isLogged();
+ }
+
}
diff --git a/daidokoro/src/app/data/link.stub.ts b/daidokoro/src/app/data/link.stub.ts
index a4fe53c..909eb97 100644
--- a/daidokoro/src/app/data/link.stub.ts
+++ b/daidokoro/src/app/data/link.stub.ts
@@ -1,5 +1,6 @@
import {Link} from "../model/link.model";
export var LINKS :Link[] = [
- {$name:"/Accueil",$link:""}
+ {$name:"Accueil",$link:""},
+ {$name:"Ingredients",$link:"/ingredients"}
]
diff --git a/daidokoro/src/app/guard.guard.ts b/daidokoro/src/app/guard.guard.ts
new file mode 100644
index 0000000..22257e9
--- /dev/null
+++ b/daidokoro/src/app/guard.guard.ts
@@ -0,0 +1,17 @@
+import {CanActivateFn, Router} from '@angular/router';
+import {LoginService} from "./service/login.service";
+import {inject} from "@angular/core";
+
+
+export const AuthGuard: CanActivateFn = (route, state) => {
+ const auth = inject(LoginService)
+ const router = inject(Router);
+
+ if(!auth.isLogged()){
+ router.navigateByUrl('/login');
+ auth.login();
+ return false;
+ }
+ auth.logout();
+ return true;
+};
diff --git a/daidokoro/src/app/service/login.service.ts b/daidokoro/src/app/service/login.service.ts
index 387c626..455ef4b 100644
--- a/daidokoro/src/app/service/login.service.ts
+++ b/daidokoro/src/app/service/login.service.ts
@@ -5,17 +5,16 @@ import { Injectable } from '@angular/core';
})
export class LoginService {
- constructor() { }
-
- login() {
- localStorage.setItem('login', String(true));
+ login(): void {
+ localStorage.setItem('login', 'true');
}
- logout() : void {
- localStorage.setItem('login',String(false));
+ logout(): void {
+ localStorage.setItem('login', 'false');
}
- isLogged() : boolean {
- return JSON.parse(localStorage.getItem('login')!);
+ isLogged(): boolean {
+ const login = localStorage.getItem('login');
+ return login === 'true';
}
}
diff --git a/daidokoro/src/test/service/app.component.spec.ts b/daidokoro/src/test/service/app.component.spec.ts
index 4f8c748..bdc69f8 100644
--- a/daidokoro/src/test/service/app.component.spec.ts
+++ b/daidokoro/src/test/service/app.component.spec.ts
@@ -1,5 +1,5 @@
import { TestBed } from '@angular/core/testing';
-import { AppComponent } from './app.component';
+import { AppComponent } from '../../app/app.component';
describe('AppComponent', () => {
beforeEach(async () => {
diff --git a/daidokoro/src/test/service/guard.guard.spec.ts b/daidokoro/src/test/service/guard.guard.spec.ts
new file mode 100644
index 0000000..f64b228
--- /dev/null
+++ b/daidokoro/src/test/service/guard.guard.spec.ts
@@ -0,0 +1,17 @@
+import { TestBed } from '@angular/core/testing';
+import { CanActivateFn } from '@angular/router';
+
+import { AuthGuard } from '../../app/guard.guard';
+
+describe('guardGuard', () => {
+ const executeGuard: CanActivateFn = (...guardParameters) =>
+ TestBed.runInInjectionContext(() => AuthGuard(...guardParameters));
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ });
+
+ it('should be created', () => {
+ expect(executeGuard).toBeTruthy();
+ });
+});