import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; import { Observable } from 'rxjs'; import { AuthResponse, LoginPayload, RegisterPayload } from '../interfaces/interface'; @Injectable({ providedIn: 'root' }) export class AuthService { private readonly baseUrl = 'http://localhost:3000'; private readonly tokenKey = 'auth_token'; constructor(private http: HttpClient, private router: Router) { } // -- API Calls -- register(payload: RegisterPayload): Observable { return this.http.post(`${this.baseUrl}/auth/register`, payload); } login(payload: LoginPayload): Observable { return this.http.post(`${this.baseUrl}/auth/login`, payload); } // -- Token Management -- storeToken(token: string): void { localStorage.setItem(this.tokenKey, token); } getToken(): string | null { return localStorage.getItem(this.tokenKey); } isLoggedIn(): boolean { return !!this.getToken(); } logout(): void { localStorage.removeItem(this.tokenKey); this.router.navigate(['/login']); } getServerUrl(): Observable { return this.http.get(`${this.baseUrl}/server`, { responseType: 'text' }); } }