@aglyn/tenant-data-admin 1.0.0-beta.199 → 1.0.0-beta.201
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/package.json +8 -7
- package/src/lib/server/admin-audit-write.d.ts +28 -0
- package/src/lib/server/admin-audit-write.js +46 -0
- package/src/lib/server/admin-audit-write.js.map +1 -0
- package/src/lib/server/admin-audit.d.ts +4 -9
- package/src/lib/server/admin-audit.js +12 -31
- package/src/lib/server/admin-audit.js.map +1 -1
- package/src/lib/server/consent-group-carry.js +2 -0
- package/src/lib/server/consent-group-carry.js.map +1 -1
- package/src/lib/server/contact-company-link.js +3 -0
- package/src/lib/server/contact-company-link.js.map +1 -1
- package/src/lib/server/contact-lifecycle-floor.js +3 -0
- package/src/lib/server/contact-lifecycle-floor.js.map +1 -1
- package/src/lib/server/contact-merge.js +4 -0
- package/src/lib/server/contact-merge.js.map +1 -1
- package/src/lib/server/crm-booking-activity.js +3 -2
- package/src/lib/server/crm-booking-activity.js.map +1 -1
- package/src/lib/server/crm-records.d.ts +15 -0
- package/src/lib/server/crm-records.js +52 -0
- package/src/lib/server/crm-records.js.map +1 -1
- package/src/lib/server/csp-aggregate.d.ts +16 -0
- package/src/lib/server/csp-aggregate.js +36 -0
- package/src/lib/server/csp-aggregate.js.map +1 -1
- package/src/lib/server/dns-probe.d.ts +7 -0
- package/src/lib/server/dns-probe.js +52 -0
- package/src/lib/server/dns-probe.js.map +1 -1
- package/src/lib/server/duplicate-resource.js +12 -5
- package/src/lib/server/duplicate-resource.js.map +1 -1
- package/src/lib/server/email-deliverability.d.ts +150 -0
- package/src/lib/server/email-deliverability.js +538 -0
- package/src/lib/server/email-deliverability.js.map +1 -0
- package/src/lib/server/email-delivery-log.d.ts +33 -0
- package/src/lib/server/email-delivery-log.js +43 -2
- package/src/lib/server/email-delivery-log.js.map +1 -1
- package/src/lib/server/email-sender-reputation.d.ts +2 -11
- package/src/lib/server/email-sender-reputation.js +8 -25
- package/src/lib/server/email-sender-reputation.js.map +1 -1
- package/src/lib/server/email-suppression.d.ts +21 -15
- package/src/lib/server/email-suppression.js +18 -34
- package/src/lib/server/email-suppression.js.map +1 -1
- package/src/lib/server/erase-person.js +53 -6
- package/src/lib/server/erase-person.js.map +1 -1
- package/src/lib/server/erase.js +4 -3
- package/src/lib/server/erase.js.map +1 -1
- package/src/lib/server/host-memberships.d.ts +34 -0
- package/src/lib/server/host-memberships.js +89 -1
- package/src/lib/server/host-memberships.js.map +1 -1
- package/src/lib/server/host-visitor-records.d.ts +16 -2
- package/src/lib/server/host-visitor-records.js +52 -7
- package/src/lib/server/host-visitor-records.js.map +1 -1
- package/src/lib/server/hosted-page-review.d.ts +92 -0
- package/src/lib/server/hosted-page-review.js +342 -0
- package/src/lib/server/hosted-page-review.js.map +1 -0
- package/src/lib/server/list-members.d.ts +11 -0
- package/src/lib/server/list-members.js +28 -1
- package/src/lib/server/list-members.js.map +1 -1
- package/src/lib/server/list-query.d.ts +36 -0
- package/src/lib/server/list-query.js +49 -0
- package/src/lib/server/list-query.js.map +1 -0
- package/src/lib/server/media-tombstone.js +8 -2
- package/src/lib/server/media-tombstone.js.map +1 -1
- package/src/lib/server/org-age.d.ts +27 -0
- package/src/lib/server/org-age.js +44 -0
- package/src/lib/server/org-age.js.map +1 -0
- package/src/lib/server/org-member-list-fields.d.ts +31 -0
- package/src/lib/server/org-member-list-fields.js +38 -0
- package/src/lib/server/org-member-list-fields.js.map +1 -0
- package/src/lib/server/organizations.js +37 -7
- package/src/lib/server/organizations.js.map +1 -1
- package/src/lib/server/outbound-send-review.d.ts +222 -0
- package/src/lib/server/outbound-send-review.js +479 -0
- package/src/lib/server/outbound-send-review.js.map +1 -0
- package/src/lib/server/payment-fraud-signal.d.ts +156 -0
- package/src/lib/server/payment-fraud-signal.js +368 -0
- package/src/lib/server/payment-fraud-signal.js.map +1 -0
- package/src/lib/server/payment-risk-record.d.ts +59 -0
- package/src/lib/server/payment-risk-record.js +76 -0
- package/src/lib/server/payment-risk-record.js.map +1 -0
- package/src/lib/server/replay-erasures.js +2 -1
- package/src/lib/server/replay-erasures.js.map +1 -1
- package/src/lib/server/sending-domains.d.ts +6 -0
- package/src/lib/server/sending-domains.js +98 -6
- package/src/lib/server/sending-domains.js.map +1 -1
- package/src/lib/server/sso-enforcement.js +2 -1
- package/src/lib/server/sso-enforcement.js.map +1 -1
- package/src/lib/server/stripe-card-authentication.d.ts +35 -0
- package/src/lib/server/stripe-card-authentication.js +63 -0
- package/src/lib/server/stripe-card-authentication.js.map +1 -0
- package/src/lib/server/tenant-write-lockdown.d.ts +32 -2
- package/src/lib/server/tenant-write-lockdown.js +33 -3
- package/src/lib/server/tenant-write-lockdown.js.map +1 -1
- package/src/lib/server/upsert-contact.js +8 -4
- package/src/lib/server/upsert-contact.js.map +1 -1
- package/src/tenancy.d.ts +3 -0
- package/src/tenancy.js +8 -0
- package/src/tenancy.js.map +1 -1
|
@@ -21,6 +21,7 @@ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
|
21
21
|
* client-writable (docs/MULTI_TENANT_FIRESTORE.md §8).
|
|
22
22
|
*/ import { consentGroupForHost, checkHostCollaboratorQuota, checkSeatQuota, countCollaboratorSeats, countManagerSeatsExcluding, createResourceUid, generateOrgSlug, projectMemberResolvedPermissions, resolveOrgPermissions, isOrgWideMember, isValidOrgSlug, hostPermissionKeys, orgPermissionLabel, pluginOrgPermissionKeys, projectHostMemberPermissions, projectHostMemberRoles, projectMemberScopeTokens, resolveCollaboratorHostPermissions, scopeTokensForHost } from "@aglyn/aglyn/server";
|
|
23
23
|
import { ACCOUNT_ACQUISITION_FIELD, organizationAcquisition } from "@aglyn/aglyn/app-utils/account-acquisition";
|
|
24
|
+
import { activitySearchTokens } from "@aglyn/aglyn/app-utils/activity-search";
|
|
24
25
|
import { nameSearchKey, nameSearchReversed, nameSearchTokens } from "@aglyn/aglyn/app-utils/name-search";
|
|
25
26
|
// LEAF MODULE, NOT THE BARREL (AGL-1289). This file is itself reachable
|
|
26
27
|
// through `@aglyn/aglyn/server`, and the verdict route proved this week that a
|
|
@@ -34,6 +35,7 @@ import { findUserByUidAcrossPools } from "./auth-pools.js";
|
|
|
34
35
|
import firebaseAdmin from "./firebase-admin.js";
|
|
35
36
|
import { enforceFreeWorkspaceCapInTransaction, readFreeWorkspaceCapConfig } from "./free-workspace-cap.js";
|
|
36
37
|
import { deleteMemberHostProjections, syncHostProjectionForMembers, syncMemberHostProjections } from "./host-memberships.js";
|
|
38
|
+
import { ORG_MEMBER_LIST_FIELD_NAMES, orgMemberListFields, orgMemberSearchTokens } from "./org-member-list-fields.js";
|
|
37
39
|
import { updateExisting } from "./update-existing.js";
|
|
38
40
|
import { attachWorkspaceDomain } from "./workspace-domains.js";
|
|
39
41
|
const firestore = ()=>firebaseAdmin.app().firestore();
|
|
@@ -252,7 +254,7 @@ reservation, now = Date.now()) {
|
|
|
252
254
|
createdAt: FieldValue.serverTimestamp(),
|
|
253
255
|
updatedAt: FieldValue.serverTimestamp()
|
|
254
256
|
});
|
|
255
|
-
tx.set(db.collection('orgs').doc(orgId).collection('members').doc(ownerUid), {
|
|
257
|
+
tx.set(db.collection('orgs').doc(orgId).collection('members').doc(ownerUid), _extends({
|
|
256
258
|
role: 'owner',
|
|
257
259
|
allHosts: true,
|
|
258
260
|
email: ownerEmail != null ? ownerEmail : null,
|
|
@@ -273,7 +275,13 @@ reservation, now = Date.now()) {
|
|
|
273
275
|
*/ scopeTokens: projectMemberScopeTokens({
|
|
274
276
|
role: 'owner',
|
|
275
277
|
allHosts: true
|
|
276
|
-
})
|
|
278
|
+
})
|
|
279
|
+
}, orgMemberListFields({
|
|
280
|
+
role: 'owner',
|
|
281
|
+
allHosts: true,
|
|
282
|
+
email: ownerEmail != null ? ownerEmail : undefined,
|
|
283
|
+
displayName: ownerDisplayName != null ? ownerDisplayName : undefined
|
|
284
|
+
}), {
|
|
277
285
|
/*
|
|
278
286
|
* The permission projection, stamped here for the same reason and
|
|
279
287
|
* with the same consequence if it is missed.
|
|
@@ -288,7 +296,7 @@ reservation, now = Date.now()) {
|
|
|
288
296
|
role: 'owner',
|
|
289
297
|
allHosts: true
|
|
290
298
|
}, null)
|
|
291
|
-
});
|
|
299
|
+
}));
|
|
292
300
|
tx.set(db.collection('users').doc(ownerUid).collection('orgs').doc(orgId), // The owner reaches every site by definition (AGL-1032).
|
|
293
301
|
{
|
|
294
302
|
role: 'owner',
|
|
@@ -778,7 +786,8 @@ export async function listOrgMembers(orgId) {
|
|
|
778
786
|
const MEMBER_PROJECTION_WRITE = {
|
|
779
787
|
mergeFields: [
|
|
780
788
|
'scopeTokens',
|
|
781
|
-
'resolvedPermissions'
|
|
789
|
+
'resolvedPermissions',
|
|
790
|
+
...ORG_MEMBER_LIST_FIELD_NAMES
|
|
782
791
|
]
|
|
783
792
|
};
|
|
784
793
|
/**
|
|
@@ -847,7 +856,7 @@ const MEMBER_PROJECTION_WRITE = {
|
|
|
847
856
|
var _customRoles_get;
|
|
848
857
|
return [
|
|
849
858
|
orgRef.collection('members').doc(member.$id),
|
|
850
|
-
{
|
|
859
|
+
_extends({
|
|
851
860
|
scopeTokens: projectMemberScopeTokens(member),
|
|
852
861
|
resolvedPermissions: projectMemberResolvedPermissions(member, // `?? null`, never `?? undefined`: a member whose `roleId`
|
|
853
862
|
// points at a DELETED role must resolve to their role
|
|
@@ -856,7 +865,7 @@ const MEMBER_PROJECTION_WRITE = {
|
|
|
856
865
|
// dangling id. Leaving it undefined would be the same value,
|
|
857
866
|
// but the null says the lookup happened and missed.
|
|
858
867
|
member.roleId ? (_customRoles_get = customRoles.get(member.roleId)) != null ? _customRoles_get : null : null)
|
|
859
|
-
},
|
|
868
|
+
}, orgMemberListFields(member)),
|
|
860
869
|
MEMBER_PROJECTION_WRITE
|
|
861
870
|
];
|
|
862
871
|
})
|
|
@@ -904,6 +913,11 @@ const MEMBER_PROJECTION_WRITE = {
|
|
|
904
913
|
} : {}, target.versionId ? {
|
|
905
914
|
versionId: target.versionId
|
|
906
915
|
} : {}),
|
|
916
|
+
// What the log's search box finds the entry by (AGL-3321).
|
|
917
|
+
searchTokens: activitySearchTokens({
|
|
918
|
+
actorEmail: actor.email,
|
|
919
|
+
target
|
|
920
|
+
}),
|
|
907
921
|
createdAt: FieldValue.serverTimestamp()
|
|
908
922
|
}).catch(()=>undefined);
|
|
909
923
|
}
|
|
@@ -945,6 +959,13 @@ const MEMBER_PROJECTION_WRITE = {
|
|
|
945
959
|
} : {}, target.versionId ? {
|
|
946
960
|
versionId: target.versionId
|
|
947
961
|
} : {}),
|
|
962
|
+
// What the log's search box finds the entry by (AGL-3321): the key's
|
|
963
|
+
// name stands in for an address an integration does not have.
|
|
964
|
+
searchTokens: activitySearchTokens({
|
|
965
|
+
actorEmail: actor.email,
|
|
966
|
+
apiKeyName: actor.apiKeyName,
|
|
967
|
+
target
|
|
968
|
+
}),
|
|
948
969
|
createdAt: FieldValue.serverTimestamp()
|
|
949
970
|
})).catch(()=>undefined);
|
|
950
971
|
}
|
|
@@ -1472,7 +1493,16 @@ const MEMBER_PROJECTION_WRITE = {
|
|
|
1472
1493
|
patch['photoURL'] = photoURL;
|
|
1473
1494
|
}
|
|
1474
1495
|
if (!Object.keys(patch).length) return [];
|
|
1475
|
-
|
|
1496
|
+
// A filled name is a name the roster's search finds (AGL-3321); a photo
|
|
1497
|
+
// alone changes nothing the search reads.
|
|
1498
|
+
const searchTokens = patch['displayName'] ? {
|
|
1499
|
+
searchTokens: orgMemberSearchTokens({
|
|
1500
|
+
displayName: patch['displayName'],
|
|
1501
|
+
email: snapshot.get('email'),
|
|
1502
|
+
title: snapshot.get('title')
|
|
1503
|
+
})
|
|
1504
|
+
} : {};
|
|
1505
|
+
await ref.set(_extends({}, patch, searchTokens), {
|
|
1476
1506
|
merge: true
|
|
1477
1507
|
});
|
|
1478
1508
|
return Object.keys(patch);
|