@dakkitor/api-contracts 1.5.0 → 1.6.0
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/dist/abilities/abilities.contract.d.ts +6 -2
- package/dist/abilities/abilities.contract.d.ts.map +1 -1
- package/dist/abilities/abilities.contract.js +45 -1
- package/dist/abilities/abilities.contract.spec.js +98 -0
- package/dist/abilities/first-agent.abilities.json +8 -14
- package/dist/abilities/outreach.abilities.json +25 -0
- package/dist/abilities/second-agent.abilities.json +4 -13
- package/dist/actives/actives.contract.d.ts +3618 -3479
- package/dist/actives/actives.contract.d.ts.map +1 -1
- package/dist/actives/actives.contract.js +2 -0
- package/dist/actives/actives.contract.spec.d.ts +2 -0
- package/dist/actives/actives.contract.spec.d.ts.map +1 -0
- package/dist/actives/actives.contract.spec.js +35 -0
- package/dist/agent-client-links/agent-client-links.contract.d.ts +1087 -1087
- package/dist/auth/auth.contract.d.ts +108 -108
- package/dist/bookings/bookings.contract.d.ts +6644 -6452
- package/dist/bookings/bookings.contract.d.ts.map +1 -1
- package/dist/call-history/call-history.contract.d.ts +718 -718
- package/dist/calls-feed/calls-feed.contract.d.ts +86 -86
- package/dist/client-contacts/client-contacts.contract.d.ts +469 -469
- package/dist/clients/clients.contract.d.ts +203 -203
- package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +2713 -2713
- package/dist/collaborations/collaborations.contract.d.ts +2270 -2270
- package/dist/common/common-schemas.d.ts +12 -12
- package/dist/companies/companies.contract.d.ts +74 -74
- package/dist/crews/crews.contract.d.ts +253 -253
- package/dist/cron-executions/cron-executions.contract.d.ts +182 -182
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +2723 -2723
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +378 -378
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +1137 -1107
- package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +16 -16
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +2 -2
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts +5818 -5372
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/jobs-tab.contract.js +34 -1
- package/dist/curated-worker-leads/lead-agent-area.contract.d.ts +4 -4
- package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.js +39 -0
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +148 -148
- package/dist/curated-workers/curated-workers.contract.d.ts +789 -789
- package/dist/dashboards/agent-daily-metrics.contract.d.ts +2 -2
- package/dist/dashboards/dashboard-widgets.contract.d.ts +180 -180
- package/dist/dashboards/dashboard.contract.d.ts +12 -12
- package/dist/document-intake/document-intake.contract.d.ts +601 -601
- package/dist/export-jobs/export-jobs.contract.d.ts +694 -694
- package/dist/exports-events/exports-events.schemas.d.ts +4 -4
- package/dist/files/files.contract.d.ts +74 -74
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/interactions/interactions.contract.d.ts +6 -6
- package/dist/job-clusters/job-clusters.contract.d.ts +112 -112
- package/dist/jobs/job-moderation-fields.spec.d.ts +2 -0
- package/dist/jobs/job-moderation-fields.spec.d.ts.map +1 -0
- package/dist/jobs/job-moderation-fields.spec.js +72 -0
- package/dist/jobs/jobs.contract.d.ts +4773 -4525
- package/dist/jobs/jobs.contract.d.ts.map +1 -1
- package/dist/jobs/jobs.contract.js +48 -0
- package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +141 -141
- package/dist/lead-assignments/lead-assignments.contract.d.ts +911 -911
- package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +209 -209
- package/dist/lead-distribution/lead-distribution-config.contract.d.ts +77 -77
- package/dist/leads/leads.contract.d.ts +283 -283
- package/dist/locations/locations.contract.d.ts +49 -49
- package/dist/notifications/notifications.contract.d.ts +67 -67
- package/dist/offices/offices.contract.d.ts +34 -34
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +11 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.js +13 -0
- package/dist/outreach/__tests__/outreach-routes.test.js +14 -3
- package/dist/outreach/outreach-requests.contract.d.ts +862 -217
- package/dist/outreach/outreach-requests.contract.d.ts.map +1 -1
- package/dist/outreach/outreach-requests.contract.js +23 -3
- package/dist/outreach/outreach-requests.schemas.d.ts +56 -10
- package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -1
- package/dist/outreach/outreach-requests.schemas.js +3 -0
- package/dist/outreach/outreach.contract.d.ts +300 -38
- package/dist/outreach/outreach.contract.d.ts.map +1 -1
- package/dist/outreach/outreach.contract.js +18 -0
- package/dist/outreach/outreach.contract.spec.d.ts +2 -0
- package/dist/outreach/outreach.contract.spec.d.ts.map +1 -0
- package/dist/outreach/outreach.contract.spec.js +54 -0
- package/dist/outreach/outreach.schemas.d.ts +2 -2
- package/dist/own-research/own-research.contract.d.ts +775 -775
- package/dist/postcodes/postcodes.contract.d.ts +24 -24
- package/dist/proofs/proof-type.enum.d.ts +4 -4
- package/dist/proofs/proofs.contract.d.ts +363 -363
- package/dist/proofs/proofs.dtos.d.ts +124 -124
- package/dist/qualifications/qualifications.contract.d.ts +38 -38
- package/dist/relay-pods/relay-pod-sessions.contract.d.ts +680 -0
- package/dist/relay-pods/relay-pod-sessions.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-pod-sessions.contract.js +67 -0
- package/dist/relay-pods/relay-pod-sessions.contract.spec.d.ts +2 -0
- package/dist/relay-pods/relay-pod-sessions.contract.spec.d.ts.map +1 -0
- package/dist/relay-pods/relay-pod-sessions.contract.spec.js +129 -0
- package/dist/relay-pods/relay-pods.contract.d.ts +1569 -0
- package/dist/relay-pods/relay-pods.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-pods.contract.js +188 -0
- package/dist/relay-pods/relay-pods.contract.spec.d.ts +2 -0
- package/dist/relay-pods/relay-pods.contract.spec.d.ts.map +1 -0
- package/dist/relay-pods/relay-pods.contract.spec.js +141 -0
- package/dist/relay-pods/relay-pods.schemas.d.ts +415 -0
- package/dist/relay-pods/relay-pods.schemas.d.ts.map +1 -0
- package/dist/relay-pods/relay-pods.schemas.js +112 -0
- package/dist/shared/live-booking.schema.d.ts +4 -4
- package/dist/shared/summary-schemas.d.ts +6 -6
- package/dist/sheets-sync/sheets-sync.contract.d.ts +939 -939
- package/dist/telegram/telegram.contract.d.ts +22 -22
- package/dist/trades/trades.contract.d.ts +90 -90
- package/dist/user-access-grants/user-access-grants.contract.d.ts +165 -165
- package/dist/users/__tests__/assignable-roles.spec.d.ts +2 -0
- package/dist/users/__tests__/assignable-roles.spec.d.ts.map +1 -0
- package/dist/users/__tests__/assignable-roles.spec.js +41 -0
- package/dist/users/users.contract.d.ts +399 -393
- package/dist/users/users.contract.d.ts.map +1 -1
- package/dist/users/users.contract.js +11 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +585 -527
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +278 -236
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts.map +1 -1
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.js +1 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +153 -153
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +59 -59
- package/dist/workers/workers.contract.d.ts +2919 -2919
- package/package.json +1 -1
- package/dist/bookings/bookings.contract.spec.d.ts +0 -2
- package/dist/bookings/bookings.contract.spec.d.ts.map +0 -1
- package/dist/bookings/bookings.contract.spec.js +0 -11
|
@@ -24,6 +24,7 @@ export declare const OutreachServiceAbilities: AbilityRule[];
|
|
|
24
24
|
export declare const OfficeManagerAbilities: AbilityRule[];
|
|
25
25
|
export declare const WorkerCuratorAbilities: AbilityRule[];
|
|
26
26
|
export declare const InterconnectionAbilities: AbilityRule[];
|
|
27
|
+
export declare const OutreachAbilities: AbilityRule[];
|
|
27
28
|
export declare const RoleAbilities: {
|
|
28
29
|
readonly ADMIN: AbilityRule[];
|
|
29
30
|
readonly KPI: AbilityRule[];
|
|
@@ -36,14 +37,17 @@ export declare const RoleAbilities: {
|
|
|
36
37
|
readonly OFFICE_MANAGER: AbilityRule[];
|
|
37
38
|
readonly WORKER_CURATOR: AbilityRule[];
|
|
38
39
|
readonly INTERCONNECTION: AbilityRule[];
|
|
40
|
+
readonly OUTREACH: AbilityRule[];
|
|
39
41
|
};
|
|
40
42
|
export type RoleAbilitiesType = typeof RoleAbilities;
|
|
41
43
|
/**
|
|
42
44
|
* Virtual subjects that don't correspond to entity classes.
|
|
43
45
|
* Used for feature-level permission checking.
|
|
44
|
-
*
|
|
46
|
+
* Kept in sync with the abilities JSON files by abilities.contract.spec.ts,
|
|
47
|
+
* which fails on any JSON subject missing from the known-subject registry.
|
|
45
48
|
*/
|
|
46
|
-
export
|
|
49
|
+
export declare const VIRTUAL_SUBJECTS: readonly ["FaDashboardWidgets", "SaDashboardWidgets", "DashboardTrends", "AdminFaDashboardWidgets", "AdminSaDashboardWidgets", "AdminAgentStats", "AdminProofs", "AdminDashboardTrends", "FirstAgentTutorials", "CuratedMatchWorkspace", "JobCandidate", "LeadActivityEvent", "FilterCandidateContactHistorySchema", "SecondAgentTutorials", "SortActiveSchema", "SortBookingSchema", "SortJobSchema", "SortWorkerSchema", "SortCuratedWorkerSchema", "SortLeadSchema", "SortOwnResearchLeadSchema", "SortClientSchema", "SortCompanySchema", "SortCollaborationSchema", "SortCollaborationCheckingSchema", "SortClientContactSchema", "SortCallHistorySchema", "SortUserSchema", "SortCrewSchema", "FilterExportJobSchema", "OutreachClaim", "OutreachRequest", "RelayPod"];
|
|
50
|
+
export type VirtualSubjects = (typeof VIRTUAL_SUBJECTS)[number];
|
|
47
51
|
/**
|
|
48
52
|
* Roles an OFFICE_MANAGER may assign to users they create.
|
|
49
53
|
* Single source of truth for the office-manager create-user role policy.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abilities.contract.d.ts","sourceRoot":"","sources":["../../contracts/abilities/abilities.contract.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"abilities.contract.d.ts","sourceRoot":"","sources":["../../contracts/abilities/abilities.contract.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,WAAW,EAAoC,CAAC;AAC7E,eAAO,MAAM,YAAY,EAAE,WAAW,EAAkC,CAAC;AACzE,eAAO,MAAM,mBAAmB,EAAE,WAAW,EACP,CAAC;AACvC,eAAO,MAAM,oBAAoB,EAAE,WAAW,EACP,CAAC;AACxC,eAAO,MAAM,iBAAiB,EAAE,WAAW,EACP,CAAC;AACrC,eAAO,MAAM,YAAY,EAAE,WAAW,EAAkC,CAAC;AACzE,eAAO,MAAM,sBAAsB,EAAE,WAAW,EACP,CAAC;AAC1C,eAAO,MAAM,wBAAwB,EAAE,WAAW,EACP,CAAC;AAC5C,eAAO,MAAM,sBAAsB,EAAE,WAAW,EACP,CAAC;AAC1C,eAAO,MAAM,sBAAsB,EAAE,WAAW,EACP,CAAC;AAC1C,eAAO,MAAM,wBAAwB,EAAE,WAAW,EACP,CAAC;AAC5C,eAAO,MAAM,iBAAiB,EAAE,WAAW,EACP,CAAC;AAErC,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAahB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,aAAa,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,8uBAkCnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,+BAA+B,0CAGJ,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,GAC/C,QAAQ,EAAE,CAMZ;AAED,eAAO,MAAM,0BAA0B,yDAIC,CAAC;AAWzC,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAQT;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,uCAGC,CAAC;AAEzC;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAIT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAMT"}
|
|
@@ -10,7 +10,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
10
10
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.GLOBAL_CURATED_SCOPE_ROLES = exports.SHARED_CURATED_MATCH_ROLES = exports.OFFICE_MANAGER_ASSIGNABLE_ROLES = exports.RoleAbilities = exports.InterconnectionAbilities = exports.WorkerCuratorAbilities = exports.OfficeManagerAbilities = exports.OutreachServiceAbilities = exports.CronSchedulerAbilities = exports.BotAbilities = exports.TeamLeadAbilities = exports.SecondAgentAbilities = exports.FirstAgentAbilities = exports.KpiAbilities = exports.AdminAbilities = void 0;
|
|
13
|
+
exports.GLOBAL_CURATED_SCOPE_ROLES = exports.SHARED_CURATED_MATCH_ROLES = exports.OFFICE_MANAGER_ASSIGNABLE_ROLES = exports.VIRTUAL_SUBJECTS = exports.RoleAbilities = exports.OutreachAbilities = exports.InterconnectionAbilities = exports.WorkerCuratorAbilities = exports.OfficeManagerAbilities = exports.OutreachServiceAbilities = exports.CronSchedulerAbilities = exports.BotAbilities = exports.TeamLeadAbilities = exports.SecondAgentAbilities = exports.FirstAgentAbilities = exports.KpiAbilities = exports.AdminAbilities = void 0;
|
|
14
14
|
exports.getRolesOmCannotAssign = getRolesOmCannotAssign;
|
|
15
15
|
exports.hasSharedCuratedMatchAccess = hasSharedCuratedMatchAccess;
|
|
16
16
|
exports.hasGlobalCuratedCandidateScope = hasGlobalCuratedCandidateScope;
|
|
@@ -26,6 +26,7 @@ const second_agent_abilities_json_1 = __importDefault(require("./second-agent.ab
|
|
|
26
26
|
const team_leads_json_1 = __importDefault(require("./team-leads.json"));
|
|
27
27
|
const worker_curator_abilities_json_1 = __importDefault(require("./worker-curator.abilities.json"));
|
|
28
28
|
const interconnection_abilities_json_1 = __importDefault(require("./interconnection.abilities.json"));
|
|
29
|
+
const outreach_abilities_json_1 = __importDefault(require("./outreach.abilities.json"));
|
|
29
30
|
const users_contract_1 = require("../users/users.contract");
|
|
30
31
|
exports.AdminAbilities = admin_abilities_json_1.default;
|
|
31
32
|
exports.KpiAbilities = kpi_abilities_json_1.default;
|
|
@@ -38,6 +39,7 @@ exports.OutreachServiceAbilities = outreach_service_abilities_json_1.default;
|
|
|
38
39
|
exports.OfficeManagerAbilities = office_manager_abilities_json_1.default;
|
|
39
40
|
exports.WorkerCuratorAbilities = worker_curator_abilities_json_1.default;
|
|
40
41
|
exports.InterconnectionAbilities = interconnection_abilities_json_1.default;
|
|
42
|
+
exports.OutreachAbilities = outreach_abilities_json_1.default;
|
|
41
43
|
exports.RoleAbilities = {
|
|
42
44
|
ADMIN: exports.AdminAbilities,
|
|
43
45
|
KPI: exports.KpiAbilities,
|
|
@@ -50,7 +52,49 @@ exports.RoleAbilities = {
|
|
|
50
52
|
OFFICE_MANAGER: exports.OfficeManagerAbilities,
|
|
51
53
|
WORKER_CURATOR: exports.WorkerCuratorAbilities,
|
|
52
54
|
INTERCONNECTION: exports.InterconnectionAbilities,
|
|
55
|
+
OUTREACH: exports.OutreachAbilities,
|
|
53
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Virtual subjects that don't correspond to entity classes.
|
|
59
|
+
* Used for feature-level permission checking.
|
|
60
|
+
* Kept in sync with the abilities JSON files by abilities.contract.spec.ts,
|
|
61
|
+
* which fails on any JSON subject missing from the known-subject registry.
|
|
62
|
+
*/
|
|
63
|
+
exports.VIRTUAL_SUBJECTS = [
|
|
64
|
+
'FaDashboardWidgets',
|
|
65
|
+
'SaDashboardWidgets',
|
|
66
|
+
'DashboardTrends',
|
|
67
|
+
'AdminFaDashboardWidgets',
|
|
68
|
+
'AdminSaDashboardWidgets',
|
|
69
|
+
'AdminAgentStats',
|
|
70
|
+
'AdminProofs',
|
|
71
|
+
'AdminDashboardTrends',
|
|
72
|
+
'FirstAgentTutorials',
|
|
73
|
+
'CuratedMatchWorkspace',
|
|
74
|
+
'JobCandidate',
|
|
75
|
+
'LeadActivityEvent',
|
|
76
|
+
'FilterCandidateContactHistorySchema',
|
|
77
|
+
'SecondAgentTutorials',
|
|
78
|
+
'SortActiveSchema',
|
|
79
|
+
'SortBookingSchema',
|
|
80
|
+
'SortJobSchema',
|
|
81
|
+
'SortWorkerSchema',
|
|
82
|
+
'SortCuratedWorkerSchema',
|
|
83
|
+
'SortLeadSchema',
|
|
84
|
+
'SortOwnResearchLeadSchema',
|
|
85
|
+
'SortClientSchema',
|
|
86
|
+
'SortCompanySchema',
|
|
87
|
+
'SortCollaborationSchema',
|
|
88
|
+
'SortCollaborationCheckingSchema',
|
|
89
|
+
'SortClientContactSchema',
|
|
90
|
+
'SortCallHistorySchema',
|
|
91
|
+
'SortUserSchema',
|
|
92
|
+
'SortCrewSchema',
|
|
93
|
+
'FilterExportJobSchema',
|
|
94
|
+
'OutreachClaim',
|
|
95
|
+
'OutreachRequest',
|
|
96
|
+
'RelayPod',
|
|
97
|
+
];
|
|
54
98
|
/**
|
|
55
99
|
* Roles an OFFICE_MANAGER may assign to users they create.
|
|
56
100
|
* Single source of truth for the office-manager create-user role policy.
|
|
@@ -1,6 +1,104 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const abilities_contract_1 = require("./abilities.contract");
|
|
4
|
+
/**
|
|
5
|
+
* Entity subjects the API resolves through SUBJECT_CLASS_MAP
|
|
6
|
+
* (apps/api/src/modules/casl/casl-ability.factory.ts). Mirrored here because
|
|
7
|
+
* the contracts package cannot import API entity classes. A subject used in
|
|
8
|
+
* an abilities JSON but absent from BOTH this list and VIRTUAL_SUBJECTS is a
|
|
9
|
+
* typo that would silently grant nothing — the validity test below turns it
|
|
10
|
+
* into a loud failure. Adding a genuinely new subject means registering it
|
|
11
|
+
* here (or in VIRTUAL_SUBJECTS) on purpose.
|
|
12
|
+
*/
|
|
13
|
+
const ENTITY_SUBJECTS = [
|
|
14
|
+
'Active',
|
|
15
|
+
'AgentClientLink',
|
|
16
|
+
'Booking',
|
|
17
|
+
'CallHistory',
|
|
18
|
+
'Client',
|
|
19
|
+
'ClientContact',
|
|
20
|
+
'Collaboration',
|
|
21
|
+
'CollaborationChecking',
|
|
22
|
+
'Company',
|
|
23
|
+
'Crew',
|
|
24
|
+
'CronExecution',
|
|
25
|
+
'CuratedWorker',
|
|
26
|
+
'CuratedWorkerLeadConfig',
|
|
27
|
+
'File',
|
|
28
|
+
'InteractionEvent',
|
|
29
|
+
'Job',
|
|
30
|
+
'Lead',
|
|
31
|
+
'LeadAssignment',
|
|
32
|
+
'Location',
|
|
33
|
+
'Office',
|
|
34
|
+
'OwnResearchLead',
|
|
35
|
+
'OwnedWorkerJobMatch',
|
|
36
|
+
'Proof',
|
|
37
|
+
'ProofEntityLink',
|
|
38
|
+
'ProofPhoto',
|
|
39
|
+
'Qualification',
|
|
40
|
+
'QualificationType',
|
|
41
|
+
'Trade',
|
|
42
|
+
'User',
|
|
43
|
+
'Worker',
|
|
44
|
+
'WorkerJobMatch',
|
|
45
|
+
'WorkerLeadAssignment',
|
|
46
|
+
'WorkerLeadProfile',
|
|
47
|
+
];
|
|
48
|
+
/** Filter DTO subjects checked by name against field-filter grants. */
|
|
49
|
+
const FILTER_SCHEMA_SUBJECTS = [
|
|
50
|
+
'FilterActiveSchema',
|
|
51
|
+
'FilterAgentClientLinkSchema',
|
|
52
|
+
'FilterBookingSchema',
|
|
53
|
+
'FilterCallHistorySchema',
|
|
54
|
+
'FilterClientContactSchema',
|
|
55
|
+
'FilterClientSchema',
|
|
56
|
+
'FilterCollaborationCheckingSchema',
|
|
57
|
+
'FilterCollaborationSchema',
|
|
58
|
+
'FilterCompanySchema',
|
|
59
|
+
'FilterCrewSchema',
|
|
60
|
+
'FilterCuratedWorkerSchema',
|
|
61
|
+
'FilterJobSchema',
|
|
62
|
+
'FilterLeadSchema',
|
|
63
|
+
'FilterLocationSchema',
|
|
64
|
+
'FilterOwnResearchLeadSchema',
|
|
65
|
+
'FilterProofsSchema',
|
|
66
|
+
'FilterUserSchema',
|
|
67
|
+
'FilterWorkerSchema',
|
|
68
|
+
];
|
|
69
|
+
const KNOWN_SUBJECTS = new Set([
|
|
70
|
+
...abilities_contract_1.VIRTUAL_SUBJECTS,
|
|
71
|
+
...ENTITY_SUBJECTS,
|
|
72
|
+
...FILTER_SCHEMA_SUBJECTS,
|
|
73
|
+
'Schema:BookingItem',
|
|
74
|
+
'all',
|
|
75
|
+
]);
|
|
76
|
+
describe('abilities JSON subject validity', () => {
|
|
77
|
+
it.each(Object.entries(abilities_contract_1.RoleAbilities))('%s abilities reference only known subjects', (_role, rules) => {
|
|
78
|
+
const unknown = rules
|
|
79
|
+
.map((rule) => rule.subject)
|
|
80
|
+
.filter((subject) => !KNOWN_SUBJECTS.has(subject));
|
|
81
|
+
expect(unknown).toEqual([]);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('Relay pod ownership grants', () => {
|
|
85
|
+
it('registers RelayPod and conditions outreach management on ownership', () => {
|
|
86
|
+
expect(abilities_contract_1.VIRTUAL_SUBJECTS).toContain('RelayPod');
|
|
87
|
+
expect(abilities_contract_1.RoleAbilities.OUTREACH).toContainEqual({
|
|
88
|
+
action: 'manage',
|
|
89
|
+
subject: 'RelayPod',
|
|
90
|
+
conditions: { ownerUserId: '{{ id }}' },
|
|
91
|
+
});
|
|
92
|
+
expect(abilities_contract_1.RoleAbilities.OUTREACH).toContainEqual({
|
|
93
|
+
action: 'update',
|
|
94
|
+
subject: 'OutreachRequest',
|
|
95
|
+
conditions: {
|
|
96
|
+
requestedByUserId: '{{ id }}',
|
|
97
|
+
status: 'PENDING',
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
4
102
|
describe('hasGlobalCuratedCandidateScope', () => {
|
|
5
103
|
it('true for ADMIN', () => {
|
|
6
104
|
expect((0, abilities_contract_1.hasGlobalCuratedCandidateScope)(['ADMIN'])).toBe(true);
|
|
@@ -168,7 +168,10 @@
|
|
|
168
168
|
"endDate",
|
|
169
169
|
"createdAt",
|
|
170
170
|
"updatedAt",
|
|
171
|
-
"createdById"
|
|
171
|
+
"createdById",
|
|
172
|
+
"sourceMessageDeletedAt",
|
|
173
|
+
"minimumRateDeletionExemptAt",
|
|
174
|
+
"minimumRateDeletionExemptById"
|
|
172
175
|
],
|
|
173
176
|
"conditions": {
|
|
174
177
|
"faUserId": "{{ id }}"
|
|
@@ -204,7 +207,10 @@
|
|
|
204
207
|
"endDate",
|
|
205
208
|
"createdAt",
|
|
206
209
|
"updatedAt",
|
|
207
|
-
"createdById"
|
|
210
|
+
"createdById",
|
|
211
|
+
"sourceMessageDeletedAt",
|
|
212
|
+
"minimumRateDeletionExemptAt",
|
|
213
|
+
"minimumRateDeletionExemptById"
|
|
208
214
|
],
|
|
209
215
|
"conditions": {
|
|
210
216
|
"createdById": "{{ id }}"
|
|
@@ -955,18 +961,6 @@
|
|
|
955
961
|
"createdByUserId": "{{ id }}"
|
|
956
962
|
}
|
|
957
963
|
},
|
|
958
|
-
{
|
|
959
|
-
"action": "create",
|
|
960
|
-
"subject": "OutreachRequest"
|
|
961
|
-
},
|
|
962
|
-
{
|
|
963
|
-
"action": "read",
|
|
964
|
-
"subject": "OutreachRequest"
|
|
965
|
-
},
|
|
966
|
-
{
|
|
967
|
-
"action": "update",
|
|
968
|
-
"subject": "OutreachRequest"
|
|
969
|
-
},
|
|
970
964
|
{
|
|
971
965
|
"action": "read",
|
|
972
966
|
"subject": "FilterCrewSchema",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"action": "create",
|
|
4
|
+
"subject": "OutreachRequest"
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"action": "read",
|
|
8
|
+
"subject": "OutreachRequest"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"action": "update",
|
|
12
|
+
"subject": "OutreachRequest",
|
|
13
|
+
"conditions": {
|
|
14
|
+
"requestedByUserId": "{{ id }}",
|
|
15
|
+
"status": "PENDING"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"action": "manage",
|
|
20
|
+
"subject": "RelayPod",
|
|
21
|
+
"conditions": {
|
|
22
|
+
"ownerUserId": "{{ id }}"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]
|
|
@@ -205,7 +205,10 @@
|
|
|
205
205
|
"updatedAt.*",
|
|
206
206
|
"createdById",
|
|
207
207
|
"createdBy",
|
|
208
|
-
"createdBy.*"
|
|
208
|
+
"createdBy.*",
|
|
209
|
+
"sourceMessageDeletedAt",
|
|
210
|
+
"minimumRateDeletionExemptAt",
|
|
211
|
+
"minimumRateDeletionExemptById"
|
|
209
212
|
]
|
|
210
213
|
},
|
|
211
214
|
{
|
|
@@ -817,18 +820,6 @@
|
|
|
817
820
|
],
|
|
818
821
|
"conditions": { "agentId": "{{ id }}" }
|
|
819
822
|
},
|
|
820
|
-
{
|
|
821
|
-
"action": "create",
|
|
822
|
-
"subject": "OutreachRequest"
|
|
823
|
-
},
|
|
824
|
-
{
|
|
825
|
-
"action": "read",
|
|
826
|
-
"subject": "OutreachRequest"
|
|
827
|
-
},
|
|
828
|
-
{
|
|
829
|
-
"action": "update",
|
|
830
|
-
"subject": "OutreachRequest"
|
|
831
|
-
},
|
|
832
823
|
{
|
|
833
824
|
"action": "read",
|
|
834
825
|
"subject": "FilterCandidateContactHistorySchema",
|