@dakkitor/api-contracts 1.4.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 +8 -2
- package/dist/abilities/abilities.contract.d.ts.map +1 -1
- package/dist/abilities/abilities.contract.js +48 -1
- package/dist/abilities/abilities.contract.spec.js +98 -0
- package/dist/abilities/first-agent.abilities.json +9 -2
- package/dist/abilities/outreach-service.abilities.json +14 -0
- package/dist/abilities/outreach.abilities.json +25 -0
- package/dist/abilities/second-agent.abilities.json +5 -1
- package/dist/actives/actives.contract.d.ts +7160 -7021
- 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 +10131 -9939
- 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 +3353 -3353
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +20 -20
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +196 -166
- 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 +1192 -564
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/jobs-tab.contract.js +65 -2
- 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 +46 -46
- 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 +292 -292
- 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 +572 -562
- package/dist/export-jobs/export-jobs.contract.d.ts.map +1 -1
- package/dist/exports-events/exports-events.schemas.d.ts +6 -6
- package/dist/files/files.contract.d.ts +74 -74
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -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 +7734 -7474
- package/dist/jobs/jobs.contract.d.ts.map +1 -1
- package/dist/jobs/jobs.contract.js +57 -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 +49 -49
- package/dist/offices/offices.contract.d.ts +34 -34
- package/dist/outreach/__tests__/outreach-claim.test.js +1 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +89 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.js +77 -0
- package/dist/outreach/__tests__/outreach-routes.test.js +14 -3
- package/dist/outreach/__tests__/outreach.schemas.test.js +5 -1
- package/dist/outreach/outreach-requests.contract.d.ts +1753 -0
- package/dist/outreach/outreach-requests.contract.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.contract.js +154 -0
- package/dist/outreach/outreach-requests.schemas.d.ts +95 -0
- package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.schemas.js +63 -0
- package/dist/outreach/outreach.contract.d.ts +373 -101
- 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 +15 -10
- package/dist/outreach/outreach.schemas.d.ts.map +1 -1
- package/dist/outreach/outreach.schemas.js +5 -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
|
@@ -20,9 +20,11 @@ export declare const SecondAgentAbilities: AbilityRule[];
|
|
|
20
20
|
export declare const TeamLeadAbilities: AbilityRule[];
|
|
21
21
|
export declare const BotAbilities: AbilityRule[];
|
|
22
22
|
export declare const CronSchedulerAbilities: AbilityRule[];
|
|
23
|
+
export declare const OutreachServiceAbilities: AbilityRule[];
|
|
23
24
|
export declare const OfficeManagerAbilities: AbilityRule[];
|
|
24
25
|
export declare const WorkerCuratorAbilities: AbilityRule[];
|
|
25
26
|
export declare const InterconnectionAbilities: AbilityRule[];
|
|
27
|
+
export declare const OutreachAbilities: AbilityRule[];
|
|
26
28
|
export declare const RoleAbilities: {
|
|
27
29
|
readonly ADMIN: AbilityRule[];
|
|
28
30
|
readonly KPI: AbilityRule[];
|
|
@@ -31,17 +33,21 @@ export declare const RoleAbilities: {
|
|
|
31
33
|
readonly TEAM_LEADS: AbilityRule[];
|
|
32
34
|
readonly BOT: AbilityRule[];
|
|
33
35
|
readonly CRON_SCHEDULER: AbilityRule[];
|
|
36
|
+
readonly OUTREACH_SERVICE: AbilityRule[];
|
|
34
37
|
readonly OFFICE_MANAGER: AbilityRule[];
|
|
35
38
|
readonly WORKER_CURATOR: AbilityRule[];
|
|
36
39
|
readonly INTERCONNECTION: AbilityRule[];
|
|
40
|
+
readonly OUTREACH: AbilityRule[];
|
|
37
41
|
};
|
|
38
42
|
export type RoleAbilitiesType = typeof RoleAbilities;
|
|
39
43
|
/**
|
|
40
44
|
* Virtual subjects that don't correspond to entity classes.
|
|
41
45
|
* Used for feature-level permission checking.
|
|
42
|
-
*
|
|
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.
|
|
43
48
|
*/
|
|
44
|
-
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];
|
|
45
51
|
/**
|
|
46
52
|
* Roles an OFFICE_MANAGER may assign to users they create.
|
|
47
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.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;
|
|
@@ -21,10 +21,12 @@ const cron_scheduler_abilities_json_1 = __importDefault(require("./cron-schedule
|
|
|
21
21
|
const first_agent_abilities_json_1 = __importDefault(require("./first-agent.abilities.json"));
|
|
22
22
|
const kpi_abilities_json_1 = __importDefault(require("./kpi.abilities.json"));
|
|
23
23
|
const office_manager_abilities_json_1 = __importDefault(require("./office-manager.abilities.json"));
|
|
24
|
+
const outreach_service_abilities_json_1 = __importDefault(require("./outreach-service.abilities.json"));
|
|
24
25
|
const second_agent_abilities_json_1 = __importDefault(require("./second-agent.abilities.json"));
|
|
25
26
|
const team_leads_json_1 = __importDefault(require("./team-leads.json"));
|
|
26
27
|
const worker_curator_abilities_json_1 = __importDefault(require("./worker-curator.abilities.json"));
|
|
27
28
|
const interconnection_abilities_json_1 = __importDefault(require("./interconnection.abilities.json"));
|
|
29
|
+
const outreach_abilities_json_1 = __importDefault(require("./outreach.abilities.json"));
|
|
28
30
|
const users_contract_1 = require("../users/users.contract");
|
|
29
31
|
exports.AdminAbilities = admin_abilities_json_1.default;
|
|
30
32
|
exports.KpiAbilities = kpi_abilities_json_1.default;
|
|
@@ -33,9 +35,11 @@ exports.SecondAgentAbilities = second_agent_abilities_json_1.default;
|
|
|
33
35
|
exports.TeamLeadAbilities = team_leads_json_1.default;
|
|
34
36
|
exports.BotAbilities = bot_abilities_json_1.default;
|
|
35
37
|
exports.CronSchedulerAbilities = cron_scheduler_abilities_json_1.default;
|
|
38
|
+
exports.OutreachServiceAbilities = outreach_service_abilities_json_1.default;
|
|
36
39
|
exports.OfficeManagerAbilities = office_manager_abilities_json_1.default;
|
|
37
40
|
exports.WorkerCuratorAbilities = worker_curator_abilities_json_1.default;
|
|
38
41
|
exports.InterconnectionAbilities = interconnection_abilities_json_1.default;
|
|
42
|
+
exports.OutreachAbilities = outreach_abilities_json_1.default;
|
|
39
43
|
exports.RoleAbilities = {
|
|
40
44
|
ADMIN: exports.AdminAbilities,
|
|
41
45
|
KPI: exports.KpiAbilities,
|
|
@@ -44,10 +48,53 @@ exports.RoleAbilities = {
|
|
|
44
48
|
TEAM_LEADS: exports.TeamLeadAbilities,
|
|
45
49
|
BOT: exports.BotAbilities,
|
|
46
50
|
CRON_SCHEDULER: exports.CronSchedulerAbilities,
|
|
51
|
+
OUTREACH_SERVICE: exports.OutreachServiceAbilities,
|
|
47
52
|
OFFICE_MANAGER: exports.OfficeManagerAbilities,
|
|
48
53
|
WORKER_CURATOR: exports.WorkerCuratorAbilities,
|
|
49
54
|
INTERCONNECTION: exports.InterconnectionAbilities,
|
|
55
|
+
OUTREACH: exports.OutreachAbilities,
|
|
50
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
|
+
];
|
|
51
98
|
/**
|
|
52
99
|
* Roles an OFFICE_MANAGER may assign to users they create.
|
|
53
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);
|
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
"qualificationFilters",
|
|
99
99
|
"qualificationFilters[*].*",
|
|
100
100
|
"status",
|
|
101
|
+
"outreachRequested",
|
|
101
102
|
"clientId",
|
|
102
103
|
"companyId",
|
|
103
104
|
"postcode",
|
|
@@ -167,7 +168,10 @@
|
|
|
167
168
|
"endDate",
|
|
168
169
|
"createdAt",
|
|
169
170
|
"updatedAt",
|
|
170
|
-
"createdById"
|
|
171
|
+
"createdById",
|
|
172
|
+
"sourceMessageDeletedAt",
|
|
173
|
+
"minimumRateDeletionExemptAt",
|
|
174
|
+
"minimumRateDeletionExemptById"
|
|
171
175
|
],
|
|
172
176
|
"conditions": {
|
|
173
177
|
"faUserId": "{{ id }}"
|
|
@@ -203,7 +207,10 @@
|
|
|
203
207
|
"endDate",
|
|
204
208
|
"createdAt",
|
|
205
209
|
"updatedAt",
|
|
206
|
-
"createdById"
|
|
210
|
+
"createdById",
|
|
211
|
+
"sourceMessageDeletedAt",
|
|
212
|
+
"minimumRateDeletionExemptAt",
|
|
213
|
+
"minimumRateDeletionExemptById"
|
|
207
214
|
],
|
|
208
215
|
"conditions": {
|
|
209
216
|
"createdById": "{{ id }}"
|
|
@@ -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
|
{
|
|
@@ -534,6 +537,7 @@
|
|
|
534
537
|
"qualificationFilters",
|
|
535
538
|
"qualificationFilters[*].*",
|
|
536
539
|
"status",
|
|
540
|
+
"outreachRequested",
|
|
537
541
|
"userId",
|
|
538
542
|
"postcode",
|
|
539
543
|
"distance",
|