diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index edf06fa..a269847 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -3,8 +3,6 @@ import {Routes, RouterModule} from '@angular/router'; import {AuthGuard, AuthUpdateGuard, AuthenticatedGuard, AnonymousGuard} from './auth/auth.guard'; import {ImprintComponent, PrivacyPolicyComponent, TermsOfServiceComponent} from './pages/general/general.component'; -import {LoginComponent} from './pages/login/login.component'; -import {LoginTotpComponent} from './pages/login-totp/login-totp.component'; import {FormLoginComponent} from './pages/form-login/form-login.component'; import {FormLoginTotpComponent} from './pages/form-login-totp/form-login-totp.component'; import {PasswordComponent} from './pages/password/password.component'; @@ -30,8 +28,8 @@ const routes: Routes = [ {path: 'imprint', component: ImprintComponent, canActivate: [AuthUpdateGuard]}, {path: 'privacy-policy', component: PrivacyPolicyComponent, canActivate: [AuthUpdateGuard]}, {path: 'terms-of-service', component: TermsOfServiceComponent, canActivate: [AuthUpdateGuard]}, - {path: 'login', component: LoginComponent, canActivate: [AnonymousGuard]}, - {path: 'login/totp', component: LoginTotpComponent, canActivate: [AnonymousGuard]}, + {path: 'login', component: FormLoginComponent, canActivate: [AnonymousGuard]}, + {path: 'login/totp', component: FormLoginTotpComponent, canActivate: [AnonymousGuard]}, {path: 'service-login', component: FormLoginComponent, canActivate: [AnonymousGuard]}, {path: 'service-login/totp', component: FormLoginTotpComponent, canActivate: [AnonymousGuard]}, {path: 'password', component: PasswordComponent, canActivate: [AnonymousGuard]}, diff --git a/src/app/pages/form-login-totp/form-login-totp.component.html b/src/app/pages/form-login-totp/form-login-totp.component.html index 72d4664..fa2a9d3 100644 --- a/src/app/pages/form-login-totp/form-login-totp.component.html +++ b/src/app/pages/form-login-totp/form-login-totp.component.html @@ -1,28 +1,24 @@ -
- - - -

{{'security.2fa.totp.external' | i18n}}open_in_new -

- - {{'security.2fa.totp.invalid' | i18n}} + + + +

{{'security.2fa.totp.external' | i18n}}open_in_new + +

+ + {{'security.2fa.totp.invalid' | i18n}} + + + + + {{'security.2fa.totp.missing' | i18n}} - - - - {{'security.2fa.totp.missing' | i18n}} - - - - {{'security.2fa.totp.keepSession' | i18n}} - -
- - - -
- + +
+ + + +
\ No newline at end of file diff --git a/src/app/pages/form-login-totp/form-login-totp.component.ts b/src/app/pages/form-login-totp/form-login-totp.component.ts index 17d070b..07b0471 100644 --- a/src/app/pages/form-login-totp/form-login-totp.component.ts +++ b/src/app/pages/form-login-totp/form-login-totp.component.ts @@ -1,7 +1,8 @@ -import { Component, OnInit } from '@angular/core'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import {Component, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {ActivatedRoute} from '@angular/router'; -import { environment } from '../../../environments/environment'; +import {environment} from '../../../environments/environment'; @Component({ selector: 'app-form-login-totp', @@ -10,16 +11,17 @@ import { environment } from '../../../environments/environment'; }) export class FormLoginTotpComponent implements OnInit { - form: FormGroup; - public loginInvalid: boolean; - public apiUrl = environment.apiUrl; + loginInvalid: boolean; + apiUrl = environment.apiUrl; - constructor(private formBuilder: FormBuilder) { } + constructor( + private route: ActivatedRoute) {} async ngOnInit() { - this.form = this.formBuilder.group({ - code: ['', Validators.required], - keep : [''] + this.route.queryParams.subscribe(params => { + if(params['error'] || params['error'] == '') { + this.loginInvalid = true; + } }); } diff --git a/src/app/pages/form-login/form-login.component.html b/src/app/pages/form-login/form-login.component.html index 3132be2..1d10fd9 100644 --- a/src/app/pages/form-login/form-login.component.html +++ b/src/app/pages/form-login/form-login.component.html @@ -1,37 +1,34 @@ -
- - - -

{{'login.external' | i18n}}open_in_new - -

- - {{'login.invalid' | i18n}} + + + +

{{'login.external' | i18n}}open_in_new + +

+ + {{'login.invalid' | i18n}} + + + + + {{'username.missing' | i18n}} - - - - {{'username.missing' | i18n}} - - - - - - {{'password.invalid.hint' | i18n}} - - - - {{'login.keepSession' | i18n}} - -
- - - {{'password.forgot' | i18n}} - -
- + + + + + {{'password.invalid.hint' | i18n}} + + + + {{'login.keepSession' | i18n}} + +
+ + + {{'password.forgot' | i18n}} + +
\ No newline at end of file diff --git a/src/app/pages/form-login/form-login.component.ts b/src/app/pages/form-login/form-login.component.ts index 996d06a..0a5a474 100644 --- a/src/app/pages/form-login/form-login.component.ts +++ b/src/app/pages/form-login/form-login.component.ts @@ -1,7 +1,7 @@ -import { Component, OnInit } from '@angular/core'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import {Component, ElementRef, OnInit, ViewChild} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; -import { environment } from '../../../environments/environment'; +import {environment} from '../../../environments/environment'; @Component({ selector: 'app-form-login', @@ -10,20 +10,33 @@ import { environment } from '../../../environments/environment'; }) export class FormLoginComponent implements OnInit { - form: FormGroup; - public loginInvalid: boolean; - public apiUrl = environment.apiUrl; + @ViewChild('loginForm') loginForm: ElementRef; + loginInvalid: boolean; + apiUrl = environment.apiUrl; + targetRoute : string; - constructor(private formBuilder: FormBuilder) { } + constructor( + private router: Router, + private route: ActivatedRoute) {} async ngOnInit() { - this.form = this.formBuilder.group({ - username: ['', Validators.required], - password: ['', Validators.required], - keep : [''] + this.route.queryParams.subscribe(params => { + if(params['target']) { + this.targetRoute = params['target']; + this.router.navigate([], {queryParams: {target: null}, queryParamsHandling: 'merge'}); + } + if(params['error'] || params['error'] == '') { + this.loginInvalid = true; + } }); + + } + + ngAfterViewInit(): void { + if(this.targetRoute) { + this.loginForm.nativeElement.action = this.loginForm.nativeElement.action + "?forward=" + window.location.origin + this.targetRoute; + } } - } diff --git a/src/app/pages/services/services.component.html b/src/app/pages/services/services.component.html index 57d32da..ecdbecc 100644 --- a/src/app/pages/services/services.component.html +++ b/src/app/pages/services/services.component.html @@ -16,11 +16,14 @@ {{'service.name' | i18n}} - + {{'services.' + service.name + '.title' | i18n}} open_in_new + + {{'services.' + service.name + '.title' | i18n}} +
{{'services.' + service.name + '.subtitle' | i18n}}