moved login component; improved documentation; other minor improvements

This commit is contained in:
2026-06-11 12:55:01 +02:00
parent ede486cce8
commit a58078dd1c
13 changed files with 1682 additions and 128 deletions

77
src/app/login/login.ts Normal file
View File

@@ -0,0 +1,77 @@
import { Component, inject, signal } from '@angular/core';
import { FormBuilder, FormsModule, Validators } from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { InputText } from 'primeng/inputtext';
import { Button } from 'primeng/button';
import { ApolloService } from '../services/apollo.service';
import { LOGIN } from '../../graphql/base-definitions';
import { LoginMutation } from '../generated';
import { lastValueFrom } from 'rxjs';
import { AuthenticationResult } from '../schema-types';
import { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'app-login',
imports: [
FormsModule,
ReactiveFormsModule,
InputText,
Button,
],
templateUrl: './login.html',
styles: [`
@tailwind base;
@tailwind components;
@tailwind utilities;
input[pInputText] {
padding: 0.5rem !important;
border-width: 2px !important;
}
`],
})
export class Login {
readonly apollo = inject(ApolloService);
readonly fb = inject(FormBuilder);
readonly router = inject(Router);
readonly loginForm = this.fb.group({
username: ['', Validators.required],
password: ['', Validators.required],
});
redirectTo = '/';
readonly loading = signal(false);
constructor(private readonly route: ActivatedRoute) {
this.route.queryParams.subscribe(params => {
if(params['redirectTo']) {
this.redirectTo = atob(params['redirectTo']);
console.log('redirectTo', this.redirectTo);
} else {
this.redirectTo = '/';
}
});
}
async onSubmit() {
this.loading.set(true);
try {
const result = await lastValueFrom(this.apollo.apollo().mutate<LoginMutation>({
mutation: LOGIN,
variables: {
username: this.loginForm.value.username,
password: this.loginForm.value.password,
},
}));
const authResult = result.data?.login as AuthenticationResult;
if(authResult.__typename === 'CurrentUser')
this.router.navigate([this.redirectTo]);
} catch (error) {
console.error(error);
} finally {
this.loading.set(false);
}
}
}