codanna 0.9.19

Code Intelligence for Large Language Models
Documentation
import { apiClient } from '@services/api';
import { validateEmail } from '@utils/validation';

const TOKEN_KEY = 'auth_token';

export const authService = {
  async login({ email, password }) {
    if (!validateEmail(email)) {
      throw new Error('Invalid email format');
    }

    const response = await apiClient.post('/auth/login', { email, password });

    if (response.token) {
      localStorage.setItem(TOKEN_KEY, response.token);
    }

    return response.user;
  },

  async logout() {
    try {
      await apiClient.post('/auth/logout');
    } finally {
      localStorage.removeItem(TOKEN_KEY);
    }
  },

  async refreshToken() {
    const token = localStorage.getItem(TOKEN_KEY);
    if (!token) {
      throw new Error('No token to refresh');
    }

    const response = await apiClient.post('/auth/refresh', { token });
    localStorage.setItem(TOKEN_KEY, response.token);
    return response.token;
  },

  getToken() {
    return localStorage.getItem(TOKEN_KEY);
  },

  isAuthenticated() {
    return !!this.getToken();
  },
};