Show IP address in audit log table and expanded detail row
- Add IP column to the logs table (hidden on mobile) - Fix expanded detail row condition: also expands when ip_address is set even if there is no JSON details blob (login/logout events have ip_address but null details, so they previously could not be expanded at all) - Show ip_address as a plain line above the JSON blob in the detail row - Update colspan from 6 to 7 for the new column Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -198,6 +198,7 @@ function clearFilters() {
|
|||||||
<th>Category</th>
|
<th>Category</th>
|
||||||
<th class="hide-mobile">User</th>
|
<th class="hide-mobile">User</th>
|
||||||
<th>Action / Endpoint</th>
|
<th>Action / Endpoint</th>
|
||||||
|
<th class="hide-mobile">IP</th>
|
||||||
<th class="hide-mobile">Status</th>
|
<th class="hide-mobile">Status</th>
|
||||||
<th class="hide-mobile">Duration</th>
|
<th class="hide-mobile">Duration</th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -220,6 +221,7 @@ function clearFilters() {
|
|||||||
<span v-if="entry.method" class="method-tag">{{ entry.method }}</span>
|
<span v-if="entry.method" class="method-tag">{{ entry.method }}</span>
|
||||||
{{ displayLabel(entry) }}
|
{{ displayLabel(entry) }}
|
||||||
</td>
|
</td>
|
||||||
|
<td class="hide-mobile cell-ip">{{ entry.ip_address || "—" }}</td>
|
||||||
<td class="hide-mobile cell-status">
|
<td class="hide-mobile cell-status">
|
||||||
<span v-if="entry.status_code" :class="entry.status_code >= 400 ? 'text-error' : ''">
|
<span v-if="entry.status_code" :class="entry.status_code >= 400 ? 'text-error' : ''">
|
||||||
{{ entry.status_code }}
|
{{ entry.status_code }}
|
||||||
@@ -230,9 +232,10 @@ function clearFilters() {
|
|||||||
{{ entry.duration_ms != null ? entry.duration_ms + "ms" : "—" }}
|
{{ entry.duration_ms != null ? entry.duration_ms + "ms" : "—" }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="expandedId === entry.id && entry.details" class="detail-row">
|
<tr v-if="expandedId === entry.id && (entry.details || entry.ip_address)" class="detail-row">
|
||||||
<td colspan="6">
|
<td colspan="7">
|
||||||
<pre class="detail-json">{{ formatDetails(entry.details) }}</pre>
|
<div v-if="entry.ip_address" class="detail-ip">IP: {{ entry.ip_address }}</div>
|
||||||
|
<pre v-if="entry.details" class="detail-json">{{ formatDetails(entry.details) }}</pre>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
@@ -406,11 +409,23 @@ function clearFilters() {
|
|||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
|
.cell-ip {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
.cell-duration {
|
.cell-duration {
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
.detail-ip {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
}
|
||||||
.text-error {
|
.text-error {
|
||||||
color: var(--color-danger);
|
color: var(--color-danger);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user