feat(#27): Set up consola logger, make use of log levels in backend and frontend
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
import type { H3Event } from 'h3'
|
||||
import { joinURL } from 'ufo'
|
||||
import { jwtDecode } from 'jwt-decode'
|
||||
import { createLogger } from '~~/shared/utils/logger'
|
||||
|
||||
export default defineEventHandler(async (event: H3Event) => {
|
||||
const { serverApiBaseUrl, clientProxyBasePath } = useRuntimeConfig().public
|
||||
const logger = createLogger({
|
||||
level: useRuntimeConfig().public.logLevel,
|
||||
tag: '🔀 proxy'
|
||||
})
|
||||
const escapedClientProxyBasePath = clientProxyBasePath.replace(/^\//, '\\/')
|
||||
// Use the escaped value in the regex
|
||||
const path = event.path.replace(new RegExp(`^${escapedClientProxyBasePath}`), '')
|
||||
@@ -19,8 +24,10 @@ export default defineEventHandler(async (event: H3Event) => {
|
||||
})
|
||||
}
|
||||
|
||||
if (accessToken) console.log('🔀 [PROXY] Expiration:', new Date(jwtDecode(accessToken).exp! * 1000).toISOString())
|
||||
console.log('🔀 [PROXY] Proxying request to:', target)
|
||||
if (accessToken) {
|
||||
logger.debug('Expiration:', new Date(jwtDecode(accessToken).exp! * 1000).toISOString())
|
||||
}
|
||||
logger.debug('Proxying request to:', target)
|
||||
|
||||
return proxyRequest(event, target, {
|
||||
headers: {
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
import { jwtDecode } from 'jwt-decode'
|
||||
import type { KeycloakTokenPayload, Organization } from '~~/types/keycloak'
|
||||
import { createLogger } from '~~/shared/utils/logger'
|
||||
|
||||
export default defineOAuthKeycloakEventHandler({
|
||||
async onSuccess(event, { user, tokens }) {
|
||||
const config = useRuntimeConfig()
|
||||
const logger = createLogger({
|
||||
level: config.public.logLevel,
|
||||
tag: 'auth',
|
||||
fancy: import.meta.env.MODE !== 'production'
|
||||
})
|
||||
|
||||
const rawAccessToken = tokens?.access_token
|
||||
let decodedJwt: KeycloakTokenPayload | null = null
|
||||
|
||||
try {
|
||||
decodedJwt = jwtDecode<KeycloakTokenPayload>(rawAccessToken!)
|
||||
} catch (err) {
|
||||
console.warn('[auth] Failed to decode access token:', err)
|
||||
logger.warn('Failed to decode access token:', err)
|
||||
}
|
||||
|
||||
const organizations = decodedJwt ? extractOrganizations(decodedJwt) : []
|
||||
@@ -34,7 +42,13 @@ export default defineOAuthKeycloakEventHandler({
|
||||
},
|
||||
|
||||
onError(event) {
|
||||
console.log('error during keycloak authentication', event)
|
||||
const config = useRuntimeConfig()
|
||||
const logger = createLogger({
|
||||
level: config.public.logLevel,
|
||||
tag: 'auth'
|
||||
})
|
||||
|
||||
logger.error('Error during keycloak authentication')
|
||||
return sendRedirect(event, '/login')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
import { createLogger } from '~~/shared/utils/logger'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const config = useRuntimeConfig()
|
||||
const logger = createLogger({
|
||||
level: config.public.logLevel,
|
||||
tag: 'auth',
|
||||
fancy: import.meta.env.MODE !== 'production'
|
||||
})
|
||||
|
||||
try {
|
||||
const cleared = await clearUserSession(event)
|
||||
if (!cleared) {
|
||||
console.warn('Failed to clear user session')
|
||||
logger.warn('Failed to clear user session')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error clearing user session:', error)
|
||||
logger.error('Error clearing user session:', error)
|
||||
}
|
||||
|
||||
return sendRedirect(event, '/login', 200)
|
||||
|
||||
Reference in New Issue
Block a user