first commit

This commit is contained in:
Rutra committed 2026-10-12 14:25:22 +02:00
commit 3c0479faf0
169 files changed
+27617

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
import vine from '@vinejs/vine'
import db from '@adonisjs/lucid/services/db'
import type { HttpContext } from '@adonisjs/core/http'
import AuditLog from '#models/audit_log'
import UserError from '#exceptions/user_error'
const indexValidator = vine.create({
page: vine.number().withoutDecimals().min(1).optional(),
status: vine.enum(['running', 'success', 'error'] as const).optional(),
})
export default class AuditController {
async index({ request }: HttpContext) {
const { page = 1, status } = await indexValidator.validate(request.qs())
const query = AuditLog.query()
.select('id', 'username', 'ip', 'action', 'target', 'status', 'created_at', 'finished_at')
.select(db.raw('length(output) > 0 as hasOutput'))
.orderBy('id', 'desc')
if (status) query.where('status', status)
const result = await query.paginate(page, 50)
return {
meta: { total: result.total, page: result.currentPage, lastPage: result.lastPage },
data: result.all().map((entry) => ({
id: entry.id,
username: entry.username,
ip: entry.ip,
action: entry.action,
target: entry.target,
status: entry.status,
createdAt: entry.createdAt.toISO(),
finishedAt: entry.finishedAt?.toISO() ?? null,
hasOutput: Boolean(entry.$extras.hasOutput),
})),
}
}
async show({ params }: HttpContext) {
const entry = await AuditLog.find(params.id)
if (!entry) throw new UserError('Entrée introuvable.', 404)
return {
id: entry.id,
action: entry.action,
target: entry.target,
status: entry.status,
output: entry.output,
}
}
}