You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sandkasten-web/src/app/components/login/login.component.ts

75 lines
1.9 KiB

import { Component } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import {
FormControl,
Validators,
FormsModule,
ReactiveFormsModule,
NgForm,
} from '@angular/forms';
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
import { merge } from 'rxjs';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { CommonModule } from '@angular/common';
import { UserService } from 'src/app/services/user.service';
import { User } from 'src/app/models/user.model';
@Component({
selector: 'app-auth',
templateUrl: './login.component.html',
styleUrl: './login.component.css',
standalone: true,
imports: [
MatFormFieldModule,
MatInputModule,
FormsModule,
ReactiveFormsModule,
MatButtonModule,
MatIconModule,
CommonModule,
],
})
export class LoginComponent {
hide = true;
email = new FormControl('', [Validators.required, Validators.email]);
login = new FormControl('', [Validators.required]);
password = new FormControl('', [Validators.required]);
errorMessage = '';
successLogin = '';
errorLogin = '';
constructor(private userService: UserService) {
merge(this.email.statusChanges, this.email.valueChanges).pipe(
takeUntilDestroyed()
);
}
loginAction() {
console.log('login user :', this.login.value);
const form: any = {
value: {
login: this.login.value,
password: this.password.value,
},
};
this.userService.loginUser(form).subscribe((response) => {
console.log('response :', response);
if ((response as any).success) {
this.successLogin = 'Vous êtes connecté.';
this.errorLogin = '';
} else {
this.errorLogin = "L'authentification a échoué.";
this.successLogin = '';
}
});
}
}