@hadoku/jobplatform-worker 2.32.16 → 2.32.18
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/index.js +14 -14
- package/dist/ownerName.d.ts +14 -0
- package/dist/ownerName.d.ts.map +1 -1
- package/dist/routes/jobs/feed.d.ts.map +1 -1
- package/dist/routes/jobs/shared.d.ts +7 -5
- package/dist/routes/jobs/shared.d.ts.map +1 -1
- package/dist/routes/profiles.d.ts.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -533,7 +533,7 @@ const SetApplicationStatusSchema = z.object({
|
|
|
533
533
|
// kept, so a bare transition never wipes the runner's screenshots.
|
|
534
534
|
error: z.string().optional(),
|
|
535
535
|
evidence: z.record(z.string(), z.unknown()).optional(),
|
|
536
|
-
/** Act as this registry display name.
|
|
536
|
+
/** Act as this registry display name. Admin, or a named service caller, only (mayActOnBehalf). */
|
|
537
537
|
ownerName: z.string().optional()
|
|
538
538
|
}).openapi("SetApplicationStatus");
|
|
539
539
|
const AnswerSchema = z.object({
|
|
@@ -1197,6 +1197,12 @@ async function resolveOwnerName(db, edge, serviceKey, name, now = Date.now()) {
|
|
|
1197
1197
|
}
|
|
1198
1198
|
return result;
|
|
1199
1199
|
}
|
|
1200
|
+
const ON_BEHALF_REFUSAL = "Only admin, or a service caller named in ON_BEHALF_CALLER_USER_IDS, may act on behalf of a named owner.";
|
|
1201
|
+
function mayActOnBehalf(auth, callerId, allowed) {
|
|
1202
|
+
if (tierAtLeast(auth, "admin")) return true;
|
|
1203
|
+
if (!tierAtLeast(auth, "service") || !callerId) return false;
|
|
1204
|
+
return (allowed ?? "").split(",").map((id) => id.trim()).filter(Boolean).includes(callerId);
|
|
1205
|
+
}
|
|
1200
1206
|
class NoIdentityError extends Error {
|
|
1201
1207
|
constructor() {
|
|
1202
1208
|
super(
|
|
@@ -1212,7 +1218,7 @@ function resolveUserId(c) {
|
|
|
1212
1218
|
}
|
|
1213
1219
|
const ownerNameQuery = z.object({
|
|
1214
1220
|
ownerName: z.string().optional().openapi({
|
|
1215
|
-
description: "Act as this registry display name.
|
|
1221
|
+
description: "Act as this registry display name. Admin, or a service caller named in ON_BEHALF_CALLER_USER_IDS, only — this is how the PC-side runner reaches the owner's rows while authenticating as itself. Resolved against the key registry; never stored."
|
|
1216
1222
|
})
|
|
1217
1223
|
});
|
|
1218
1224
|
function asRoleLevel(v) {
|
|
@@ -1270,14 +1276,14 @@ async function effectiveUserId(c, ownerName) {
|
|
|
1270
1276
|
};
|
|
1271
1277
|
}
|
|
1272
1278
|
if (!named || !named.trim()) return { userId: callerId, onBehalfOf: null };
|
|
1273
|
-
if (!
|
|
1279
|
+
if (!mayActOnBehalf(c.get("authContext"), callerId, c.env.ON_BEHALF_CALLER_USER_IDS)) {
|
|
1274
1280
|
return {
|
|
1275
1281
|
error: {
|
|
1276
1282
|
status: 403,
|
|
1277
1283
|
body: {
|
|
1278
1284
|
success: false,
|
|
1279
1285
|
error: "Forbidden",
|
|
1280
|
-
message:
|
|
1286
|
+
message: ON_BEHALF_REFUSAL
|
|
1281
1287
|
}
|
|
1282
1288
|
}
|
|
1283
1289
|
};
|
|
@@ -2567,15 +2573,9 @@ async function requireIdentity(c, next) {
|
|
|
2567
2573
|
}
|
|
2568
2574
|
const owner = c.req.query("ownerName")?.trim();
|
|
2569
2575
|
if (owner) {
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
success: false,
|
|
2574
|
-
error: "Forbidden",
|
|
2575
|
-
message: "Only a service or admin caller may act on behalf of a named owner."
|
|
2576
|
-
},
|
|
2577
|
-
403
|
|
2578
|
-
);
|
|
2576
|
+
const callerId = c.req.header("X-User-Id")?.trim();
|
|
2577
|
+
if (!mayActOnBehalf(c.get("authContext"), callerId, c.env.ON_BEHALF_CALLER_USER_IDS)) {
|
|
2578
|
+
return c.json({ success: false, error: "Forbidden", message: ON_BEHALF_REFUSAL }, 403);
|
|
2579
2579
|
}
|
|
2580
2580
|
const resolved = await resolveOwnerName(
|
|
2581
2581
|
c.env.JOB_PLATFORM_DB,
|
|
@@ -3097,7 +3097,7 @@ function registerFeedRoute(app2) {
|
|
|
3097
3097
|
content: { "application/json": { schema: ErrorResponseSchema } }
|
|
3098
3098
|
},
|
|
3099
3099
|
403: {
|
|
3100
|
-
description: "Only a service
|
|
3100
|
+
description: "Only admin, or a service caller named in ON_BEHALF_CALLER_USER_IDS, may name an owner",
|
|
3101
3101
|
content: { "application/json": { schema: IdentityErrorResponseSchema } }
|
|
3102
3102
|
},
|
|
3103
3103
|
404: {
|
package/dist/ownerName.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { D1Database } from '@cloudflare/workers-types';
|
|
2
|
+
import { type HadokuAuthContext } from '@wolffm/worker-utils';
|
|
2
3
|
import { type EdgeIdentityBinding, type IdentityResult } from '@wolffm/worker-utils/identity';
|
|
3
4
|
/**
|
|
4
5
|
* How long a resolved owner name is trusted before edge-router is asked again.
|
|
@@ -25,4 +26,17 @@ export declare const OWNER_NAME_TTL_MS: number;
|
|
|
25
26
|
* that is a deployment fault and must keep reporting NO_REGISTRY.
|
|
26
27
|
*/
|
|
27
28
|
export declare function resolveOwnerName(db: D1Database, edge: EdgeIdentityBinding | undefined, serviceKey: string, name: string, now?: number): Promise<IdentityResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether this caller may act for a named owner (`ownerName`): admin, or a
|
|
31
|
+
* service caller whose registry userId is in `ON_BEHALF_CALLER_USER_IDS`.
|
|
32
|
+
*
|
|
33
|
+
* Service tier alone used to be enough, and service tier is every service key
|
|
34
|
+
* in the fleet plus every person holding a service grant, so any of them could
|
|
35
|
+
* read and rewrite anyone's jobs, applications, answers and profiles. One
|
|
36
|
+
* caller sends it (the scraper's apply queue); the list names that one. The
|
|
37
|
+
* userId is compared whole: it is the edge-injected identity, never a name.
|
|
38
|
+
*/
|
|
39
|
+
/** What a caller that may not act for a named owner is told. */
|
|
40
|
+
export declare const ON_BEHALF_REFUSAL = "Only admin, or a service caller named in ON_BEHALF_CALLER_USER_IDS, may act on behalf of a named owner.";
|
|
41
|
+
export declare function mayActOnBehalf(auth: HadokuAuthContext, callerId: string | null | undefined, allowed: string | undefined): boolean;
|
|
28
42
|
//# sourceMappingURL=ownerName.d.ts.map
|
package/dist/ownerName.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownerName.d.ts","sourceRoot":"","sources":["../src/ownerName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACtB,OAAO,CAAC,cAAc,CAAC,CAwBzB"}
|
|
1
|
+
{"version":3,"file":"ownerName.d.ts","sourceRoot":"","sources":["../src/ownerName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACtB,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED;;;;;;;;;GASG;AACH,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,4GAC4E,CAAC;AAE3G,wBAAgB,cAAc,CAC7B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAQT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/feed.ts"],"names":[],"mappings":"AAUA,OAAO,EASN,KAAK,OAAO,EACZ,MAAM,aAAa,CAAC;AA8KrB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/feed.ts"],"names":[],"mappings":"AAUA,OAAO,EASN,KAAK,OAAO,EACZ,MAAM,aAAa,CAAC;AA8KrB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAmmBpD"}
|
|
@@ -83,10 +83,11 @@ export declare function isEffectiveUserError(v: EffectiveUser): v is {
|
|
|
83
83
|
* The runner drained its own service-owned queue for a day while the owner's
|
|
84
84
|
* dashboard showed nothing, which is what this exists to fix.
|
|
85
85
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* `ownerName=SomeoneElse`
|
|
89
|
-
*
|
|
86
|
+
* ADMIN, OR A SERVICE CALLER NAMED IN ON_BEHALF_CALLER_USER_IDS
|
|
87
|
+
* (ownerName.ts `mayActOnBehalf`), and that gate is the whole security of it:
|
|
88
|
+
* whoever may pass `ownerName=SomeoneElse` can read and mutate another person's
|
|
89
|
+
* queue. Service tier alone is every service key in the fleet and every person
|
|
90
|
+
* with a service grant, so it used to be exactly that hole. Anyone else gets 403 — not a 404, because the row
|
|
90
91
|
* they are reaching for is real and refusing to say so would be misleading
|
|
91
92
|
* about their OWN permissions rather than about someone else's data.
|
|
92
93
|
*
|
|
@@ -101,7 +102,7 @@ export declare function isEffectiveUserError(v: EffectiveUser): v is {
|
|
|
101
102
|
* perfectly valid application that simply belongs to the wrong person. It cost
|
|
102
103
|
* a debugging round on 2026-09-07 and would have cost another one every time.
|
|
103
104
|
* Reading both here rather than per-route means no future route can reintroduce
|
|
104
|
-
* it. Accepting the query adds no privilege: the
|
|
105
|
+
* it. Accepting the query adds no privilege: the on-behalf gate below
|
|
105
106
|
* and the resolve-never-trust rule apply to the value whatever carried it.
|
|
106
107
|
*
|
|
107
108
|
* IT IS CALLED `ownerName`, NOT `owner`, AND THAT IS LOAD-BEARING. The field
|
|
@@ -125,6 +126,7 @@ export declare function effectiveUserId(c: {
|
|
|
125
126
|
EDGE?: Fetcher;
|
|
126
127
|
HADOKU_SERVICE_KEY?: string;
|
|
127
128
|
JOB_PLATFORM_DB: D1Database;
|
|
129
|
+
ON_BEHALF_CALLER_USER_IDS?: string;
|
|
128
130
|
};
|
|
129
131
|
}, ownerName: string | undefined): Promise<EffectiveUser>;
|
|
130
132
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QAAE,WAAW,EAAE,iBAAiB,CAAA;KAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;iBAKzB,CAAC;AAEH,6DAA6D;AAC7D,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAMhD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAE9D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAEnE;AAaD,wBAAsB,WAAW,CAAC,CAAC,EAAE;IACpC,GAAG,EAAE;QAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACtD,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,iBAAiB,CAAC;CAC7C,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWzB;AAED,uEAAuE;AACvE,wBAAsB,UAAU,CAC/B,CAAC,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,iBAAiB,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,QAAQ,CAAA;CAAE,EAC/F,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iCAWzB;AAED,wDAAwD;AACxD,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAG5F;AAED,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,EAAE;QACL,OAAO,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,YAAY,CAAC;KACvD,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAE9B,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,IAAI;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,CAEtF;AAED
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/routes/jobs/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/routes/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAwB9E,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACV,WAAW,EAAE,iBAAiB,CAAC;QAC/B;;;;WAIG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACF;AAsoBD,eAAO,MAAM,aAAa,oCAAM,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,12 @@ export interface AppEnv {
|
|
|
35
35
|
* because names can be renamed. Unset means mail routes refuse (503).
|
|
36
36
|
*/
|
|
37
37
|
MAILFEED_OWNER_USER_ID?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Registry userIds, comma-separated, of the service callers that may name an
|
|
40
|
+
* owner other than themselves (`ownerName`). Admin always may. Unset or empty
|
|
41
|
+
* = admin only. hadoku_site sets it to the scraper's apply queue.
|
|
42
|
+
*/
|
|
43
|
+
ON_BEHALF_CALLER_USER_IDS?: string;
|
|
38
44
|
/**
|
|
39
45
|
* Cloudflare service binding to the resume-api worker, declared in
|
|
40
46
|
* hadoku_site wrangler.toml as [[services]] binding="RESUME" service="resume-api".
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,WAAW,MAAM;IAKtB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B,8EAA8E;IAC9E,eAAe,EAAE,UAAU,CAAC;IAM5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,WAAW,MAAM;IAKtB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B,8EAA8E;IAC9E,eAAe,EAAE,UAAU,CAAC;IAM5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAMnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAMjB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hadoku/jobplatform-worker",
|
|
3
|
-
"version": "2.32.
|
|
3
|
+
"version": "2.32.18",
|
|
4
|
+
"gitHead": "c57ef6de26d28ed1beb8f0363a895e3ad950f8ae",
|
|
4
5
|
"description": "Job listings aggregation and tracking dashboard - Worker package",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"type": "module",
|