From 23ff789453aedc01f0389c9b8535f6401d2fccdb Mon Sep 17 00:00:00 2001 From: Maxence Date: Mon, 13 Jan 2025 16:29:34 +0100 Subject: [PATCH] start login process --- src/app/app.config.ts | 3 +- src/app/app.routes.ts | 4 +- .../home-page/home-page.component.spec.ts | 3 +- .../login-page/login-page.component.css | 0 .../login-page/login-page.component.html | 55 +++++++++++++++++++ .../login-page/login-page.component.spec.ts | 23 ++++++++ .../login-page/login-page.component.ts | 41 ++++++++++++++ .../components/navbar/navbar.component.html | 4 +- src/app/components/navbar/navbar.component.ts | 3 +- src/app/model/User.ts | 4 ++ src/app/services/login.service.ts | 13 +++-- 11 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 src/app/components/login-page/login-page.component.css create mode 100644 src/app/components/login-page/login-page.component.html create mode 100644 src/app/components/login-page/login-page.component.spec.ts create mode 100644 src/app/components/login-page/login-page.component.ts create mode 100644 src/app/model/User.ts diff --git a/src/app/app.config.ts b/src/app/app.config.ts index a1e7d6f..735448d 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,8 +1,9 @@ import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; +import { provideHttpClient } from '@angular/common/http'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { - providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)] + providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes),provideHttpClient()] }; diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index a3c8012..a46a812 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,8 +1,10 @@ import { Routes } from '@angular/router'; import { HomePageComponent } from './components/home-page/home-page.component'; import { LeafletMapComponent } from './components/leaflet-map/leaflet-map.component'; +import { LoginPageComponent } from './components/login-page/login-page.component'; export const routes: Routes = [ {path: '', component: HomePageComponent}, - {path: 'map', component: LeafletMapComponent} + {path: 'map', component: LeafletMapComponent}, + {path: 'sign', component:LoginPageComponent} ]; diff --git a/src/app/components/home-page/home-page.component.spec.ts b/src/app/components/home-page/home-page.component.spec.ts index c6f955d..7f150ef 100644 --- a/src/app/components/home-page/home-page.component.spec.ts +++ b/src/app/components/home-page/home-page.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { HomePageComponent } from './home-page.component'; +import { LoginPageComponent } from '../login-page/login-page.component'; describe('HomePageComponent', () => { let component: HomePageComponent; @@ -8,7 +9,7 @@ describe('HomePageComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [HomePageComponent] + imports: [HomePageComponent,LoginPageComponent] }) .compileComponents(); diff --git a/src/app/components/login-page/login-page.component.css b/src/app/components/login-page/login-page.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/login-page/login-page.component.html b/src/app/components/login-page/login-page.component.html new file mode 100644 index 0000000..babe5a7 --- /dev/null +++ b/src/app/components/login-page/login-page.component.html @@ -0,0 +1,55 @@ + + + + + + + + \ No newline at end of file diff --git a/src/app/components/login-page/login-page.component.spec.ts b/src/app/components/login-page/login-page.component.spec.ts new file mode 100644 index 0000000..df4c6d2 --- /dev/null +++ b/src/app/components/login-page/login-page.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginPageComponent } from './login-page.component'; + +describe('LoginPageComponent', () => { + let component: LoginPageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LoginPageComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LoginPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/login-page/login-page.component.ts b/src/app/components/login-page/login-page.component.ts new file mode 100644 index 0000000..5476c47 --- /dev/null +++ b/src/app/components/login-page/login-page.component.ts @@ -0,0 +1,41 @@ +import { Component } from '@angular/core'; +import { LoginService } from '../../services/login.service'; +import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; +import { FormBuilder } from '@angular/forms'; +import { Router } from '@angular/router'; +import { FormGroup } from '@angular/forms'; +import { User } from '../../model/User'; + +@Component({ + selector: 'app-login-page', + imports: [FormsModule, ReactiveFormsModule], + templateUrl: './login-page.component.html', + styleUrl: './login-page.component.css' +}) +export class LoginPageComponent { + + userForm: FormGroup; + user: User = {login: '', password: ''} + + constructor(private loginService: LoginService, private fb: FormBuilder, private router: Router) { + this.userForm = this.fb.group({ + login: [this.user.login, [Validators.required, Validators.minLength(3)]], + password: [this.user.password, [Validators.required, Validators.minLength(3)]], + }); + } + +public login(){ + if (this.userForm.invalid){ + return; + } + + let login = this.userForm.value.login; + let password = this.userForm.value.password + + this.user.login = login; + this.user.password = password; + + console.log(this.loginService.login(login,password)); + + } +} diff --git a/src/app/components/navbar/navbar.component.html b/src/app/components/navbar/navbar.component.html index b2cfde5..4295ecc 100644 --- a/src/app/components/navbar/navbar.component.html +++ b/src/app/components/navbar/navbar.component.html @@ -128,7 +128,9 @@ aria-current="page" >

Home

-

Connexion

+ + + diff --git a/src/app/components/navbar/navbar.component.ts b/src/app/components/navbar/navbar.component.ts index bbc1155..d25d83e 100644 --- a/src/app/components/navbar/navbar.component.ts +++ b/src/app/components/navbar/navbar.component.ts @@ -1,10 +1,11 @@ import { Component, OnInit } from '@angular/core'; import { NgIf } from '@angular/common'; import { Router, NavigationEnd } from '@angular/router'; +import { LoginPageComponent } from "../login-page/login-page.component"; @Component({ selector: 'app-navbar', - imports: [NgIf], + imports: [NgIf, LoginPageComponent], templateUrl: './navbar.component.html', }) export class NavbarComponent implements OnInit { diff --git a/src/app/model/User.ts b/src/app/model/User.ts new file mode 100644 index 0000000..ea86d19 --- /dev/null +++ b/src/app/model/User.ts @@ -0,0 +1,4 @@ +export interface User{ + login:string; + password:string; +} \ No newline at end of file diff --git a/src/app/services/login.service.ts b/src/app/services/login.service.ts index bc33419..26351e4 100644 --- a/src/app/services/login.service.ts +++ b/src/app/services/login.service.ts @@ -1,4 +1,4 @@ -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { environment } from '../../environments/environment'; @@ -11,12 +11,13 @@ export class LoginService { constructor(private http: HttpClient) {} - login(username: string, password: string): Observable { - return this.http.get(this.apiUrl + '/login', { - params: { + login(username: string, password: string): any { + const headers= new HttpHeaders({ + 'Content-Type':'application/x-www-form-urlencoded' + }) + return this.http.post(this.apiUrl + '/login', { username: username, password: password, - }, - }); + }, {headers}).subscribe(); } }