| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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';
- private userName!: string
- constructor(private http: HttpClient, private router: Router) { }
- // -- API Calls --
- register(payload: RegisterPayload): Observable<AuthResponse> {
- return this.http.post<AuthResponse>(`${this.baseUrl}/auth/register`, payload);
- }
- login(payload: LoginPayload): Observable<AuthResponse> {
- return this.http.post<AuthResponse>(`${this.baseUrl}/auth/login`, payload);
- }
- setUserName(username: string) {
- this.userName = username
- }
- getUsername(): string {
- return this.userName
- }
- // -- 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<string> {
- return this.http.get(`${this.baseUrl}/server`, {
- responseType: 'text'
- });
- }
- }
|