first commit
This commit is contained in:
commit
3c0479faf0
169 files changed
+27617
No files matched your search
@@ -0,0 +1,39 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import type { HttpContext } from '@adonisjs/core/http'
|
||||
import AuditLog, { type AuditStatus } from '#models/audit_log'
|
||||
|
||||
/**
|
||||
* Who is acting, for the action log and the jobs.
|
||||
*/
|
||||
export function actor({ auth, request }: HttpContext) {
|
||||
return {
|
||||
username: auth.user?.username ?? null,
|
||||
ip: request.ip(),
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Records a short action (container restart, Caddyfile change…) in the
|
||||
* action log. Long actions go through the job runner instead.
|
||||
*/
|
||||
export async function audit(
|
||||
ctx: HttpContext,
|
||||
entry: {
|
||||
action: string
|
||||
target?: string | null
|
||||
status: AuditStatus
|
||||
output?: string | null
|
||||
username?: string | null
|
||||
}
|
||||
) {
|
||||
const { username, ip } = actor(ctx)
|
||||
await AuditLog.create({
|
||||
username: entry.username !== undefined ? entry.username : username,
|
||||
ip,
|
||||
action: entry.action,
|
||||
target: entry.target ?? null,
|
||||
status: entry.status,
|
||||
output: entry.output ?? null,
|
||||
finishedAt: DateTime.now(),
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user