Gate marketplace logs behind logger

This commit is contained in:
Tiago Yamamoto 2025-12-22 17:52:05 -03:00
parent 64f72db26f
commit 54d0de2844
4 changed files with 46 additions and 18 deletions

View file

@ -2,6 +2,7 @@ import { FormEvent, useState } from 'react'
import axios from 'axios'
import { useAuth, UserRole } from '../context/AuthContext'
import { authService } from '../services/auth'
import { logger } from '../utils/logger'
import { decodeJwtPayload } from '../utils/jwt'
// Eye icon components for password visibility toggle
@ -27,7 +28,7 @@ export function LoginPage() {
const [loading, setLoading] = useState(false)
const resolveRole = (role?: string): UserRole => {
console.log('🔐 [Login] Resolving role:', role)
logger.info('🔐 [Login] Resolving role:', role)
switch (role?.toLowerCase()) {
case 'admin':
return 'admin'
@ -42,7 +43,7 @@ export function LoginPage() {
case 'seller': // keep legacy
default:
// Default to seller/owner or log warning?
console.warn('⚠️ [Login] Unknown role, defaulting to seller:', role)
logger.warn('⚠️ [Login] Unknown role, defaulting to seller:', role)
return 'seller'
}
}
@ -52,37 +53,37 @@ export function LoginPage() {
setLoading(true)
setErrorMessage(null)
console.log('🔐 [Login] Attempting login with username:', username)
logger.info('🔐 [Login] Attempting login with username:', username)
try {
console.log('🔐 [Login] Calling authService.login...')
logger.info('🔐 [Login] Calling authService.login...')
const response = await authService.login({ username, password })
console.log('🔐 [Login] Response received:', response)
logger.info('🔐 [Login] Response received:', response)
const { token } = response
console.log('🔐 [Login] Token extracted:', token ? `${token.substring(0, 50)}...` : 'NULL/UNDEFINED')
logger.debug('🔐 [Login] Token extracted:', token ? `${token.substring(0, 50)}...` : 'NULL/UNDEFINED')
if (!token) {
console.error('🔐 [Login] ERROR: Token is null or undefined!')
logger.error('🔐 [Login] ERROR: Token is null or undefined!')
throw new Error('Resposta de login inválida. Verifique o usuário e a senha.')
}
const payload = decodeJwtPayload<{ role?: string, sub: string }>(token)
console.log('🔐 [Login] JWT payload decoded:', payload)
logger.debug('🔐 [Login] JWT payload decoded:', payload)
const role = resolveRole(payload?.role)
console.log('🔐 [Login] Role resolved:', role)
logger.info('🔐 [Login] Role resolved:', role)
login(token, role, username, payload?.sub || '', undefined, username)
console.log('🔐 [Login] Login successful!')
logger.info('🔐 [Login] Login successful!')
} catch (error) {
console.error('🔐 [Login] ERROR caught:', error)
logger.error('🔐 [Login] ERROR caught:', error)
const fallback = 'Não foi possível autenticar. Verifique suas credenciais.'
if (axios.isAxiosError(error)) {
console.error('🔐 [Login] Axios error response:', error.response?.data)
logger.error('🔐 [Login] Axios error response:', error.response?.data)
setErrorMessage(error.response?.data?.error ?? fallback)
} else if (error instanceof Error) {
console.error('🔐 [Login] Error message:', error.message)
logger.error('🔐 [Login] Error message:', error.message)
setErrorMessage(error.message)
} else {
setErrorMessage(fallback)

View file

@ -1,8 +1,9 @@
import axios from 'axios'
import { logger } from '../utils/logger'
// Use VITE_API_URL if set, fallback to /api for local development proxy
const apiBaseUrl = import.meta.env.VITE_API_URL || '/api'
console.log('🔗 [apiClient] Using API base URL:', apiBaseUrl)
logger.info('🔗 [apiClient] Using API base URL:', apiBaseUrl)
const instance = axios.create({
baseURL: apiBaseUrl,
@ -22,7 +23,7 @@ instance.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
console.warn('Sessão expirada, por favor, faça login novamente.')
logger.warn('Sessão expirada, por favor, faça login novamente.')
}
return Promise.reject(error)
}

View file

@ -1,4 +1,5 @@
import { apiClient } from './apiClient'
import { logger } from '../utils/logger'
interface AuthResponse {
token: string
@ -12,13 +13,12 @@ export interface AuthLoginPayload {
export const authService = {
login: async (payload: AuthLoginPayload) => {
console.log('🔐 [authService] Making request to /v1/auth/login with:', payload)
logger.info('🔐 [authService] Making request to /v1/auth/login with:', payload)
const data = await apiClient.post<AuthResponse>('/v1/auth/login', payload)
console.log('🔐 [authService] Response data:', data)
logger.info('🔐 [authService] Response data:', data)
return { token: data.token, expiresAt: data.expires_at }
},
logout: async () => {
await apiClient.post('/v1/auth/logout')
}
}

View file

@ -0,0 +1,26 @@
const shouldLog = import.meta.env.DEV || import.meta.env.VITE_ENABLE_LOGS === 'true'
type LogArgs = Parameters<typeof console.log>
export const logger = {
debug: (...args: LogArgs) => {
if (shouldLog) {
console.debug(...args)
}
},
info: (...args: LogArgs) => {
if (shouldLog) {
console.info(...args)
}
},
warn: (...args: LogArgs) => {
if (shouldLog) {
console.warn(...args)
}
},
error: (...args: LogArgs) => {
if (shouldLog) {
console.error(...args)
}
}
}