Skip to main content

AuditService

@webda/core


Class: AuditService

Defined in: packages/core/src/services/audit.model.ts:180

Webda Modda​

AuditService

Service that listens to operation success/failure events and records audit entries. Entries are kept in memory (accessible via getEntries()) and saved through the AuditEntry repository (the store the AuditEntry model is mapped to, the default store otherwise).

With exposeReadOperations: true it also registers the read operations Audit.Subject (history of an object), Audit.Actor (activity of a user) and Audit.Query (whole log), guarded by the object's canAct("audit") or the readPermission parameter.

Extends​

Constructors​

Constructor​

new AuditService(name, params): AuditService

Defined in: packages/core/src/services/service.ts:192

Service

Parameters​

name​

string

The name of the service

params​

AuditServiceParameters

The parameters block define in the configuration file

Returns​

AuditService

Inherited from​

Service.constructor

Properties​

_compiledCapabilities​

protected _compiledCapabilities: Record<string, any> = {}

Defined in: packages/core/src/services/iservice.ts:58

Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.

Populated during Service.resolve by reading the service's entry in webda.module.json. Each key is a capability name (e.g., "request-filter"), and the value is an empty object {} by default. Override getCapabilities to provide capability-specific configuration or to conditionally disable capabilities.

See​

getCapabilities

Inherited from​

Service._compiledCapabilities


[WEBDA_EVENTS]​

[WEBDA_EVENTS]: object

Defined in: packages/core/src/services/service.ts:166

Set the Webda events here

Inherited from​

Service.[WEBDA_EVENTS]


entries​

protected entries: AuditEntry[] = []

Defined in: packages/core/src/services/audit.model.ts:184

In-memory log of audit entries


logger​

protected logger: Logger

Defined in: packages/core/src/services/service.ts:179

Logger with class context

Inherited from​

Service.logger


metrics?​

protected optional metrics?: object

Defined in: packages/core/src/services/service.ts:183

Get metrics

Inherited from​

Service.metrics


name​

readonly name: string

Defined in: packages/core/src/services/iservice.ts:35

Inherited from​

Service.name


parameters​

readonly parameters: AuditServiceParameters

Defined in: packages/core/src/services/iservice.ts:36

Inherited from​

Service.parameters


readPermissionQuery?​

protected optional readPermissionQuery?: QueryValidator

Defined in: packages/core/src/services/audit.model.ts:189

Parsed readPermission


unsubscribers​

protected unsubscribers: () => void[] = []

Defined in: packages/core/src/services/audit.model.ts:194

Unsubscribe functions of the core event listeners

Returns​

void


createConfiguration?​

static optional createConfiguration?: (params) => any

Defined in: packages/core/src/services/iservice.ts:41

Create configuration set by the application on load

Parameters​

params​

any

Returns​

any

Inherited from​

Service.createConfiguration


filterConfiguration?​

static optional filterConfiguration?: (params) => any

Defined in: packages/core/src/services/iservice.ts:46

Create configuration set by the application on load

Parameters​

params​

any

Returns​

any

Inherited from​

Service.filterConfiguration


Parameters​

static Parameters: typeof ServiceParameters = ServiceParameters

Defined in: packages/core/src/services/service.ts:162

Service parameters

Inherited from​

Service.Parameters

Methods​

__clean()​

abstract __clean(): Promise<void>

Defined in: packages/core/src/services/service.ts:492

Clean the service data, can only be used in test mode

Returns​

Promise<void>

Inherited from​

Service.__clean


actorEntries()​

actorEntries(userId?, limit?, continuationToken?): Promise<{ continuationToken?: string; results: AuditEntry[]; }>

Defined in: packages/core/src/services/audit.model.ts:426

Audit entries of one user (Audit.Actor)

A logged-in user can read their own entries; anyone else needs readPermission.

Parameters​

userId?​

string

the user, defaults to the current user

limit?​

number

page size

continuationToken?​

string

token of the previous page

Returns​

Promise<{ continuationToken?: string; results: AuditEntry[]; }>

the page of entries


addAuditEntry()​

addAuditEntry(operationId, userId?, err?, subject?): Promise<void>

Defined in: packages/core/src/services/audit.model.ts:273

Create and store an audit entry for the given operation context and optional error

Parameters​

operationId​

string

the operation identifier

userId?​

string

the user identifier (may be undefined for anonymous)

err?​

Error

the error if the operation failed

subject?​

OperationSubject

the object the operation targeted, if any

Returns​

Promise<void>


addListener()​

addListener<Key>(eventName, listener): this

Defined in: packages/core/src/events/asynceventemitter.ts:83

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void | Promise<void>

the event listener

Returns​

this

this for chaining

See​

EventEmitter.addListener

Inherited from​

Service.addListener


addRoute()​

protected addRoute(url, methods, executer, openapi?, override?): void

Defined in: packages/core/src/services/service.ts:384

Add a route dynamicaly

Parameters​

url​

string

of the route can contains dynamic part like {uuid}

methods​

HttpMethodType[]

the HTTP methods

executer​

Function

Method to execute for this route

openapi?​

OpenAPIWebdaDefinition = {}

the OpenAPI specification

override?​

boolean = false

whether to override existing

Returns​

void

Inherited from​

Service.addRoute


authorizeClientEvent()​

authorizeClientEvent(_event, _context): boolean

Defined in: packages/core/src/services/service.ts:337

Authorize a public event subscription

Parameters​

_event​

string

the event name

_context​

OperationContext

the execution context

Returns​

boolean

true if the condition is met

Inherited from​

Service.authorizeClientEvent


computeParameters()​

computeParameters(): void

Defined in: packages/core/src/services/service.ts:201

Used to compute or derivate input parameter to attribute

Returns​

void

Deprecated​

Inherited from​

Service.computeParameters


emit()​

emit<Key>(event, data): Promise<void>

Defined in: packages/core/src/services/service.ts:473

Emit the event with data and wait for Promise to finish if listener returned a Promise

Type Parameters​

Key​

Key extends never

Parameters​

event​

Key

the event name

data​

object[Key]

the data to process

Returns​

Promise<void>

Inherited from​

Service.emit


findEntries()​

protected findEntries(filter, limit?, continuationToken?): Promise<{ continuationToken?: string; results: AuditEntry[]; }>

Defined in: packages/core/src/services/audit.model.ts:347

Query the audit entries matching a filter, newest first

Parameters​

filter​

string

WebdaQL filter (may be empty)

limit?​

number

page size, clamped to 1..200 (default 50)

continuationToken?​

string

token of the previous page

Returns​

Promise<{ continuationToken?: string; results: AuditEntry[]; }>

the page of entries


getCapabilities()​

getCapabilities(): Record<string, any>

Defined in: packages/core/src/services/iservice.ts:86

Return the capabilities of this service.

By default returns capabilities detected at compile-time from

Returns​

Record<string, any>

the result

Webda Capability-tagged​

interfaces in webda.module.json.

Override to disable capabilities based on configuration:

getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}

Inherited from​

Service.getCapabilities


getClientEvents()​

getClientEvents(): string[]

Defined in: packages/core/src/services/service.ts:325

Return the events that an external system can subscribe to

Returns​

string[]

the list of results

Inherited from​

Service.getClientEvents


getEntries()​

getEntries(): AuditEntry[]

Defined in: packages/core/src/services/audit.model.ts:238

Get all in-memory audit entries

Returns​

AuditEntry[]

the list of audit entries


getMaxListeners()​

getMaxListeners(): number

Defined in: packages/core/src/events/asynceventemitter.ts:90

Returns​

number

Inherited from​

Service.getMaxListeners


getMetric()​

getMetric<T>(type, configuration): T

Defined in: packages/core/src/services/service.ts:310

Add service name label

Type Parameters​

T​

T = Gauge<string> | Counter<string> | Histogram<string>

Parameters​

type​

CustomConstructor<T, [MetricConfiguration<T>]>

the type to look up

configuration​

MetricConfiguration<T>

the configuration

Returns​

T

the result

Inherited from​

Service.getMetric


getName()​

getName(): string

Defined in: packages/core/src/services/service.ts:483

Get service name

Returns​

string

the result string

Inherited from​

Service.getName


getOpenApiReplacements()​

getOpenApiReplacements(): any

Defined in: packages/core/src/services/service.ts:413

Return variables for replacement in openapi

Returns​

any

the result

Inherited from​

Service.getOpenApiReplacements


getOperationId()​

getOperationId(id): string

Defined in: packages/core/src/services/service.ts:371

If undefined is returned it cancel the operation registration

Parameters​

id​

string

the identifier

Returns​

string

the result

Inherited from​

Service.getOperationId


getParameters()​

getParameters(): AuditServiceParameters

Defined in: packages/core/src/services/service.ts:209

Get the service parameters

Returns​

AuditServiceParameters

the result

Inherited from​

Service.getParameters


getService()​

getService<T>(name): ServicesMap[T]

Defined in: packages/core/src/services/service.ts:300

Get a service by name

Type Parameters​

T​

T extends keyof ServicesMap

Parameters​

name​

T

the name to use

Returns​

ServicesMap[T]

the result map

Deprecated​

Use useService, might reconsider

Inherited from​

Service.getService


getState()​

getState(): ServiceStates

Defined in: packages/core/src/services/service.ts:172

Get the current state

Returns​

ServiceStates

the result

Inherited from​

Service.getState


getUrl()​

getUrl(url, _methods): string

Defined in: packages/core/src/services/service.ts:348

Return the full path url based on parameters

Parameters​

url​

string

relative url to service

_methods​

HttpMethodType[]

in case we need filtering (like Store)

Returns​

string

absolute url or undefined if need to skip the Route

Inherited from​

Service.getUrl


hasReadPermission()​

hasReadPermission(context): boolean

Defined in: packages/core/src/services/audit.model.ts:332

Check the readPermission query against the current session

Parameters​

context​

OperationContext

the operation context

Returns​

boolean

true if the session matches readPermission


init()​

abstract init(): Promise<AuditService>

Defined in: packages/core/src/services/service.ts:463

Will be called after all the Services are created

Returns​

Promise<AuditService>

Inherited from​

Service.init


initMetrics()​

initMetrics(): void

Defined in: packages/core/src/services/service.ts:290

Init the metrics

Returns​

void

Inherited from​

Service.initMetrics


initOperations()​

initOperations(): void

Defined in: packages/core/src/services/service.ts:420

Init the operations from

Returns​

void

Operation​

decorators on this service

Inherited from​

Service.initOperations


listeners()​

listeners(eventName): Function[]

Defined in: packages/core/src/events/asynceventemitter.ts:183

Get all listeners for an event

Parameters​

eventName​

never

the event name

Returns​

Function[]

the list of results

Inherited from​

Service.listeners


loadCapabilities()​

protected loadCapabilities(): void

Defined in: packages/core/src/services/service.ts:270

Load capabilities from webda.module.json metadata into _compiledCapabilities.

Called during resolve after dependency injection. Reads the service's type name from parameters, looks it up in the application's module metadata (moddas or beans section), and populates _compiledCapabilities with an empty object for each declared capability name.

Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).

Returns​

void

Example​

// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }

See​

getCapabilities

Inherited from​

Service.loadCapabilities


log()​

log(level, ...args): void

Defined in: packages/core/src/services/service.ts:513

Parameters​

level​

WorkerLogLevel

to log

args​

...any[]

additional arguments

Returns​

void

Inherited from​

Service.log


off()​

off<Key>(eventName, listener): this

Defined in: packages/core/src/events/asynceventemitter.ts:141

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.off

Inherited from​

Service.off


on()​

on<Key>(eventName, listener): this

Defined in: packages/core/src/events/asynceventemitter.ts:119

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.once

Inherited from​

Service.on


once()​

once<Key>(eventName, listener): this

Defined in: packages/core/src/events/asynceventemitter.ts:108

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.once

Inherited from​

Service.once


queryEntries()​

queryEntries(q?, limit?, continuationToken?): Promise<{ continuationToken?: string; results: AuditEntry[]; }>

Defined in: packages/core/src/services/audit.model.ts:445

Query the whole audit log (Audit.Query), requires readPermission

Only the filter part of q is used; ordering and paging are fixed.

Parameters​

q?​

string

WebdaQL filter over the entry fields

limit?​

number

page size

continuationToken?​

string

token of the previous page

Returns​

Promise<{ continuationToken?: string; results: AuditEntry[]; }>

the page of entries


registerReadOperations()​

protected registerReadOperations(): void

Defined in: packages/core/src/services/audit.model.ts:295

Register the request schemas and the Audit.Subject / Audit.Actor / Audit.Query operations

Returns​

void


removeAllListeners()​

removeAllListeners<Key>(eventName?): this

Defined in: packages/core/src/events/asynceventemitter.ts:150

Type Parameters​

Key​

Key extends never

Parameters​

eventName?​

Key

the event name

Returns​

this

this for chaining

See​

EventEmitter.removeAllListeners

Inherited from​

Service.removeAllListeners


removeListener()​

removeListener<Key>(eventName, listener): this

Defined in: packages/core/src/events/asynceventemitter.ts:130

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.removeListener

Inherited from​

Service.removeListener


resolve()​

resolve(): this

Defined in: packages/core/src/services/audit.model.ts:217

Subscribe to operation success and failure events for audit logging

Returns​

this

this for chaining

Overrides​

Service.resolve


setMaxListeners()​

setMaxListeners(n): this

Defined in: packages/core/src/events/asynceventemitter.ts:97

Parameters​

n​

number

Returns​

this

Inherited from​

Service.setMaxListeners


shouldAudit()​

shouldAudit(operationId, success): boolean

Defined in: packages/core/src/services/audit.model.ts:249

Determine whether the given operation should be audited based on include/exclude filters and level configuration.

Parameters​

operationId​

string

the operation identifier

success​

boolean

whether the operation succeeded

Returns​

boolean

true if this operation should be audited


stop()​

stop(): Promise<void>

Defined in: packages/core/src/services/audit.model.ts:208

Stop recording audit entries

Returns​

Promise<void>

Overrides​

Service.stop


subjectEntries()​

subjectEntries(model, key, limit?, continuationToken?): Promise<{ continuationToken?: string; results: AuditEntry[]; }>

Defined in: packages/core/src/services/audit.model.ts:372

Audit entries of one object (Audit.Subject)

Allowed when the model's canAct(context, "audit", subject) is true. When the object does not exist (deleted or never created), readPermission is required, otherwise 404.

Parameters​

model​

string

model identifier, e.g. WebdaSample/Post

key​

unknown

primary key: scalar, object of key fields, or canonical JSON array

limit?​

number

page size

continuationToken?​

string

token of the previous page

Returns​

Promise<{ continuationToken?: string; results: AuditEntry[]; }>

the page of entries


toJSON()​

toJSON(): string

Defined in: packages/core/src/services/service.ts:452

Prevent service to be serialized

Returns​

string

the result

Inherited from​

Service.toJSON


toString()​

toString(): string

Defined in: packages/core/src/services/service.ts:225

Return service representation

Returns​

string

the result

Inherited from​

Service.toString


unsubscribe()​

protected unsubscribe(): void

Defined in: packages/core/src/services/audit.model.ts:199

Remove the core event listeners

Returns​

void