@atlasauth/emulator-core 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/custom-html.d.ts +57 -0
- package/dist/custom-html.js +491 -0
- package/dist/custom-html.js.map +1 -0
- package/dist/engine.d.ts +1 -1
- package/dist/engine.js +5 -1
- package/dist/engine.js.map +1 -1
- package/dist/error-catalog.js +8 -0
- package/dist/error-catalog.js.map +1 -1
- package/dist/event-gate.js +60 -2
- package/dist/event-gate.js.map +1 -1
- package/dist/generic.js +5 -1
- package/dist/generic.js.map +1 -1
- package/dist/handlers/access-signals.d.ts +48 -0
- package/dist/handlers/access-signals.js +76 -0
- package/dist/handlers/access-signals.js.map +1 -0
- package/dist/handlers/approvals.js +54 -1
- package/dist/handlers/approvals.js.map +1 -1
- package/dist/handlers/authz-data.d.ts +2 -0
- package/dist/handlers/authz-data.js +627 -0
- package/dist/handlers/authz-data.js.map +1 -0
- package/dist/handlers/authz-layers.d.ts +229 -0
- package/dist/handlers/authz-layers.js +786 -0
- package/dist/handlers/authz-layers.js.map +1 -0
- package/dist/handlers/authz-state.d.ts +80 -0
- package/dist/handlers/authz-state.js +175 -0
- package/dist/handlers/authz-state.js.map +1 -0
- package/dist/handlers/authz.js +240 -177
- package/dist/handlers/authz.js.map +1 -1
- package/dist/handlers/billing.d.ts +99 -1
- package/dist/handlers/billing.js +556 -77
- package/dist/handlers/billing.js.map +1 -1
- package/dist/handlers/cedar-ext.d.ts +35 -0
- package/dist/handlers/cedar-ext.js +174 -0
- package/dist/handlers/cedar-ext.js.map +1 -0
- package/dist/handlers/cedar.d.ts +146 -0
- package/dist/handlers/cedar.js +689 -0
- package/dist/handlers/cedar.js.map +1 -0
- package/dist/handlers/connections.d.ts +4 -1
- package/dist/handlers/connections.js +267 -38
- package/dist/handlers/connections.js.map +1 -1
- package/dist/handlers/control.js +6 -1
- package/dist/handlers/control.js.map +1 -1
- package/dist/handlers/device.js +18 -1
- package/dist/handlers/device.js.map +1 -1
- package/dist/handlers/emu3-misc.d.ts +38 -0
- package/dist/handlers/emu3-misc.js +1056 -0
- package/dist/handlers/emu3-misc.js.map +1 -0
- package/dist/handlers/emu4-actions-access.d.ts +46 -0
- package/dist/handlers/emu4-actions-access.js +107 -0
- package/dist/handlers/emu4-actions-access.js.map +1 -0
- package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
- package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
- package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
- package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
- package/dist/handlers/emu4-actions-catalog.js +143 -0
- package/dist/handlers/emu4-actions-catalog.js.map +1 -0
- package/dist/handlers/emu4-actions-def.d.ts +50 -0
- package/dist/handlers/emu4-actions-def.js +250 -0
- package/dist/handlers/emu4-actions-def.js.map +1 -0
- package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
- package/dist/handlers/emu4-actions-sandbox.js +318 -0
- package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
- package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
- package/dist/handlers/emu4-actions-typegen.js +73 -0
- package/dist/handlers/emu4-actions-typegen.js.map +1 -0
- package/dist/handlers/emu4-actions.d.ts +2 -0
- package/dist/handlers/emu4-actions.js +506 -0
- package/dist/handlers/emu4-actions.js.map +1 -0
- package/dist/handlers/emu4-authz-trust.d.ts +40 -0
- package/dist/handlers/emu4-authz-trust.js +488 -0
- package/dist/handlers/emu4-authz-trust.js.map +1 -0
- package/dist/handlers/emu4-authz.d.ts +2 -0
- package/dist/handlers/emu4-authz.js +752 -0
- package/dist/handlers/emu4-authz.js.map +1 -0
- package/dist/handlers/emu4-billing-core.d.ts +23 -0
- package/dist/handlers/emu4-billing-core.js +22 -0
- package/dist/handlers/emu4-billing-core.js.map +1 -0
- package/dist/handlers/emu4-billing-x.d.ts +2 -0
- package/dist/handlers/emu4-billing-x.js +489 -0
- package/dist/handlers/emu4-billing-x.js.map +1 -0
- package/dist/handlers/emu4-billing.d.ts +14 -0
- package/dist/handlers/emu4-billing.js +846 -0
- package/dist/handlers/emu4-billing.js.map +1 -0
- package/dist/handlers/emu4-clones.d.ts +2 -0
- package/dist/handlers/emu4-clones.js +322 -0
- package/dist/handlers/emu4-clones.js.map +1 -0
- package/dist/handlers/emu4-compliance.d.ts +8 -0
- package/dist/handlers/emu4-compliance.js +39 -0
- package/dist/handlers/emu4-compliance.js.map +1 -0
- package/dist/handlers/emu4-config.d.ts +14 -0
- package/dist/handlers/emu4-config.js +148 -0
- package/dist/handlers/emu4-config.js.map +1 -0
- package/dist/handlers/emu4-cookies.d.ts +8 -0
- package/dist/handlers/emu4-cookies.js +248 -0
- package/dist/handlers/emu4-cookies.js.map +1 -0
- package/dist/handlers/emu4-erasure.d.ts +2 -0
- package/dist/handlers/emu4-erasure.js +587 -0
- package/dist/handlers/emu4-erasure.js.map +1 -0
- package/dist/handlers/emu4-federation.d.ts +8 -0
- package/dist/handlers/emu4-federation.js +18 -0
- package/dist/handlers/emu4-federation.js.map +1 -0
- package/dist/handlers/emu4-journey-math.d.ts +42 -0
- package/dist/handlers/emu4-journey-math.js +99 -0
- package/dist/handlers/emu4-journey-math.js.map +1 -0
- package/dist/handlers/emu4-messaging.d.ts +21 -0
- package/dist/handlers/emu4-messaging.js +595 -0
- package/dist/handlers/emu4-messaging.js.map +1 -0
- package/dist/handlers/emu4-minors.d.ts +7 -0
- package/dist/handlers/emu4-minors.js +408 -0
- package/dist/handlers/emu4-minors.js.map +1 -0
- package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
- package/dist/handlers/emu4-oauth-audit.js +17 -0
- package/dist/handlers/emu4-oauth-audit.js.map +1 -0
- package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
- package/dist/handlers/emu4-oauth-auth.js +363 -0
- package/dist/handlers/emu4-oauth-auth.js.map +1 -0
- package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
- package/dist/handlers/emu4-oauth-delivery.js +207 -0
- package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
- package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
- package/dist/handlers/emu4-oauth-keys.js +268 -0
- package/dist/handlers/emu4-oauth-keys.js.map +1 -0
- package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
- package/dist/handlers/emu4-oauth-pub.js +420 -0
- package/dist/handlers/emu4-oauth-pub.js.map +1 -0
- package/dist/handlers/emu4-oauth.d.ts +10 -0
- package/dist/handlers/emu4-oauth.js +23 -0
- package/dist/handlers/emu4-oauth.js.map +1 -0
- package/dist/handlers/emu4-policies.d.ts +2 -0
- package/dist/handlers/emu4-policies.js +408 -0
- package/dist/handlers/emu4-policies.js.map +1 -0
- package/dist/handlers/emu4-region.d.ts +2 -0
- package/dist/handlers/emu4-region.js +189 -0
- package/dist/handlers/emu4-region.js.map +1 -0
- package/dist/handlers/emu4-saml.d.ts +12 -0
- package/dist/handlers/emu4-saml.js +532 -0
- package/dist/handlers/emu4-saml.js.map +1 -0
- package/dist/handlers/emu4-shared.d.ts +44 -0
- package/dist/handlers/emu4-shared.js +90 -0
- package/dist/handlers/emu4-shared.js.map +1 -0
- package/dist/handlers/emu4-snapshots.d.ts +38 -0
- package/dist/handlers/emu4-snapshots.js +231 -0
- package/dist/handlers/emu4-snapshots.js.map +1 -0
- package/dist/handlers/emu4-sns.d.ts +9 -0
- package/dist/handlers/emu4-sns.js +21 -0
- package/dist/handlers/emu4-sns.js.map +1 -0
- package/dist/handlers/emu4-trust-binding.d.ts +27 -0
- package/dist/handlers/emu4-trust-binding.js +344 -0
- package/dist/handlers/emu4-trust-binding.js.map +1 -0
- package/dist/handlers/emu4-trust.d.ts +35 -0
- package/dist/handlers/emu4-trust.js +543 -0
- package/dist/handlers/emu4-trust.js.map +1 -0
- package/dist/handlers/fga-engine.d.ts +78 -0
- package/dist/handlers/fga-engine.js +663 -0
- package/dist/handlers/fga-engine.js.map +1 -0
- package/dist/handlers/governance.js +3 -2
- package/dist/handlers/governance.js.map +1 -1
- package/dist/handlers/hooks.js +13 -0
- package/dist/handlers/hooks.js.map +1 -1
- package/dist/handlers/index.js +14 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/machines.js +6 -0
- package/dist/handlers/machines.js.map +1 -1
- package/dist/handlers/messaging.d.ts +3 -1
- package/dist/handlers/messaging.js +455 -48
- package/dist/handlers/messaging.js.map +1 -1
- package/dist/handlers/oauth-adv.d.ts +191 -0
- package/dist/handlers/oauth-adv.js +1305 -0
- package/dist/handlers/oauth-adv.js.map +1 -0
- package/dist/handlers/oauth-flows.d.ts +25 -1
- package/dist/handlers/oauth-flows.js +111 -50
- package/dist/handlers/oauth-flows.js.map +1 -1
- package/dist/handlers/oauth.d.ts +24 -3
- package/dist/handlers/oauth.js +245 -60
- package/dist/handlers/oauth.js.map +1 -1
- package/dist/handlers/orgs.js +6 -0
- package/dist/handlers/orgs.js.map +1 -1
- package/dist/handlers/platform.d.ts +5 -0
- package/dist/handlers/platform.js +33 -15
- package/dist/handlers/platform.js.map +1 -1
- package/dist/handlers/scim.d.ts +2 -0
- package/dist/handlers/scim.js +198 -11
- package/dist/handlers/scim.js.map +1 -1
- package/dist/handlers/sessions.d.ts +2 -0
- package/dist/handlers/sessions.js +24 -16
- package/dist/handlers/sessions.js.map +1 -1
- package/dist/handlers/users.js +3 -0
- package/dist/handlers/users.js.map +1 -1
- package/dist/jwe.d.ts +18 -0
- package/dist/jwe.js +101 -0
- package/dist/jwe.js.map +1 -0
- package/dist/jws.js +2 -0
- package/dist/jws.js.map +1 -1
- package/dist/messaging-callbacks.d.ts +100 -0
- package/dist/messaging-callbacks.js +767 -0
- package/dist/messaging-callbacks.js.map +1 -0
- package/dist/openapi.d.ts +1 -0
- package/dist/openapi.js +44 -2
- package/dist/openapi.js.map +1 -1
- package/dist/parity-emu3-authz.d.ts +3 -0
- package/dist/parity-emu3-authz.js +61 -0
- package/dist/parity-emu3-authz.js.map +1 -0
- package/dist/parity-emu3-billing.d.ts +3 -0
- package/dist/parity-emu3-billing.js +25 -0
- package/dist/parity-emu3-billing.js.map +1 -0
- package/dist/parity-emu3-messaging.d.ts +3 -0
- package/dist/parity-emu3-messaging.js +27 -0
- package/dist/parity-emu3-messaging.js.map +1 -0
- package/dist/parity-emu3-misc.d.ts +2 -0
- package/dist/parity-emu3-misc.js +63 -0
- package/dist/parity-emu3-misc.js.map +1 -0
- package/dist/parity-emu3-oauth.d.ts +2 -0
- package/dist/parity-emu3-oauth.js +39 -0
- package/dist/parity-emu3-oauth.js.map +1 -0
- package/dist/parity-emu4-actions.d.ts +2 -0
- package/dist/parity-emu4-actions.js +38 -0
- package/dist/parity-emu4-actions.js.map +1 -0
- package/dist/parity-emu4-authz.d.ts +3 -0
- package/dist/parity-emu4-authz.js +68 -0
- package/dist/parity-emu4-authz.js.map +1 -0
- package/dist/parity-emu4-billing.d.ts +6 -0
- package/dist/parity-emu4-billing.js +44 -0
- package/dist/parity-emu4-billing.js.map +1 -0
- package/dist/parity-emu4-compliance.d.ts +2 -0
- package/dist/parity-emu4-compliance.js +92 -0
- package/dist/parity-emu4-compliance.js.map +1 -0
- package/dist/parity-emu4-federation.d.ts +2 -0
- package/dist/parity-emu4-federation.js +33 -0
- package/dist/parity-emu4-federation.js.map +1 -0
- package/dist/parity-emu4-messaging.d.ts +3 -0
- package/dist/parity-emu4-messaging.js +42 -0
- package/dist/parity-emu4-messaging.js.map +1 -0
- package/dist/parity-emu4-oauth.d.ts +2 -0
- package/dist/parity-emu4-oauth.js +55 -0
- package/dist/parity-emu4-oauth.js.map +1 -0
- package/dist/parity-emu4-trust.d.ts +2 -0
- package/dist/parity-emu4-trust.js +41 -0
- package/dist/parity-emu4-trust.js.map +1 -0
- package/dist/parity-routes.js +19 -1
- package/dist/parity-routes.js.map +1 -1
- package/dist/sns-cert.d.ts +9 -0
- package/dist/sns-cert.js +101 -0
- package/dist/sns-cert.js.map +1 -0
- package/dist/tokens.d.ts +69 -4
- package/dist/tokens.js +164 -38
- package/dist/tokens.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emu4-messaging.js","sourceRoot":"","sources":["../../src/handlers/emu4-messaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RouteDef } from '../engine';
|
|
2
|
+
export declare function minorsHandlers(): RouteDef[];
|
|
3
|
+
/** Validate a `compliance.minors` patch like the real settings validator (used by the config route). */
|
|
4
|
+
export declare function validateMinors(raw: unknown): Array<{
|
|
5
|
+
param: string;
|
|
6
|
+
message: string;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.minorsHandlers = minorsHandlers;
|
|
4
|
+
exports.validateMinors = validateMinors;
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const store_1 = require("../store");
|
|
7
|
+
const support_1 = require("./support");
|
|
8
|
+
const emu4_shared_1 = require("./emu4-shared");
|
|
9
|
+
/**
|
|
10
|
+
* Family accounts: age assurance records, guardian consent with several methods and an assurance floor, and the minor profile
|
|
11
|
+
* they settle. Config lives in `compliance.minors` (see the `/__emulator/compliance/config` route). shortcut: no session is held
|
|
12
|
+
* for a minor without consent (the emulator issues sessions without this gate); read `minor_status` instead.
|
|
13
|
+
*/
|
|
14
|
+
const LEVELS = ['low', 'medium', 'high'];
|
|
15
|
+
const CONSENT_METHODS = ['email_link', 'admin', 'signed_form', 'payment_card', 'video_call', 'id_document', 'third_party'];
|
|
16
|
+
const AGE_METHODS = ['self_declared', 'id_document', 'payment_card', 'estimation', 'credential', 'third_party', 'admin'];
|
|
17
|
+
const CONSENT_LEVEL = { email_link: 'low', admin: 'medium', signed_form: 'medium', payment_card: 'medium', video_call: 'high', id_document: 'high' };
|
|
18
|
+
const AGE_LEVEL = { self_declared: 'low', estimation: 'medium', payment_card: 'medium', admin: 'medium', credential: 'high', id_document: 'high' };
|
|
19
|
+
const rank = (l) => LEVELS.indexOf(l);
|
|
20
|
+
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
21
|
+
const st = (0, support_1.engineState)((e) => ({
|
|
22
|
+
profiles: new Map(),
|
|
23
|
+
links: new store_1.Table('guardian_links', e.clock.now, 'gl'),
|
|
24
|
+
assurances: new store_1.Table('age_assurances', e.clock.now, 'aa'),
|
|
25
|
+
verifications: new store_1.Table('identity_verifications', e.clock.now, 'idv'),
|
|
26
|
+
}));
|
|
27
|
+
const consentLevel = (method, stated) => (method === 'third_party' ? (stated ?? 'low') : CONSENT_LEVEL[method]);
|
|
28
|
+
const ageLevel = (method, stated) => (method === 'third_party' ? (stated ?? 'low') : AGE_LEVEL[method]);
|
|
29
|
+
function consentAllowed(cfg, method, stated) {
|
|
30
|
+
const level = consentLevel(method, stated);
|
|
31
|
+
if (!cfg.consentMethods.includes(method))
|
|
32
|
+
return { ok: false, reason: 'method_not_accepted', level };
|
|
33
|
+
if (rank(level) < rank(cfg.minAssuranceLevel))
|
|
34
|
+
return { ok: false, reason: 'level_too_low', level };
|
|
35
|
+
return { ok: true, level };
|
|
36
|
+
}
|
|
37
|
+
const ageOn = (birth, now) => {
|
|
38
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(birth);
|
|
39
|
+
if (!m)
|
|
40
|
+
return null;
|
|
41
|
+
const n = new Date(now);
|
|
42
|
+
let age = n.getUTCFullYear() - Number(m[1]);
|
|
43
|
+
if (n.getUTCMonth() + 1 < Number(m[2]) || (n.getUTCMonth() + 1 === Number(m[2]) && n.getUTCDate() < Number(m[3])))
|
|
44
|
+
age -= 1;
|
|
45
|
+
return age;
|
|
46
|
+
};
|
|
47
|
+
function assess(e, u) {
|
|
48
|
+
const cfg = (0, emu4_shared_1.minorsCfg)(e);
|
|
49
|
+
const meta = (u.public_metadata ?? {});
|
|
50
|
+
const birthdate = meta[cfg.birthdateTrait];
|
|
51
|
+
const age = typeof birthdate === 'string' ? ageOn(birthdate, e.clock.now()) : null;
|
|
52
|
+
if (age === null)
|
|
53
|
+
return { status: 'unknown' };
|
|
54
|
+
const country = cfg.countryTrait && typeof meta[cfg.countryTrait] === 'string' ? String(meta[cfg.countryTrait]).toUpperCase() : null;
|
|
55
|
+
const byCountry = country ? cfg.consentAges[country] : undefined;
|
|
56
|
+
const consentAge = typeof byCountry === 'number' ? byCountry : cfg.defaultConsentAge;
|
|
57
|
+
if (cfg.minimumAge !== null && age < cfg.minimumAge)
|
|
58
|
+
return { status: 'below_minimum', age, consentAge, birthdate: birthdate };
|
|
59
|
+
if (age >= consentAge)
|
|
60
|
+
return { status: 'adult', age, consentAge, birthdate: birthdate };
|
|
61
|
+
return { status: 'consent_required', age, consentAge, jurisdiction: typeof byCountry === 'number' ? country : null, birthdate: birthdate };
|
|
62
|
+
}
|
|
63
|
+
const validAssurances = (e, userId) => st(e).assurances.filter((r) => r.user_id === userId && r.status === 'valid' && !(r.expires_at && r.expires_at <= e.clock.now()));
|
|
64
|
+
/** Recompute a user's minor profile. A recorded age assurance by a trusted method settles the question without a date of birth. */
|
|
65
|
+
function refresh(e, u) {
|
|
66
|
+
const cfg = (0, emu4_shared_1.minorsCfg)(e);
|
|
67
|
+
if (!cfg.enabled)
|
|
68
|
+
return null;
|
|
69
|
+
const s = st(e);
|
|
70
|
+
const a = assess(e, u);
|
|
71
|
+
const existing = s.profiles.get(u.id);
|
|
72
|
+
if (a.status === 'consent_required' && cfg.trustedAgeMethods.length > 0) {
|
|
73
|
+
const proven = validAssurances(e, u.id).some((r) => cfg.trustedAgeMethods.includes(r.method) && r.over_age >= a.consentAge);
|
|
74
|
+
if (proven) {
|
|
75
|
+
s.profiles.delete(u.id);
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (a.status === 'adult' || a.status === 'unknown') {
|
|
80
|
+
if (a.status === 'adult')
|
|
81
|
+
s.profiles.delete(u.id);
|
|
82
|
+
return a.status === 'unknown' ? (existing ?? null) : null;
|
|
83
|
+
}
|
|
84
|
+
const profile = { birthdate: a.birthdate, age_at_assessment: a.age, consent_age: a.status === 'consent_required' ? a.consentAge : cfg.defaultConsentAge, jurisdiction: a.status === 'consent_required' ? (a.jurisdiction ?? null) : null, status: existing?.status ?? 'consent_required', consented_at: existing?.consented_at ?? null };
|
|
85
|
+
s.profiles.set(u.id, profile);
|
|
86
|
+
if (!existing)
|
|
87
|
+
e.webhooks.emit('user.parental_consent_required', { object: 'minor_status', user_id: u.id, status: 'consent_required', consent_age: profile.consent_age });
|
|
88
|
+
return profile;
|
|
89
|
+
}
|
|
90
|
+
const presentMinor = (p) => (!p ? { object: 'minor_status', status: 'not_required' } : { object: 'minor_status', status: p.status, birthdate: p.birthdate, age_at_assessment: p.age_at_assessment, consent_age: p.consent_age, jurisdiction: p.jurisdiction, consented_at: p.consented_at });
|
|
91
|
+
const presentGuardian = (e, l, extra = {}) => ({
|
|
92
|
+
object: 'guardian_link',
|
|
93
|
+
id: l.id,
|
|
94
|
+
child_user_id: l.child_user_id,
|
|
95
|
+
guardian_user_id: l.guardian_user_id,
|
|
96
|
+
guardian_email: l.guardian_email,
|
|
97
|
+
relationship: l.relationship,
|
|
98
|
+
status: l.status === 'pending' && l.expires_at && l.expires_at <= e.clock.now() ? 'expired' : l.status,
|
|
99
|
+
expires_at: l.expires_at,
|
|
100
|
+
consent_method: l.consent_method ?? null,
|
|
101
|
+
assurance_level: l.assurance_level ?? null,
|
|
102
|
+
consent_reference: l.consent_reference ?? null,
|
|
103
|
+
verification_id: l.verification_id ?? null,
|
|
104
|
+
consented_at: l.consented_at ?? null,
|
|
105
|
+
created_at: l.created_at,
|
|
106
|
+
...extra,
|
|
107
|
+
});
|
|
108
|
+
const presentAssurance = (e, r) => ({
|
|
109
|
+
object: 'age_assurance',
|
|
110
|
+
id: r.id,
|
|
111
|
+
user_id: r.user_id,
|
|
112
|
+
method: r.method,
|
|
113
|
+
level: r.level,
|
|
114
|
+
over_age: r.over_age,
|
|
115
|
+
provider: r.provider ?? null,
|
|
116
|
+
reference: r.reference ?? null,
|
|
117
|
+
verification_id: r.verification_id ?? null,
|
|
118
|
+
status: r.status === 'valid' && r.expires_at && r.expires_at <= e.clock.now() ? 'expired' : r.status,
|
|
119
|
+
trusted: (0, emu4_shared_1.minorsCfg)(e).trustedAgeMethods.includes(r.method),
|
|
120
|
+
expires_at: r.expires_at ?? null,
|
|
121
|
+
revoked_at: r.revoked_at ?? null,
|
|
122
|
+
revoked_reason: r.revoked_reason ?? null,
|
|
123
|
+
created_at: r.created_at,
|
|
124
|
+
});
|
|
125
|
+
/** Mark the child consented / back to required, from the set of active links. */
|
|
126
|
+
function syncChild(e, childId, declined = false) {
|
|
127
|
+
const s = st(e);
|
|
128
|
+
const profile = s.profiles.get(childId);
|
|
129
|
+
if (!profile)
|
|
130
|
+
return null;
|
|
131
|
+
const active = s.links.filter((l) => l.child_user_id === childId).some((l) => l.status === 'active');
|
|
132
|
+
const next = active ? 'consented' : declined ? 'declined' : 'consent_required';
|
|
133
|
+
if (next !== profile.status) {
|
|
134
|
+
profile.status = next;
|
|
135
|
+
profile.consented_at = active ? e.clock.now() : null;
|
|
136
|
+
e.webhooks.emit(next === 'consented' ? 'user.parental_consent_granted' : next === 'declined' ? 'user.parental_consent_declined' : 'user.parental_consent_required', { object: 'minor_status', user_id: childId, status: next, consent_age: profile.consent_age });
|
|
137
|
+
}
|
|
138
|
+
return next;
|
|
139
|
+
}
|
|
140
|
+
/** An approved identity verification the guardian (or the user) holds; the id_document methods rest on it. */
|
|
141
|
+
function approvedVerification(e, id, userId) {
|
|
142
|
+
const own = st(e).verifications.get(id);
|
|
143
|
+
if (own)
|
|
144
|
+
return own.user_id === userId && own.status === 'approved';
|
|
145
|
+
for (const [name, t] of e.generic) {
|
|
146
|
+
if (!name.includes('identity_verification'))
|
|
147
|
+
continue;
|
|
148
|
+
const r = t.get(id);
|
|
149
|
+
if (r && (r._parent === userId || r.user_id === userId) && r.status === 'approved')
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const unknownField = (b, allowed) => {
|
|
155
|
+
const k = Object.keys(b).find((x) => !allowed.includes(x));
|
|
156
|
+
if (k)
|
|
157
|
+
throw (0, emu4_shared_1.bad)(`Unrecognised field ${k}. Expected any of ${allowed.join(', ')}.`, k);
|
|
158
|
+
};
|
|
159
|
+
const displayName = (u) => [u.first_name, u.last_name].filter(Boolean).join(' ') || u.username || 'A user';
|
|
160
|
+
function minorsHandlers() {
|
|
161
|
+
const linkOf = (e, childId, linkId) => {
|
|
162
|
+
const l = st(e).links.get(linkId);
|
|
163
|
+
if (!l || l.child_user_id !== childId)
|
|
164
|
+
throw (0, errors_1.notFound)('Guardian link');
|
|
165
|
+
return l;
|
|
166
|
+
};
|
|
167
|
+
const byToken = (e, token) => {
|
|
168
|
+
const l = st(e).links.find((x) => x.token === token);
|
|
169
|
+
if (!l || l.status !== 'pending' || !l.expires_at || l.expires_at <= e.clock.now() || !e.db.users.get(l.child_user_id))
|
|
170
|
+
throw (0, errors_1.notFound)('This consent link');
|
|
171
|
+
return l;
|
|
172
|
+
};
|
|
173
|
+
const statusBody = (e, userId) => {
|
|
174
|
+
const top = validAssurances(e, userId)[0];
|
|
175
|
+
return { ...presentMinor(st(e).profiles.get(userId)), age_assurance: top ? { over_age: top.over_age, method: top.method, level: top.level, expires_at: top.expires_at ?? null } : null, guardians: st(e).links.filter((l) => l.child_user_id === userId).map((l) => presentGuardian(e, l)) };
|
|
176
|
+
};
|
|
177
|
+
return [
|
|
178
|
+
{ method: 'GET', pattern: '/v1/users/:id/minor_status', scope: 'users:read', handler: (c) => {
|
|
179
|
+
(0, emu4_shared_1.liveUser)(c.engine, c.params.id);
|
|
180
|
+
return { body: statusBody(c.engine, c.params.id) };
|
|
181
|
+
} },
|
|
182
|
+
{ method: 'POST', pattern: '/v1/users/:id/minor_status/assess', scope: 'users:write', handler: (c) => {
|
|
183
|
+
const e = c.engine;
|
|
184
|
+
const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
185
|
+
if (!(0, emu4_shared_1.minorsCfg)(e).enabled)
|
|
186
|
+
throw (0, emu4_shared_1.bad)('Age gating is off for this application (compliance.minors.enabled).', 'compliance.minors.enabled');
|
|
187
|
+
refresh(e, u);
|
|
188
|
+
return { body: statusBody(e, u.id) };
|
|
189
|
+
} },
|
|
190
|
+
{ method: 'POST', pattern: '/v1/users/:id/guardians', scope: 'users:write', handler: (c) => {
|
|
191
|
+
const e = c.engine;
|
|
192
|
+
const child = (0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
193
|
+
const b = c.body;
|
|
194
|
+
unknownField(b, ['email', 'guardian_user_id', 'relationship', 'send_email']);
|
|
195
|
+
let guardianEmail = null;
|
|
196
|
+
let guardianUserId = null;
|
|
197
|
+
if (typeof b.guardian_user_id === 'string' && b.guardian_user_id) {
|
|
198
|
+
const g = (0, emu4_shared_1.liveUser)(e, b.guardian_user_id);
|
|
199
|
+
if (g.id === child.id)
|
|
200
|
+
throw (0, emu4_shared_1.bad)('A user cannot be their own guardian.', 'guardian_user_id');
|
|
201
|
+
guardianUserId = g.id;
|
|
202
|
+
}
|
|
203
|
+
if (b.email !== undefined) {
|
|
204
|
+
if (typeof b.email !== 'string' || !EMAIL_RE.test(b.email.trim()) || b.email.length > 320)
|
|
205
|
+
throw (0, emu4_shared_1.bad)('email must be an email address.', 'email');
|
|
206
|
+
guardianEmail = b.email.trim().toLowerCase();
|
|
207
|
+
}
|
|
208
|
+
if (!guardianEmail && !guardianUserId)
|
|
209
|
+
throw (0, emu4_shared_1.bad)('Name the guardian: email or guardian_user_id.', 'email');
|
|
210
|
+
if (guardianUserId && !guardianEmail) {
|
|
211
|
+
const emails = e.db.users.get(guardianUserId).emails ?? [];
|
|
212
|
+
guardianEmail = (emails.find((m) => m.verified) ?? emails[0])?.email_address ?? null;
|
|
213
|
+
}
|
|
214
|
+
const relationship = typeof b.relationship === 'string' ? b.relationship.trim().slice(0, 40) || null : null;
|
|
215
|
+
if (b.send_email !== undefined && typeof b.send_email !== 'boolean')
|
|
216
|
+
throw (0, emu4_shared_1.bad)('send_email must be a boolean.', 'send_email');
|
|
217
|
+
const cfg = (0, emu4_shared_1.minorsCfg)(e);
|
|
218
|
+
const emailOk = consentAllowed(cfg, 'email_link').ok;
|
|
219
|
+
if (!emailOk && b.send_email === true)
|
|
220
|
+
throw (0, emu4_shared_1.bad)('Consent by email link is not accepted here (compliance.minors.consentMethods, minAssuranceLevel), so there is nothing to email. Record consent with the approve route.', 'send_email');
|
|
221
|
+
const now = e.clock.now();
|
|
222
|
+
const token = emailOk ? `gct_${crypto.randomUUID().replace(/-/g, '')}${crypto.randomUUID().replace(/-/g, '')}` : null;
|
|
223
|
+
const link = st(e).links.insert({ child_user_id: child.id, guardian_user_id: guardianUserId, guardian_email: guardianEmail, relationship, status: 'pending', token, expires_at: emailOk ? now + cfg.consentTtlHours * 3_600_000 : null, created_at: now });
|
|
224
|
+
const consentUrl = token ? `${e.issuer}/hosted/parental-consent?token=${encodeURIComponent(token)}` : null;
|
|
225
|
+
let emailed = false;
|
|
226
|
+
if (b.send_email === true) {
|
|
227
|
+
if (!guardianEmail)
|
|
228
|
+
throw (0, emu4_shared_1.bad)('There is no address to send the request to.', 'email');
|
|
229
|
+
e.messages.send({ channel: 'email', to: guardianEmail, subject: `Parental consent for ${displayName(child)}`, body: `Approve or decline: ${consentUrl}`, link: consentUrl ?? undefined });
|
|
230
|
+
emailed = true;
|
|
231
|
+
}
|
|
232
|
+
(0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_requested', 'user', child.id, { guardian_link_id: link.id, emailed });
|
|
233
|
+
return { status: 201, body: presentGuardian(e, link, { consent_url: consentUrl, emailed }) };
|
|
234
|
+
} },
|
|
235
|
+
{ method: 'POST', pattern: '/v1/users/:id/guardians/:linkId/approve', scope: 'users:write', handler: (c) => {
|
|
236
|
+
const e = c.engine;
|
|
237
|
+
(0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
238
|
+
const link = linkOf(e, c.params.id, c.params.linkId);
|
|
239
|
+
if (link.status === 'active')
|
|
240
|
+
return { body: presentGuardian(e, link) };
|
|
241
|
+
if (link.status === 'revoked')
|
|
242
|
+
throw (0, emu4_shared_1.conflict)('This guardian link was revoked; request consent again.');
|
|
243
|
+
const b = c.body;
|
|
244
|
+
unknownField(b, ['note', 'method', 'assurance_level', 'reference', 'verification_id']);
|
|
245
|
+
const method = (b.method ?? 'admin');
|
|
246
|
+
if (!CONSENT_METHODS.includes(method))
|
|
247
|
+
throw (0, emu4_shared_1.bad)(`method must be one of ${CONSENT_METHODS.join(', ')}.`, 'method');
|
|
248
|
+
if (method === 'email_link')
|
|
249
|
+
throw (0, emu4_shared_1.bad)('email_link is recorded by the guardian opening their consent link, not by an admin.', 'method');
|
|
250
|
+
if (b.assurance_level !== undefined && !LEVELS.includes(b.assurance_level))
|
|
251
|
+
throw (0, emu4_shared_1.bad)(`assurance_level must be one of ${LEVELS.join(', ')}.`, 'assurance_level');
|
|
252
|
+
if (b.assurance_level !== undefined && method !== 'third_party')
|
|
253
|
+
throw (0, emu4_shared_1.bad)('assurance_level is stated only for third_party.', 'assurance_level');
|
|
254
|
+
if (b.reference !== undefined && (typeof b.reference !== 'string' || b.reference.length > 200))
|
|
255
|
+
throw (0, emu4_shared_1.bad)('reference is text of at most 200 characters.', 'reference');
|
|
256
|
+
const decision = consentAllowed((0, emu4_shared_1.minorsCfg)(e), method, b.assurance_level);
|
|
257
|
+
if (!decision.ok)
|
|
258
|
+
throw (0, emu4_shared_1.bad)(decision.reason === 'level_too_low' ? `${method} reaches ${decision.level}, below compliance.minors.minAssuranceLevel.` : `${method} is not in compliance.minors.consentMethods.`, 'method');
|
|
259
|
+
let verificationId = null;
|
|
260
|
+
if (method === 'id_document') {
|
|
261
|
+
if (typeof b.verification_id !== 'string' || !b.verification_id)
|
|
262
|
+
throw (0, emu4_shared_1.bad)("id_document needs the guardian's approved identity verification: verification_id.", 'verification_id');
|
|
263
|
+
if (!link.guardian_user_id)
|
|
264
|
+
throw (0, emu4_shared_1.bad)('id_document needs a guardian who has an account (guardian_user_id on the link).', 'method');
|
|
265
|
+
if (!approvedVerification(e, b.verification_id, link.guardian_user_id))
|
|
266
|
+
throw (0, emu4_shared_1.bad)('verification_id is not an approved identity verification of this guardian.', 'verification_id');
|
|
267
|
+
verificationId = b.verification_id;
|
|
268
|
+
}
|
|
269
|
+
else if (b.verification_id !== undefined)
|
|
270
|
+
throw (0, emu4_shared_1.bad)('verification_id applies only to id_document.', 'verification_id');
|
|
271
|
+
Object.assign(link, { status: 'active', consent_method: method, consented_at: e.clock.now(), token: null, note: typeof b.note === 'string' ? b.note.slice(0, 500) : null, assurance_level: decision.level, consent_reference: typeof b.reference === 'string' ? b.reference : null, verification_id: verificationId });
|
|
272
|
+
(0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_recorded', 'user', c.params.id, { guardian_link_id: link.id, method, assurance_level: decision.level });
|
|
273
|
+
syncChild(e, c.params.id);
|
|
274
|
+
return { body: presentGuardian(e, link) };
|
|
275
|
+
} },
|
|
276
|
+
{ method: 'DELETE', pattern: '/v1/users/:id/guardians/:linkId', scope: 'users:write', handler: (c) => {
|
|
277
|
+
const e = c.engine;
|
|
278
|
+
(0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
279
|
+
const link = linkOf(e, c.params.id, c.params.linkId);
|
|
280
|
+
Object.assign(link, { status: 'revoked', token: null });
|
|
281
|
+
(0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_revoked', 'user', c.params.id, { guardian_link_id: link.id });
|
|
282
|
+
syncChild(e, c.params.id);
|
|
283
|
+
return { body: presentGuardian(e, link) };
|
|
284
|
+
} },
|
|
285
|
+
// The guardian's own page (an unguessable one-time token is the credential).
|
|
286
|
+
{ method: 'GET', pattern: '/v1/parental_consent/:token', public: true, handler: (c) => {
|
|
287
|
+
const l = byToken(c.engine, c.params.token);
|
|
288
|
+
return { headers: { 'cache-control': 'no-store' }, body: { object: 'parental_consent_request', child_name: displayName(c.engine.db.users.get(l.child_user_id)), guardian_email: l.guardian_email, relationship: l.relationship, expires_at: l.expires_at } };
|
|
289
|
+
} },
|
|
290
|
+
{ method: 'POST', pattern: '/v1/parental_consent/:token', public: true, handler: (c) => {
|
|
291
|
+
const e = c.engine;
|
|
292
|
+
const decision = c.body.decision;
|
|
293
|
+
if (decision !== 'approve' && decision !== 'decline')
|
|
294
|
+
throw (0, emu4_shared_1.bad)('decision must be approve or decline.', 'decision');
|
|
295
|
+
const l = byToken(e, c.params.token);
|
|
296
|
+
if (decision === 'approve' && !consentAllowed((0, emu4_shared_1.minorsCfg)(e), 'email_link').ok)
|
|
297
|
+
throw (0, emu4_shared_1.conflict)('Consent by email link is no longer accepted here. Ask the application for another way to give consent.');
|
|
298
|
+
Object.assign(l, { status: decision === 'approve' ? 'active' : 'declined', consent_method: 'email_link', assurance_level: decision === 'approve' ? 'low' : null, consented_at: decision === 'approve' ? e.clock.now() : null, token: null });
|
|
299
|
+
(0, emu4_shared_1.audit)(e, null, decision === 'approve' ? 'user.guardian_consent_granted' : 'user.guardian_consent_declined', 'user', l.child_user_id, { guardian_link_id: l.id, guardian_email: l.guardian_email });
|
|
300
|
+
const status = syncChild(e, l.child_user_id, decision === 'decline');
|
|
301
|
+
return { headers: { 'cache-control': 'no-store' }, body: { object: 'parental_consent', decision, status: status ?? 'not_required', guardian_link: presentGuardian(e, l) } };
|
|
302
|
+
} },
|
|
303
|
+
// ── age assurance ──
|
|
304
|
+
{ method: 'GET', pattern: '/v1/users/:id/age_assurance', scope: 'users:read', handler: (c) => {
|
|
305
|
+
(0, emu4_shared_1.liveUser)(c.engine, c.params.id);
|
|
306
|
+
return { body: (0, emu4_shared_1.listOf)(st(c.engine).assurances.filter((r) => r.user_id === c.params.id).map((r) => presentAssurance(c.engine, r))) };
|
|
307
|
+
} },
|
|
308
|
+
{ method: 'POST', pattern: '/v1/users/:id/age_assurance', scope: 'users:write', handler: (c) => {
|
|
309
|
+
const e = c.engine;
|
|
310
|
+
const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
311
|
+
const b = c.body;
|
|
312
|
+
unknownField(b, ['method', 'over_age', 'assurance_level', 'provider', 'reference', 'verification_id', 'expires_at']);
|
|
313
|
+
const method = b.method;
|
|
314
|
+
if (!AGE_METHODS.includes(method))
|
|
315
|
+
throw (0, emu4_shared_1.bad)(`method must be one of ${AGE_METHODS.join(', ')}.`, 'method');
|
|
316
|
+
const overAge = b.over_age;
|
|
317
|
+
if (typeof overAge !== 'number' || !Number.isInteger(overAge) || overAge < 1 || overAge > 99)
|
|
318
|
+
throw (0, emu4_shared_1.bad)('over_age is a whole number of years from 1 to 99.', 'over_age');
|
|
319
|
+
if (b.assurance_level !== undefined && !LEVELS.includes(b.assurance_level))
|
|
320
|
+
throw (0, emu4_shared_1.bad)(`assurance_level must be one of ${LEVELS.join(', ')}.`, 'assurance_level');
|
|
321
|
+
if (b.assurance_level !== undefined && method !== 'third_party')
|
|
322
|
+
throw (0, emu4_shared_1.bad)('assurance_level is stated only for third_party.', 'assurance_level');
|
|
323
|
+
for (const k of ['provider', 'reference'])
|
|
324
|
+
if (b[k] !== undefined && b[k] !== null && (typeof b[k] !== 'string' || b[k].length > 200))
|
|
325
|
+
throw (0, emu4_shared_1.bad)(`${k} is text of at most 200 characters.`, k);
|
|
326
|
+
let expiresAt = null;
|
|
327
|
+
if (b.expires_at !== undefined && b.expires_at !== null) {
|
|
328
|
+
if (typeof b.expires_at !== 'number' || !Number.isFinite(b.expires_at) || b.expires_at <= e.clock.now())
|
|
329
|
+
throw (0, emu4_shared_1.bad)('expires_at is a future time in epoch milliseconds.', 'expires_at');
|
|
330
|
+
expiresAt = b.expires_at;
|
|
331
|
+
}
|
|
332
|
+
let verificationId = null;
|
|
333
|
+
if (method === 'id_document') {
|
|
334
|
+
if (typeof b.verification_id !== 'string' || !b.verification_id)
|
|
335
|
+
throw (0, emu4_shared_1.bad)("id_document needs the user's approved identity verification: verification_id.", 'verification_id');
|
|
336
|
+
if (!approvedVerification(e, b.verification_id, u.id))
|
|
337
|
+
throw (0, emu4_shared_1.bad)('verification_id is not an approved identity verification of this user.', 'verification_id');
|
|
338
|
+
verificationId = b.verification_id;
|
|
339
|
+
}
|
|
340
|
+
else if (b.verification_id !== undefined)
|
|
341
|
+
throw (0, emu4_shared_1.bad)('verification_id applies only to id_document.', 'verification_id');
|
|
342
|
+
const level = ageLevel(method, b.assurance_level);
|
|
343
|
+
const row = st(e).assurances.insert({ user_id: u.id, method, level, over_age: overAge, provider: b.provider ?? null, reference: b.reference ?? null, verification_id: verificationId, status: 'valid', expires_at: expiresAt, created_at: e.clock.now() });
|
|
344
|
+
(0, emu4_shared_1.audit)(e, c, 'user.age_assurance_recorded', 'user', u.id, { assurance_id: row.id, method, level, over_age: overAge });
|
|
345
|
+
e.webhooks.emit('user.age_assurance_recorded', { object: 'age_assurance', id: row.id, user_id: u.id, method, level, over_age: overAge, provider: row.provider, trusted: (0, emu4_shared_1.minorsCfg)(e).trustedAgeMethods.includes(method), expires_at: expiresAt });
|
|
346
|
+
refresh(e, u);
|
|
347
|
+
return { status: 201, body: presentAssurance(e, row) };
|
|
348
|
+
} },
|
|
349
|
+
{ method: 'POST', pattern: '/v1/users/:id/age_assurance/:assuranceId/revoke', scope: 'users:write', handler: (c) => {
|
|
350
|
+
const e = c.engine;
|
|
351
|
+
const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
|
|
352
|
+
unknownField(c.body, ['reason']);
|
|
353
|
+
const reason = c.body.reason;
|
|
354
|
+
if (reason !== undefined && reason !== null && (typeof reason !== 'string' || reason.length > 500))
|
|
355
|
+
throw (0, emu4_shared_1.bad)('reason is text of at most 500 characters.', 'reason');
|
|
356
|
+
const r = st(e).assurances.get(c.params.assuranceId);
|
|
357
|
+
if (!r || r.user_id !== u.id)
|
|
358
|
+
throw (0, errors_1.notFound)('Age assurance');
|
|
359
|
+
if (r.status !== 'revoked') {
|
|
360
|
+
Object.assign(r, { status: 'revoked', revoked_at: e.clock.now(), revoked_reason: reason ?? null });
|
|
361
|
+
(0, emu4_shared_1.audit)(e, c, 'user.age_assurance_revoked', 'user', u.id, { assurance_id: r.id });
|
|
362
|
+
e.webhooks.emit('user.age_assurance_revoked', { object: 'age_assurance', id: r.id, user_id: u.id, status: 'revoked', revoked_at: r.revoked_at });
|
|
363
|
+
refresh(e, u);
|
|
364
|
+
}
|
|
365
|
+
return { body: presentAssurance(e, r) };
|
|
366
|
+
} },
|
|
367
|
+
// ── emulator helper: an identity verification the id_document methods rest on ──
|
|
368
|
+
{ method: 'POST', pattern: '/__emulator/compliance/identity_verifications', public: true, handler: (c) => {
|
|
369
|
+
const e = c.engine;
|
|
370
|
+
(0, emu4_shared_1.liveUser)(e, c.body.user_id);
|
|
371
|
+
const status = (c.body.status ?? 'approved');
|
|
372
|
+
if (!['approved', 'pending', 'rejected'].includes(status))
|
|
373
|
+
throw (0, emu4_shared_1.bad)('status is approved, pending or rejected.', 'status');
|
|
374
|
+
const row = st(e).verifications.insert({ user_id: c.body.user_id, status, created_at: e.clock.now() });
|
|
375
|
+
return { status: 201, body: { object: 'identity_verification', id: row.id, user_id: row.user_id, status } };
|
|
376
|
+
} },
|
|
377
|
+
];
|
|
378
|
+
}
|
|
379
|
+
/** Validate a `compliance.minors` patch like the real settings validator (used by the config route). */
|
|
380
|
+
function validateMinors(raw) {
|
|
381
|
+
const p = 'compliance.minors';
|
|
382
|
+
if (!(0, emu4_shared_1.isObj)(raw))
|
|
383
|
+
return [{ param: p, message: 'Expected an object.' }];
|
|
384
|
+
const out = [];
|
|
385
|
+
const known = ['enabled', 'birthdateTrait', 'countryTrait', 'defaultConsentAge', 'consentAges', 'minimumAge', 'restriction', 'consentTtlHours', 'consentMethods', 'minAssuranceLevel', 'trustedAgeMethods'];
|
|
386
|
+
for (const k of Object.keys(raw))
|
|
387
|
+
if (!known.includes(k))
|
|
388
|
+
out.push({ param: `${p}.${k}`, message: `Unknown field. Expected ${known.join(', ')}.` });
|
|
389
|
+
const age = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 1 && v <= 21;
|
|
390
|
+
if (raw.enabled !== undefined && typeof raw.enabled !== 'boolean')
|
|
391
|
+
out.push({ param: `${p}.enabled`, message: 'Expected a boolean.' });
|
|
392
|
+
if (raw.defaultConsentAge !== undefined && !age(raw.defaultConsentAge))
|
|
393
|
+
out.push({ param: `${p}.defaultConsentAge`, message: 'A whole number of years from 1 to 21.' });
|
|
394
|
+
if (raw.minimumAge !== undefined && raw.minimumAge !== null && !age(raw.minimumAge))
|
|
395
|
+
out.push({ param: `${p}.minimumAge`, message: 'A whole number of years from 1 to 21, or null.' });
|
|
396
|
+
if (raw.restriction !== undefined && raw.restriction !== 'hold' && raw.restriction !== 'flag')
|
|
397
|
+
out.push({ param: `${p}.restriction`, message: 'One of hold, flag.' });
|
|
398
|
+
if (raw.consentTtlHours !== undefined && !(typeof raw.consentTtlHours === 'number' && Number.isInteger(raw.consentTtlHours) && raw.consentTtlHours >= 1 && raw.consentTtlHours <= 720))
|
|
399
|
+
out.push({ param: `${p}.consentTtlHours`, message: 'A whole number of hours from 1 to 720.' });
|
|
400
|
+
if (raw.consentMethods !== undefined && (!Array.isArray(raw.consentMethods) || raw.consentMethods.length === 0 || raw.consentMethods.some((m) => !CONSENT_METHODS.includes(m))))
|
|
401
|
+
out.push({ param: `${p}.consentMethods`, message: `A non-empty list of ${CONSENT_METHODS.join(', ')}.` });
|
|
402
|
+
if (raw.minAssuranceLevel !== undefined && !LEVELS.includes(raw.minAssuranceLevel))
|
|
403
|
+
out.push({ param: `${p}.minAssuranceLevel`, message: `One of ${LEVELS.join(', ')}.` });
|
|
404
|
+
if (raw.trustedAgeMethods !== undefined && (!Array.isArray(raw.trustedAgeMethods) || raw.trustedAgeMethods.some((m) => !AGE_METHODS.includes(m))))
|
|
405
|
+
out.push({ param: `${p}.trustedAgeMethods`, message: `A list of ${AGE_METHODS.join(', ')}.` });
|
|
406
|
+
return out;
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=emu4-minors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emu4-minors.js","sourceRoot":"","sources":["../../src/handlers/emu4-minors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Engine } from '../engine';
|
|
2
|
+
import type { Obj } from '../openapi';
|
|
3
|
+
export declare function auditOf(e: Engine): Obj[];
|
|
4
|
+
/** Record one audit row. `actor` is `api_key` for a Backend API call and `system` for work the clock does. */
|
|
5
|
+
export declare function recordAudit(e: Engine, action: string, actor: 'api_key' | 'system' | 'oauth_client', targetType: string, targetId: string, metadata?: Obj): Obj;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.auditOf = auditOf;
|
|
4
|
+
exports.recordAudit = recordAudit;
|
|
5
|
+
const support_1 = require("./support");
|
|
6
|
+
/** The audit trail of the signing-key, publisher, delivery and token-exchange routes of this module, newest last. */
|
|
7
|
+
const rows = (0, support_1.engineState)(() => []);
|
|
8
|
+
function auditOf(e) {
|
|
9
|
+
return rows(e);
|
|
10
|
+
}
|
|
11
|
+
/** Record one audit row. `actor` is `api_key` for a Backend API call and `system` for work the clock does. */
|
|
12
|
+
function recordAudit(e, action, actor, targetType, targetId, metadata = {}) {
|
|
13
|
+
const row = { id: e.db.newId('audit'), object: 'audit_log_entry', action, actor_type: actor, actor_id: actor === 'api_key' ? 'emulator_key' : actor === 'system' ? action.split('.')[0] : null, target_type: targetType, target_id: targetId, ip: null, metadata, created_at: e.clock.now() };
|
|
14
|
+
rows(e).push(row);
|
|
15
|
+
return row;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=emu4-oauth-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emu4-oauth-audit.js","sourceRoot":"","sources":["../../src/handlers/emu4-oauth-audit.ts"],"names":[],"mappings":";;AAOA,0BAEC;AAGD,kCAIC;AAdD,uCAAwC;AAExC,qHAAqH;AACrH,MAAM,IAAI,GAAG,IAAA,qBAAW,EAAC,GAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1C,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,8GAA8G;AAC9G,SAAgB,WAAW,CAAC,CAAS,EAAE,MAAc,EAAE,KAA4C,EAAE,UAAkB,EAAE,QAAgB,EAAE,WAAgB,EAAE;IAC3J,MAAM,GAAG,GAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IACnS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}
|