import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, UrlTree } from '@angular/router';

@Injectable({
  providedIn: 'root', // 服务全局注入
})
export class AuthGuard implements CanActivate {
  constructor(private router: Router) {}
  /**
   * 检查路由激活条件
   * @param route 当前路由
   * @param state 当前路由状态
   * @returns 是否允许访问或者重定向路由
   */
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree {
    const isLoggedIn = !!localStorage.getItem('userToken'); // 检查是否存在登录的Token

    if (!isLoggedIn) {
      // 未登录时，跳转到登录页面，并记录目标路由
      console.warn('用户未登录，跳转到登录页面');
      return this.router.createUrlTree(['/login'], {
        queryParams: { redirect: state.url },
      });
    }
    // 已登录允许访问
    return true;
  }
}
