first commit
This commit is contained in:
commit
3c0479faf0
169 files changed
+27617
No files matched your search
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user