From 4bd715d14b6085f563d13bf6951a788c53475318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Raumsch=C3=BCssel?= <franz.raumschuessel@stud.th-deg.de> Date: Wed, 25 Nov 2020 10:10:50 +0100 Subject: [PATCH] login added --- src/app/login/login.component.html | 23 ++++++++++++++++++++++- src/app/login/login.component.spec.ts | 18 ++++++++++++++++-- src/app/login/login.component.ts | 24 ++++++++++++++++++++++-- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index 147cfc4..3e7374e 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -1 +1,22 @@ -<p>login works!</p> +<div> + <h2>{{'cLoginText'|translate}}</h2> + <form [formGroup]="loginForm" (ngSubmit)="login()"> + <p [ngClass]="{ 'has-error': isSubmitted && formControls.email.errors }"> + <input type="email" placeholder="E-Mail" formControlName="email"> + </p> + <div *ngIf="isSubmitted && formControls.email.errors"> + <div *ngIf="formControls.email.errors.required">E-Mail is required</div> + </div> + <p [ngClass]="{ 'has-error': isSubmitted && formControls.password.errors }"> + <input type="password" placeholder="Password" formControlName="password"> + </p> + <div *ngIf="isSubmitted && formControls.password.errors"> + <div *ngIf="formControls.password.errors.required">Password is required</div> + </div> + <p> + <button mat-button type="submit" color="warn">LOGIN</button> + <!-- <input type="submit" value="Log in">--> + </p> + </form> + </div> + \ No newline at end of file diff --git a/src/app/login/login.component.spec.ts b/src/app/login/login.component.spec.ts index d6d85a8..0fec96c 100644 --- a/src/app/login/login.component.spec.ts +++ b/src/app/login/login.component.spec.ts @@ -2,15 +2,29 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { LoginComponent } from './login.component'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { FormsModule } from '@angular/forms' +import { ReactiveFormsModule } from '@angular/forms'; +import { TranslateModule, TranslateService, TranslateStore } from "@ngx-translate/core"; + describe('LoginComponent', () => { let component: LoginComponent; let fixture: ComponentFixture<LoginComponent>; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ LoginComponent ] + declarations: [LoginComponent], + imports: [ + RouterTestingModule, + TranslateModule.forRoot(), + ReactiveFormsModule, + FormsModule + ], + //providers: [TranslateService, TranslateStore] + }) - .compileComponents(); + .compileComponents(); })); beforeEach(() => { diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index 4f58421..467f0f7 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -1,15 +1,35 @@ import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router } from '@angular/router'; +import { JwtService } from '../jwt.service'; @Component({ selector: 'app-login', templateUrl: './login.component.html', - styleUrls: ['./login.component.css'] + styleUrls: ['./login.component.scss'] }) export class LoginComponent implements OnInit { - constructor() { } + constructor(private jwtService: JwtService, private router: Router, private formBuilder: FormBuilder) { } + + loginForm: FormGroup; + isSubmitted = false; ngOnInit(): void { + this.loginForm = this.formBuilder.group({ + email: ['', Validators.required], + password: ['', Validators.required] + }); } + get formControls() { return this.loginForm.controls; } + + login() { + this.isSubmitted = true; + if (this.loginForm.invalid) { + return; + } + this.jwtService.login(this.loginForm.value); + this.router.navigateByUrl('/admin'); + } } -- GitLab