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