MFA Activity Logs

Enrolled factors and 2FA / MFA sign-in attempts

@if (hasActiveFilters(activeTab)) { }
@if (current.state === 'loading') {
@for (i of skeletonRows(); track i) {
}
} @if (current.state === 'empty') {
@if (activeTab === 'enrollment') {

No enrolled factors

Activity here will populate as factors are verified or removed. Try clearing filters if you're looking for an older record.

} @else {

No sign-in attempts logged

2FA / MFA challenges raised at sign-in will appear here — successful verifications, failed codes, expired sessions, and account locks.

} @if (hasActiveFilters(activeTab)) { } @else { }
} @if (current.state === 'error') {
Couldn't load logs

{{ current.error }}

} @if (current.state === 'loaded' && activeTab === 'enrollment') {
@for (row of enrollment.rows; track $index) { }
Event time User Factor Destination Status Verified on Message
{{ formatTs(row.eventOn) }}
{{ row.userFullName || row.username }}
{{ row.username }}
{{ factorLabel(row.factorType) }} {{ row.destination || '—' }} {{ row.status }} {{ formatTs(row.verifiedOn) }} {{ row.message || '—' }}
} @if (current.state === 'loaded' && activeTab === 'login') {
@for (row of login.rows; track $index) { }
Event time User Factor Destination Status Attempts IP / Device Message
{{ formatTs(row.eventOn) }}
{{ row.userFullName || row.username }}
{{ row.username }}
{{ factorLabel(row.factorType) }} {{ row.destination || '—' }} {{ row.status }} {{ row.attempts ?? '—' }} {{ row.ipAddress || '—' }} @if (row.userAgent) {
{{ row.userAgent }}
}
{{ row.message || '—' }}
}
@if (current.state === 'loaded' || (current.state === 'empty' && current.total > 0)) {
{{ currentRangeLabel }}
Page {{ current.page + 1 }} of {{ currentTotalPages }}
}