All files / realm/blong-access/meta/model accessAuditModel.ts

100% Statements 82/82
100% Branches 2/2
100% Functions 1/1
100% Lines 82/82

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 831x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 1x  
import {model} from '@feasibleone/blong';
 
/**
 * accessAuditModel — browse-only view of the authentication audit log.
 *
 * The audit log is append-only (`access_audit`, ULID PK, not
 * resource-backed). No Create/Edit/Delete toolbar — the entity is not editable
 * from the UI.
 */
export default model(
    () =>
        async function accessAuditModel() {
            return {
                subject: 'access',
                object: 'audit',
                objectTitle: 'Audit',
                public: true,
                nameField: 'audit.auditId',
 
                schema: {
                    properties: {
                        audit: {
                            properties: {
                                auditId: {
                                    title: 'Audit',
                                    filter: true,
                                },
                                userId: {title: 'User'},
                                actorId: {title: 'Actor'},
                                sessionId: {title: 'Session'},
                                actionName: {
                                    title: 'Action',
                                    filter: true,
                                },
                                credentialType: {
                                    title: 'Type',
                                    filter: true,
                                },
                                ipAddress: {title: 'IP'},
                                isSuccess: {
                                    title: 'Success',
                                    type: 'boolean',
                                },
                                failureReason: {title: 'Failure Reason'},
                                statusCode: {title: 'HTTP'},
                                occurredAt: {
                                    title: 'Occurred',
                                    widget: {type: 'dateTime'},
                                },
                            },
                            widget: {
                                columns: [
                                    'occurredAt',
                                    'actionName',
                                    'actorId',
                                    'sessionId',
                                    'statusCode',
                                    'userId',
                                    'credentialType',
                                    'ipAddress',
                                    'isSuccess',
                                ],
                            },
                        },
                    },
                },
 
                cards: {
                    browse: {
                        label: 'Audit Log',
                        widgets: ['audit'],
                    },
                },
 
                browser: {
                    title: 'Audit Log',
                    icon: 'pi pi-list',
                    toolbar: [],
                },
            };
        },
);