Skip to content

Commit a5084f8

Browse files
committed
feat(cap): add warnOnMissingContext config key to silence warn logs
Fixes #12
1 parent cc8855e commit a5084f8

6 files changed

Lines changed: 29 additions & 10 deletions

File tree

.changeset/free-drinks-swim.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@adogrove/adonis-auditing": minor
3+
---
4+
5+
Add `warnOnMissingContext` config key to silence missing http context warning logs

docs/packages/auditing/configuration/general-configuration.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Auditing configuration is located in the `config/auditing.ts` file. By default,
66
import { defineConfig } from '@adogrove/adonis-auditing/setup'
77

88
export default defineConfig({
9+
warnOnMissingContext: true,
910
userResolver: () => import('#audit_resolvers/user_resolver'),
1011
resolvers: {
1112
ip_address: () => import('#audit_resolvers/ip_address_resolver'),
@@ -15,8 +16,11 @@ export default defineConfig({
1516
})
1617
```
1718

18-
## User resolver
19+
## `warnOnMissingContext`
20+
When set to `true` (default), the auditing manager will log a warning when it cannot get the current context. This can happen if `asyncLocalStorage` is not enabled.
21+
22+
## `userResolver`
1923
User resolver, under the `userResolver` key, is a special resolver that is used to resolve the user who is responsible for the action. By default, it is set to `() => import('#audit_resolvers/user_resolver')`. You can change it to your custom resolver if needed.
2024

21-
## Resolvers
25+
## `resolvers`
2226
Resolvers, under the `resolvers` key, are used to resolve complementary metadata for the audit log. By default, there are three resolvers: `ip_address`, `user_agent`, and `url`. You can add your custom resolvers if needed.

packages/auditing/src/define_config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export function defineConfig(
1414
}),
1515
)
1616
return {
17+
warnOnMissingContext: config.warnOnMissingContext ?? true,
1718
userResolver: new userResolver.default(),
1819
resolvers: Object.fromEntries(resolversMap),
1920
}

packages/auditing/src/manager.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ export default class AuditingManager implements AuditingService {
1010

1111
async getUserForContext(): Promise<{ id: string; type: string } | null> {
1212
const ctx = HttpContext.get()
13-
if (!ctx) {
14-
this.logger.warn(
15-
'Cannot get current context, did you forget to enable asyncLocalStorage?',
16-
)
13+
if (ctx === null) {
14+
if (this.config.warnOnMissingContext) {
15+
this.logger.warn(
16+
'Cannot get current context, did you forget to enable asyncLocalStorage?',
17+
)
18+
}
19+
1720
return null
1821
}
1922

@@ -22,10 +25,13 @@ export default class AuditingManager implements AuditingService {
2225

2326
async getMetadataForContext(): Promise<Record<string, unknown>> {
2427
const ctx = HttpContext.get()
25-
if (!ctx) {
26-
this.logger.warn(
27-
'Cannot get current context, did you forget to enable asyncLocalStorage?',
28-
)
28+
if (ctx === null) {
29+
if (this.config.warnOnMissingContext) {
30+
this.logger.warn(
31+
'Cannot get current context, did you forget to enable asyncLocalStorage?',
32+
)
33+
}
34+
2935
return {}
3036
}
3137

packages/auditing/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ export interface Resolver {
99
}
1010

1111
export interface AuditingConfig {
12+
warnOnMissingContext?: boolean
1213
userResolver: () => Promise<{ default: new () => UserResolver }>
1314
resolvers: Record<string, () => Promise<{ default: new () => Resolver }>>
1415
}
1516

1617
export interface ResolvedAuditingConfig {
18+
warnOnMissingContext: boolean
1719
userResolver: UserResolver
1820
resolvers: Record<string, Resolver>
1921
}

packages/auditing/stubs/config.stub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import { defineConfig } from '@adogrove/adonis-auditing'
55

66
export default defineConfig({
7+
warnOnMissingContext: true,
78
userResolver: () => import('#audit_resolvers/user_resolver'),
89
resolvers: {
910
ip_address: () => import('#audit_resolvers/ip_address_resolver'),

0 commit comments

Comments
 (0)