import { inject, Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { LoginRequest, PasswordConfirmationRequest, RegisterRequest, User } from './auth.types'; import { Observable, switchMap } from 'rxjs'; import { API_URL, BASE_URL } from '../core/tokens/api-urls'; @Injectable({ providedIn: 'root', }) export class AuthService { private http: HttpClient = inject(HttpClient); private baseUrl = inject(BASE_URL); private apiUrl = inject(API_URL); public login(credentials: LoginRequest) { return this.getSanctumCookie().pipe( switchMap(() => this.http.post(`${this.baseUrl}/login`, credentials)), ); } public register(credentials: RegisterRequest) { return this.getSanctumCookie().pipe( switchMap(() => this.http.post(`${this.baseUrl}/register`, credentials)), ); } public logout() { return this.http.post(`${this.baseUrl}/logout`, {}); } public getCurrentUser(): Observable { return this.http.get(`${this.apiUrl}/me`); } public confirmPassword(data: PasswordConfirmationRequest): Observable { return this.getSanctumCookie().pipe( switchMap(() => this.http.post(`${this.baseUrl}/user/confirm-password`, data)), ); } private getSanctumCookie(): Observable { return this.http.get(`${this.baseUrl}/sanctum/csrf-cookie`); } }