import client from './client';

export interface LoginRequest {
  username: string;
  password: string;
}

export interface UserInfo {
  id: string;
  username: string;
  email?: string;
  phone?: string;
  display_name?: string;
  avatar_url?: string;
  status: string;
  roles: RoleInfo[];
  version: number;
}

export interface RoleInfo {
  id: string;
  name: string;
  code: string;
  description?: string;
  is_system: boolean;
}

export interface LoginResponse {
  access_token: string;
  refresh_token: string;
  expires_in: number;
  user: UserInfo;
}

export async function login(req: LoginRequest): Promise<LoginResponse> {
  const { data } = await client.post<{ success: boolean; data: LoginResponse }>(
    '/auth/login',
    req
  );
  return data.data;
}

export async function logout(): Promise<void> {
  await client.post('/auth/logout');
}

export async function changePassword(
  currentPassword: string,
  newPassword: string
): Promise<void> {
  await client.post('/auth/change-password', {
    current_password: currentPassword,
    new_password: newPassword,
  });
}
