import { inject, PLATFORM_ID } from '@angular/core';
import { CanActivateFn, Router } from '@angular/router';
import { isPlatformBrowser } from '@angular/common';
import { AuthService } from '../services/auth.service';

export const authGuard: CanActivateFn = () => {
  const router = inject(Router);
  const platformId = inject(PLATFORM_ID);
  const authService = inject(AuthService);

  // SSR: não existe localStorage. Bloqueia e manda pro login.
  if (!isPlatformBrowser(platformId)) {
    // Em SSR não existe acesso ao storage do usuário.
    // Deixa renderizar e valida no browser após hidratação.
    return true;
  }

  const token = authService.token;

  if (!token) {
    return router.parseUrl('/login');
  }

  const payload = authService.getTokenPayload();
  const tenantId = payload?.['tenantId'] ?? payload?.['tenant'] ?? payload?.['TenantId'];
  if (!tenantId) {
    authService.logout();
    return router.parseUrl('/login');
  }

  return true;
};
