All checks were successful
Build Docker Image / Build Docker Image (push) Successful in 6m5s
-jwt services/jwt.service.ts -เพิ่ม เวลา expire jwt token
144 lines
4.6 KiB
TypeScript
144 lines
4.6 KiB
TypeScript
import { Component, OnInit, ViewChild } from '@angular/core';
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
import { GeneralService } from '../../services/generalservice';
|
|
import { LoginForgotComponent } from '../../../app/component/login-forgot/login-forgot.component';
|
|
import { LoginPageComponent } from '../../../app/component/login-page/login-page.component';
|
|
import { finalize } from 'rxjs/operators';
|
|
import { JwtService } from '../../services/jwt.service';
|
|
|
|
@Component({
|
|
selector: 'app-login-content',
|
|
standalone: false,
|
|
templateUrl: './login-content.component.html',
|
|
styleUrl: './login-content.component.css'
|
|
})
|
|
export class LoginContentComponent implements OnInit {
|
|
@ViewChild(LoginForgotComponent) loginForgotComponent!: LoginForgotComponent;
|
|
@ViewChild(LoginPageComponent) loginPageComponent!: LoginPageComponent;
|
|
mode: 'forgot-password' | 'default' = 'default';
|
|
|
|
constructor(
|
|
private generalService: GeneralService,
|
|
private route: ActivatedRoute,
|
|
private router: Router,
|
|
private jwtService: JwtService
|
|
) {}
|
|
|
|
ngOnInit(): void {
|
|
let param = this.route.snapshot.paramMap.get('mode');
|
|
|
|
if (param === 'forgot-password') {
|
|
this.mode = 'forgot-password';
|
|
} else {
|
|
// this.router.navigate(['/login']); // This can cause navigation loops
|
|
this.mode = 'default';
|
|
}
|
|
}
|
|
|
|
onSignInSubmit(value: any){
|
|
const uri = '/api/login/login';
|
|
const request = {
|
|
username: value.username,
|
|
password: value.password
|
|
};
|
|
|
|
if (this.loginPageComponent) {
|
|
this.loginPageComponent.busy = true;
|
|
this.loginPageComponent.message = '';
|
|
}
|
|
|
|
this.generalService.postRequest(uri, request)
|
|
.pipe(
|
|
finalize(() => {
|
|
if (this.loginPageComponent) {
|
|
this.loginPageComponent.busy = false;
|
|
}
|
|
})
|
|
).subscribe({
|
|
next: (result: any) => {
|
|
if (result.code === '200' && result.data?.token) {
|
|
this.generalService.trowApi(result);
|
|
localStorage.setItem('access_token', result.data.token);
|
|
this.jwtService.restartCountdown();
|
|
this.router.navigate(['main']);
|
|
} else {
|
|
const errorMessage = result.message_th || result.message || 'Sign-in failed.';
|
|
if (this.loginPageComponent) {
|
|
this.loginPageComponent.message = errorMessage;
|
|
}
|
|
this.generalService.trowApi(result);
|
|
}
|
|
},
|
|
error: (error: any) => {
|
|
const errorMessage = error?.error?.message_th || error?.error?.message || 'An error occurred.';
|
|
if (this.loginPageComponent) {
|
|
this.loginPageComponent.message = errorMessage;
|
|
}
|
|
this.generalService.trowApi(error);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
onOtpSendSubmit(value: any){
|
|
let uri = '/api/login/otp/send';
|
|
let request = {
|
|
email: value.email
|
|
// otp: value.otp
|
|
}
|
|
|
|
this.loginForgotComponent.isLoading = true;
|
|
this.generalService.postRequest(uri, request)
|
|
.pipe(
|
|
// ✅ finalize จะทำงานทุกกรณี (ทั้ง success/error)
|
|
finalize(() => {
|
|
this.loginForgotComponent.isLoading = false;
|
|
})
|
|
).subscribe({
|
|
next: (result: any) => {
|
|
if (result.code === '200') {
|
|
this.generalService.trowApi(result);
|
|
// console.log(`✅ OTP ส่งไปที่ ${value.email}`);
|
|
} else {
|
|
// console.warn('⚠️ ไม่สามารถส่ง OTP ได้:', result.message_th);
|
|
}
|
|
},
|
|
error: (error: any) => {
|
|
this.loginForgotComponent.isSendOtp = false;
|
|
this.loginForgotComponent.isLoading = false;
|
|
this.generalService.trowApi(error);
|
|
// console.error('❌ Error sending OTP:', error);
|
|
},
|
|
complete: () => {
|
|
this.loginForgotComponent.isLoading = false;
|
|
this.loginForgotComponent.isSendOtp = true;
|
|
// console.log('📨 OTP send request completed');
|
|
}
|
|
});
|
|
}
|
|
|
|
onVerifySubmit(value: any){
|
|
let uri = '/api/login/otp/verify';
|
|
let request = {
|
|
email: value.email,
|
|
otp: value.otp
|
|
}
|
|
this.generalService.postRequest(uri, request).subscribe({
|
|
next: (result: any) => {
|
|
if (result.code === '200') {
|
|
// console.log(`OTP ส่งไปยืนยันสำเร็จ`);
|
|
} else {
|
|
// console.warn('⚠️ ไม่สามารถส่ง OTP ได้:', result.message_th);
|
|
}
|
|
},
|
|
error: (error: any) => {
|
|
// console.error('❌ Error sending OTP:', error);
|
|
},
|
|
complete: () => {
|
|
this.router.navigate(['/login']);
|
|
// console.log('📨 OTP send request completed');
|
|
}
|
|
});
|
|
}
|
|
}
|