@ttt-productions/auth-core 0.5.1 → 1.0.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/server/assertAuth.d.ts +1 -1
- package/dist/server/assertAuth.d.ts.map +1 -1
- package/dist/server/assertAuth.js +9 -55
- package/dist/server/assertAuth.js.map +1 -1
- package/dist/server/assertAuth.test.js +3 -218
- package/dist/server/assertAuth.test.js.map +1 -1
- package/dist/server/types.d.ts +6 -44
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -2
- package/dist/server/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { AssertAuthConfig, AssertAuthFn } from "./types.js";
|
|
2
|
-
export declare function createAssertAuth<TUser
|
|
2
|
+
export declare function createAssertAuth<TUser>(config: AssertAuthConfig<TUser>): AssertAuthFn<TUser>;
|
|
3
3
|
//# sourceMappingURL=assertAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertAuth.d.ts","sourceRoot":"","sources":["../../src/server/assertAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assertAuth.d.ts","sourceRoot":"","sources":["../../src/server/assertAuth.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,wBAAgB,gBAAgB,CAAC,KAAK,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC9B,YAAY,CAAC,KAAK,CAAC,CAkErB"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
// packages/auth-core/src/server/assertAuth.ts
|
|
2
2
|
//
|
|
3
3
|
// Factory that produces an assertAuth function bound to a consuming app's
|
|
4
|
-
// Firestore paths, user
|
|
4
|
+
// Firestore paths, user shape, and admin check.
|
|
5
5
|
//
|
|
6
6
|
// Every Cloud Functions callable in the consuming app should invoke the
|
|
7
7
|
// returned assertAuth as its first executable line. The check order is:
|
|
8
8
|
// 1. Authentication
|
|
9
9
|
// 2. Email verification
|
|
10
|
-
// 3.
|
|
10
|
+
// 3. User doc Firestore read (when status check is needed)
|
|
11
11
|
// 4. Status check (banned / disabled)
|
|
12
|
-
// 5.
|
|
13
|
-
// 6. Project membership check
|
|
14
|
-
// 7. Admin check (delegated to config.requireAdmin)
|
|
12
|
+
// 5. Admin check (delegated to config.requireAdmin)
|
|
15
13
|
import { HttpsError } from "firebase-functions/v2/https";
|
|
16
14
|
export function createAssertAuth(config) {
|
|
17
15
|
return async function assertAuth(request, requirements = {}) {
|
|
@@ -28,18 +26,11 @@ export function createAssertAuth(config) {
|
|
|
28
26
|
throw new HttpsError("failed-precondition", "Email must be verified");
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
|
-
// 3.
|
|
32
|
-
const needsUserDoc = requirements.creator === true || requirements.allowAnyStatus !== true;
|
|
33
|
-
const needsProject = requirements.projectMembership !== undefined;
|
|
29
|
+
// 3. User doc Firestore read (skipped when allowAnyStatus is set)
|
|
34
30
|
const db = config.firestore();
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
: Promise.resolve(null),
|
|
39
|
-
needsProject
|
|
40
|
-
? db.doc(config.projectPath(requirements.projectMembership.projectId)).get()
|
|
41
|
-
: Promise.resolve(null),
|
|
42
|
-
]);
|
|
31
|
+
const userSnap = requirements.allowAnyStatus !== true
|
|
32
|
+
? await db.doc(config.userProfilePath(uid)).get()
|
|
33
|
+
: null;
|
|
43
34
|
let userDoc;
|
|
44
35
|
// 4. Status check (default: block banned + disabled; skipped if allowAnyStatus)
|
|
45
36
|
if (requirements.allowAnyStatus !== true) {
|
|
@@ -56,52 +47,15 @@ export function createAssertAuth(config) {
|
|
|
56
47
|
}
|
|
57
48
|
userDoc = userData;
|
|
58
49
|
}
|
|
59
|
-
// 5.
|
|
60
|
-
if (requirements.creator === true) {
|
|
61
|
-
if (!userDoc) {
|
|
62
|
-
// allowAnyStatus is true — user doc was still fetched, validate now
|
|
63
|
-
if (!userSnap || !userSnap.exists) {
|
|
64
|
-
throw new HttpsError("not-found", "User profile not found");
|
|
65
|
-
}
|
|
66
|
-
userDoc = userSnap.data();
|
|
67
|
-
}
|
|
68
|
-
if (!config.isUserCreator(userDoc)) {
|
|
69
|
-
throw new HttpsError("failed-precondition", "Creator status required");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// 6. Project membership check
|
|
73
|
-
let projectContext;
|
|
74
|
-
if (requirements.projectMembership !== undefined) {
|
|
75
|
-
if (!projectSnap || !projectSnap.exists) {
|
|
76
|
-
throw new HttpsError("not-found", "Project not found");
|
|
77
|
-
}
|
|
78
|
-
const projectData = projectSnap.data();
|
|
79
|
-
const isOwner = config.isProjectOwner(projectData, uid);
|
|
80
|
-
const isMember = isOwner || config.isProjectMember(projectData, uid);
|
|
81
|
-
if (requirements.projectMembership.role === "owner") {
|
|
82
|
-
if (!isOwner) {
|
|
83
|
-
throw new HttpsError("permission-denied", "Project owner access required");
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
if (!isMember) {
|
|
88
|
-
throw new HttpsError("permission-denied", "Not a member of this project");
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
projectContext = { data: projectData, isOwner, isMember };
|
|
92
|
-
}
|
|
93
|
-
// 7. Admin check (delegates to config.requireAdmin)
|
|
50
|
+
// 5. Admin check (delegates to config.requireAdmin)
|
|
94
51
|
if (requirements.admin !== undefined) {
|
|
95
52
|
await config.requireAdmin(uid, token, requirements.admin);
|
|
96
53
|
}
|
|
97
|
-
//
|
|
54
|
+
// 6. Return context with whatever docs were fetched
|
|
98
55
|
const ctx = { uid, token };
|
|
99
56
|
if (userDoc !== undefined) {
|
|
100
57
|
ctx.userDoc = userDoc;
|
|
101
58
|
}
|
|
102
|
-
if (projectContext !== undefined) {
|
|
103
|
-
ctx.project = projectContext;
|
|
104
|
-
}
|
|
105
59
|
return ctx;
|
|
106
60
|
};
|
|
107
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertAuth.js","sourceRoot":"","sources":["../../src/server/assertAuth.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"assertAuth.js","sourceRoot":"","sources":["../../src/server/assertAuth.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,0EAA0E;AAC1E,gDAAgD;AAChD,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,sBAAsB;AACtB,0BAA0B;AAC1B,6DAA6D;AAC7D,wCAAwC;AACxC,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AASzD,MAAM,UAAU,gBAAgB,CAC9B,MAA+B;IAE/B,OAAO,KAAK,UAAU,UAAU,CAC9B,OAAwB,EACxB,eAAiC,EAAE;QAEnC,yCAAyC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjC,8BAA8B;QAC9B,IACE,YAAY,CAAC,aAAa,KAAK,IAAI;YACnC,YAAY,CAAC,eAAe,KAAK,IAAI,EACrC,CAAC;YACD,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GACZ,YAAY,CAAC,cAAc,KAAK,IAAI;YAClC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;YACjD,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,OAA0B,CAAC;QAE/B,gFAAgF;QAChF,IAAI,YAAY,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAW,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,IAAI,UAAU,CAClB,mBAAmB,EACnB,iCAAiC,CAClC,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC7D,MAAM,IAAI,UAAU,CAClB,mBAAmB,EACnB,iCAAiC,CAClC,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;QAED,oDAAoD;QACpD,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,oDAAoD;QACpD,MAAM,GAAG,GAAuB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -30,43 +30,20 @@ const activeUserDoc = {
|
|
|
30
30
|
displayName: "Test User",
|
|
31
31
|
status: "active",
|
|
32
32
|
};
|
|
33
|
-
const creatorUserDoc = {
|
|
34
|
-
...activeUserDoc,
|
|
35
|
-
creator: "creator-12345",
|
|
36
|
-
};
|
|
37
|
-
function memberProjectDoc(callerUid) {
|
|
38
|
-
return {
|
|
39
|
-
projectId: "p1",
|
|
40
|
-
ownedBy: { uid: "owner-uid" },
|
|
41
|
-
activeUserIds: { [callerUid]: true },
|
|
42
|
-
activeUsers: [],
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
33
|
// --- harness ---------------------------------------------------------------
|
|
46
34
|
let mockUserGet;
|
|
47
|
-
let mockProjectGet;
|
|
48
35
|
let mockRequireAdmin;
|
|
49
36
|
let mockDbDoc;
|
|
50
37
|
let assertAuth;
|
|
51
38
|
beforeEach(() => {
|
|
52
39
|
mockUserGet = vi.fn().mockResolvedValue({ exists: true, data: () => activeUserDoc });
|
|
53
|
-
mockProjectGet = vi.fn().mockResolvedValue({
|
|
54
|
-
exists: true,
|
|
55
|
-
data: () => memberProjectDoc("uid-123"),
|
|
56
|
-
});
|
|
57
40
|
mockRequireAdmin = vi.fn().mockResolvedValue(undefined);
|
|
58
41
|
const userDocRef = { get: mockUserGet };
|
|
59
|
-
|
|
60
|
-
mockDbDoc = vi.fn((path) => {
|
|
61
|
-
if (path.startsWith("allProjects/"))
|
|
62
|
-
return projectDocRef;
|
|
63
|
-
return userDocRef;
|
|
64
|
-
});
|
|
42
|
+
mockDbDoc = vi.fn(() => userDocRef);
|
|
65
43
|
const fakeDb = { doc: mockDbDoc };
|
|
66
44
|
const config = {
|
|
67
45
|
firestore: () => fakeDb,
|
|
68
46
|
userProfilePath: (uid) => `userProfiles/${uid}`,
|
|
69
|
-
projectPath: (projectId) => `allProjects/${projectId}`,
|
|
70
47
|
getUserStatus: (user) => {
|
|
71
48
|
if (user.status === "disabled")
|
|
72
49
|
return "disabled";
|
|
@@ -74,11 +51,6 @@ beforeEach(() => {
|
|
|
74
51
|
return "banned";
|
|
75
52
|
return "ok";
|
|
76
53
|
},
|
|
77
|
-
isUserCreator: (user) => Boolean(user.creator),
|
|
78
|
-
isProjectOwner: (project, uid) => project.ownedBy?.uid === uid,
|
|
79
|
-
isProjectMember: (project, uid) => project.ownedBy?.uid === uid ||
|
|
80
|
-
project.activeUserIds?.[uid] === true ||
|
|
81
|
-
(project.activeUsers || []).some((u) => u.uid === uid),
|
|
82
54
|
requireAdmin: mockRequireAdmin,
|
|
83
55
|
};
|
|
84
56
|
assertAuth = createAssertAuth(config);
|
|
@@ -94,7 +66,6 @@ describe("Authentication", () => {
|
|
|
94
66
|
const ctx = await assertAuth(makeRequest(), { allowAnyStatus: true });
|
|
95
67
|
expect(ctx.uid).toBe("uid-123");
|
|
96
68
|
expect(ctx.userDoc).toBeUndefined();
|
|
97
|
-
expect(ctx.project).toBeUndefined();
|
|
98
69
|
expect(mockDbDoc).not.toHaveBeenCalled();
|
|
99
70
|
});
|
|
100
71
|
});
|
|
@@ -185,144 +156,6 @@ describe("allowBanned opt-in", () => {
|
|
|
185
156
|
await expect(assertAuth(makeRequest(), { allowBanned: true })).rejects.toMatchObject({ code: "not-found" });
|
|
186
157
|
});
|
|
187
158
|
});
|
|
188
|
-
describe("Creator check", () => {
|
|
189
|
-
it("throws failed-precondition when user has no creator field", async () => {
|
|
190
|
-
mockUserGet.mockResolvedValue({
|
|
191
|
-
exists: true,
|
|
192
|
-
data: () => ({ ...activeUserDoc }),
|
|
193
|
-
});
|
|
194
|
-
await expect(assertAuth(makeRequest(), { creator: true, allowAnyStatus: true })).rejects.toMatchObject({ code: "failed-precondition" });
|
|
195
|
-
});
|
|
196
|
-
it("succeeds when user has a truthy creator string", async () => {
|
|
197
|
-
mockUserGet.mockResolvedValue({
|
|
198
|
-
exists: true,
|
|
199
|
-
data: () => creatorUserDoc,
|
|
200
|
-
});
|
|
201
|
-
const ctx = await assertAuth(makeRequest(), {
|
|
202
|
-
creator: true,
|
|
203
|
-
allowAnyStatus: true,
|
|
204
|
-
});
|
|
205
|
-
expect(ctx.userDoc).toMatchObject({ creator: "creator-12345" });
|
|
206
|
-
});
|
|
207
|
-
it("throws not-found when user doc is missing and creator check runs", async () => {
|
|
208
|
-
mockUserGet.mockResolvedValue({ exists: false, data: () => null });
|
|
209
|
-
await expect(assertAuth(makeRequest(), { creator: true, allowAnyStatus: true })).rejects.toMatchObject({ code: "not-found" });
|
|
210
|
-
});
|
|
211
|
-
it("throws permission-denied (not failed-precondition) when user is banned and creator=true", async () => {
|
|
212
|
-
mockUserGet.mockResolvedValue({
|
|
213
|
-
exists: true,
|
|
214
|
-
data: () => ({ ...creatorUserDoc, status: "banned" }),
|
|
215
|
-
});
|
|
216
|
-
// banned check in step 4 fires before creator check in step 5
|
|
217
|
-
await expect(assertAuth(makeRequest(), { creator: true })).rejects.toMatchObject({ code: "permission-denied" });
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
describe("Project membership", () => {
|
|
221
|
-
it("throws not-found when project doc does not exist", async () => {
|
|
222
|
-
mockProjectGet.mockResolvedValue({ exists: false, data: () => null });
|
|
223
|
-
await expect(assertAuth(makeRequest(), {
|
|
224
|
-
projectMembership: { projectId: "p1" },
|
|
225
|
-
allowAnyStatus: true,
|
|
226
|
-
})).rejects.toMatchObject({ code: "not-found" });
|
|
227
|
-
});
|
|
228
|
-
it("throws permission-denied when caller is not in any membership field", async () => {
|
|
229
|
-
mockProjectGet.mockResolvedValue({
|
|
230
|
-
exists: true,
|
|
231
|
-
data: () => ({
|
|
232
|
-
projectId: "p1",
|
|
233
|
-
ownedBy: { uid: "other-uid" },
|
|
234
|
-
activeUserIds: { "another-uid": true },
|
|
235
|
-
activeUsers: [{ uid: "yet-another-uid" }],
|
|
236
|
-
}),
|
|
237
|
-
});
|
|
238
|
-
await expect(assertAuth(makeRequest(), {
|
|
239
|
-
projectMembership: { projectId: "p1" },
|
|
240
|
-
allowAnyStatus: true,
|
|
241
|
-
})).rejects.toMatchObject({ code: "permission-denied" });
|
|
242
|
-
});
|
|
243
|
-
it("succeeds and sets isMember=true, isOwner=false when caller is in activeUserIds", async () => {
|
|
244
|
-
mockProjectGet.mockResolvedValue({
|
|
245
|
-
exists: true,
|
|
246
|
-
data: () => ({
|
|
247
|
-
projectId: "p1",
|
|
248
|
-
ownedBy: { uid: "owner-uid" },
|
|
249
|
-
activeUserIds: { "uid-123": true },
|
|
250
|
-
activeUsers: [],
|
|
251
|
-
}),
|
|
252
|
-
});
|
|
253
|
-
const ctx = await assertAuth(makeRequest(), {
|
|
254
|
-
projectMembership: { projectId: "p1" },
|
|
255
|
-
allowAnyStatus: true,
|
|
256
|
-
});
|
|
257
|
-
expect(ctx.project?.isMember).toBe(true);
|
|
258
|
-
expect(ctx.project?.isOwner).toBe(false);
|
|
259
|
-
});
|
|
260
|
-
it("succeeds when caller is in activeUsers array but not in activeUserIds", async () => {
|
|
261
|
-
mockProjectGet.mockResolvedValue({
|
|
262
|
-
exists: true,
|
|
263
|
-
data: () => ({
|
|
264
|
-
projectId: "p1",
|
|
265
|
-
ownedBy: { uid: "owner-uid" },
|
|
266
|
-
activeUserIds: {},
|
|
267
|
-
activeUsers: [{ uid: "uid-123" }],
|
|
268
|
-
}),
|
|
269
|
-
});
|
|
270
|
-
const ctx = await assertAuth(makeRequest(), {
|
|
271
|
-
projectMembership: { projectId: "p1" },
|
|
272
|
-
allowAnyStatus: true,
|
|
273
|
-
});
|
|
274
|
-
expect(ctx.project?.isMember).toBe(true);
|
|
275
|
-
expect(ctx.project?.isOwner).toBe(false);
|
|
276
|
-
});
|
|
277
|
-
it("succeeds and sets isOwner=true, isMember=true when caller is ownedBy.uid", async () => {
|
|
278
|
-
mockProjectGet.mockResolvedValue({
|
|
279
|
-
exists: true,
|
|
280
|
-
data: () => ({
|
|
281
|
-
projectId: "p1",
|
|
282
|
-
ownedBy: { uid: "uid-123" },
|
|
283
|
-
activeUserIds: {},
|
|
284
|
-
activeUsers: [],
|
|
285
|
-
}),
|
|
286
|
-
});
|
|
287
|
-
const ctx = await assertAuth(makeRequest(), {
|
|
288
|
-
projectMembership: { projectId: "p1" },
|
|
289
|
-
allowAnyStatus: true,
|
|
290
|
-
});
|
|
291
|
-
expect(ctx.project?.isOwner).toBe(true);
|
|
292
|
-
expect(ctx.project?.isMember).toBe(true);
|
|
293
|
-
});
|
|
294
|
-
it("throws permission-denied when role is owner but caller is only a member", async () => {
|
|
295
|
-
mockProjectGet.mockResolvedValue({
|
|
296
|
-
exists: true,
|
|
297
|
-
data: () => ({
|
|
298
|
-
projectId: "p1",
|
|
299
|
-
ownedBy: { uid: "owner-uid" },
|
|
300
|
-
activeUserIds: { "uid-123": true },
|
|
301
|
-
activeUsers: [],
|
|
302
|
-
}),
|
|
303
|
-
});
|
|
304
|
-
await expect(assertAuth(makeRequest(), {
|
|
305
|
-
projectMembership: { projectId: "p1", role: "owner" },
|
|
306
|
-
allowAnyStatus: true,
|
|
307
|
-
})).rejects.toMatchObject({ code: "permission-denied" });
|
|
308
|
-
});
|
|
309
|
-
it("succeeds when role is owner and caller is the owner", async () => {
|
|
310
|
-
mockProjectGet.mockResolvedValue({
|
|
311
|
-
exists: true,
|
|
312
|
-
data: () => ({
|
|
313
|
-
projectId: "p1",
|
|
314
|
-
ownedBy: { uid: "uid-123" },
|
|
315
|
-
activeUserIds: {},
|
|
316
|
-
activeUsers: [],
|
|
317
|
-
}),
|
|
318
|
-
});
|
|
319
|
-
const ctx = await assertAuth(makeRequest(), {
|
|
320
|
-
projectMembership: { projectId: "p1", role: "owner" },
|
|
321
|
-
allowAnyStatus: true,
|
|
322
|
-
});
|
|
323
|
-
expect(ctx.project?.isOwner).toBe(true);
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
159
|
describe("Admin check", () => {
|
|
327
160
|
it("propagates the error when requireAdmin throws", async () => {
|
|
328
161
|
mockRequireAdmin.mockRejectedValue(Object.assign(new Error("Administrator access required"), {
|
|
@@ -344,64 +177,16 @@ describe("Admin check", () => {
|
|
|
344
177
|
});
|
|
345
178
|
});
|
|
346
179
|
describe("Combined checks", () => {
|
|
347
|
-
it("fails on email check first when emailVerified and creator are both required but email is unverified", async () => {
|
|
348
|
-
await expect(assertAuth(makeRequest({ emailVerified: false }), {
|
|
349
|
-
emailVerified: true,
|
|
350
|
-
creator: true,
|
|
351
|
-
})).rejects.toMatchObject({
|
|
352
|
-
code: "failed-precondition",
|
|
353
|
-
message: expect.stringContaining("Email"),
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
it("fails with creator error when email is verified but user lacks creator status", async () => {
|
|
357
|
-
mockUserGet.mockResolvedValue({ exists: true, data: () => activeUserDoc });
|
|
358
|
-
await expect(assertAuth(makeRequest({ emailVerified: true }), {
|
|
359
|
-
emailVerified: true,
|
|
360
|
-
creator: true,
|
|
361
|
-
})).rejects.toMatchObject({
|
|
362
|
-
code: "failed-precondition",
|
|
363
|
-
message: expect.stringContaining("Creator"),
|
|
364
|
-
});
|
|
365
|
-
});
|
|
366
180
|
it("returns fully populated ctx when all checks pass", async () => {
|
|
367
|
-
mockUserGet.mockResolvedValue({ exists: true, data: () =>
|
|
368
|
-
mockProjectGet.mockResolvedValue({
|
|
369
|
-
exists: true,
|
|
370
|
-
data: () => ({
|
|
371
|
-
projectId: "p1",
|
|
372
|
-
ownedBy: { uid: "uid-123" },
|
|
373
|
-
activeUserIds: {},
|
|
374
|
-
activeUsers: [],
|
|
375
|
-
}),
|
|
376
|
-
});
|
|
181
|
+
mockUserGet.mockResolvedValue({ exists: true, data: () => activeUserDoc });
|
|
377
182
|
mockRequireAdmin.mockResolvedValue(undefined);
|
|
378
183
|
const ctx = await assertAuth(makeRequest({ emailVerified: true }), {
|
|
379
184
|
emailVerified: true,
|
|
380
|
-
creator: true,
|
|
381
|
-
projectMembership: { projectId: "p1" },
|
|
382
185
|
admin: { allowJrAdmin: true },
|
|
383
186
|
});
|
|
384
187
|
expect(ctx.uid).toBe("uid-123");
|
|
385
|
-
expect(ctx.userDoc).toMatchObject({
|
|
386
|
-
expect(ctx.project?.isOwner).toBe(true);
|
|
387
|
-
expect(ctx.project?.isMember).toBe(true);
|
|
188
|
+
expect(ctx.userDoc).toMatchObject({ status: "active" });
|
|
388
189
|
expect(mockRequireAdmin).toHaveBeenCalled();
|
|
389
190
|
});
|
|
390
191
|
});
|
|
391
|
-
describe("Parallelization", () => {
|
|
392
|
-
it("calls both user-doc and project-doc get() when both are needed", async () => {
|
|
393
|
-
mockUserGet.mockResolvedValue({ exists: true, data: () => creatorUserDoc });
|
|
394
|
-
mockProjectGet.mockResolvedValue({
|
|
395
|
-
exists: true,
|
|
396
|
-
data: () => memberProjectDoc("uid-123"),
|
|
397
|
-
});
|
|
398
|
-
await assertAuth(makeRequest(), {
|
|
399
|
-
creator: true,
|
|
400
|
-
projectMembership: { projectId: "p1" },
|
|
401
|
-
allowAnyStatus: true,
|
|
402
|
-
});
|
|
403
|
-
expect(mockUserGet).toHaveBeenCalledOnce();
|
|
404
|
-
expect(mockProjectGet).toHaveBeenCalledOnce();
|
|
405
|
-
});
|
|
406
|
-
});
|
|
407
192
|
//# sourceMappingURL=assertAuth.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertAuth.test.js","sourceRoot":"","sources":["../../src/server/assertAuth.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assertAuth.test.js","sourceRoot":"","sources":["../../src/server/assertAuth.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -17,11 +17,6 @@ export interface AuthRequirements {
|
|
|
17
17
|
* Default: false. Skipped when allowUnverified=true.
|
|
18
18
|
*/
|
|
19
19
|
emailVerified?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Require the user has creator status (config.isUserCreator(user) returns true).
|
|
22
|
-
* Default: false. Implies a Firestore read of the user doc.
|
|
23
|
-
*/
|
|
24
|
-
creator?: boolean;
|
|
25
20
|
/**
|
|
26
21
|
* Require user status is not 'banned' or 'disabled'.
|
|
27
22
|
* Default: true (always enforced unless allowAnyStatus=true).
|
|
@@ -40,14 +35,6 @@ export interface AuthRequirements {
|
|
|
40
35
|
* Default: false. Does NOT skip the existence check.
|
|
41
36
|
*/
|
|
42
37
|
allowBanned?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Require the caller is a member (or owner) of a given project.
|
|
45
|
-
* Reads the project doc via config.projectPath(projectId).
|
|
46
|
-
*/
|
|
47
|
-
projectMembership?: {
|
|
48
|
-
projectId: string;
|
|
49
|
-
role?: "member" | "owner";
|
|
50
|
-
};
|
|
51
38
|
/**
|
|
52
39
|
* Require admin status. Delegates to config.requireAdmin().
|
|
53
40
|
* The shape of this object is forwarded verbatim to the consumer's
|
|
@@ -66,20 +53,14 @@ export interface AdminCheckOptions {
|
|
|
66
53
|
[key: string]: unknown;
|
|
67
54
|
}
|
|
68
55
|
/**
|
|
69
|
-
* Return value from assertAuth. Generic over the consuming app's user
|
|
70
|
-
*
|
|
56
|
+
* Return value from assertAuth. Generic over the consuming app's user
|
|
57
|
+
* document type.
|
|
71
58
|
*/
|
|
72
|
-
export interface AuthContext<TUser = unknown
|
|
59
|
+
export interface AuthContext<TUser = unknown> {
|
|
73
60
|
uid: string;
|
|
74
61
|
token: DecodedIdToken;
|
|
75
|
-
/** Populated when the user doc was read (
|
|
62
|
+
/** Populated when the user doc was read (default not-banned check). */
|
|
76
63
|
userDoc?: TUser;
|
|
77
|
-
/** Populated when projectMembership was checked. */
|
|
78
|
-
project?: {
|
|
79
|
-
data: TProject;
|
|
80
|
-
isOwner: boolean;
|
|
81
|
-
isMember: boolean;
|
|
82
|
-
};
|
|
83
64
|
}
|
|
84
65
|
/**
|
|
85
66
|
* Status the consuming app reports for a user doc. The package only
|
|
@@ -90,7 +71,7 @@ export type UserStatus = "ok" | "banned" | "disabled";
|
|
|
90
71
|
* Configuration for createAssertAuth. The consuming app supplies every
|
|
91
72
|
* app-specific operation as a callback.
|
|
92
73
|
*/
|
|
93
|
-
export interface AssertAuthConfig<TUser
|
|
74
|
+
export interface AssertAuthConfig<TUser> {
|
|
94
75
|
/**
|
|
95
76
|
* Returns the admin Firestore instance. Called every assertAuth invocation
|
|
96
77
|
* that needs a Firestore read. Implementations typically return
|
|
@@ -102,31 +83,12 @@ export interface AssertAuthConfig<TUser, TProject> {
|
|
|
102
83
|
* Example: `userProfiles/${uid}`
|
|
103
84
|
*/
|
|
104
85
|
userProfilePath: (uid: string) => string;
|
|
105
|
-
/**
|
|
106
|
-
* Returns the Firestore document path for a project, given a projectId.
|
|
107
|
-
* Example: `allProjects/${projectId}`
|
|
108
|
-
*/
|
|
109
|
-
projectPath: (projectId: string) => string;
|
|
110
86
|
/**
|
|
111
87
|
* Returns the user's status given the user doc data. The package only
|
|
112
88
|
* acts on 'ok' | 'banned' | 'disabled'. Apps may store status in any
|
|
113
89
|
* field; this callback interprets it.
|
|
114
90
|
*/
|
|
115
91
|
getUserStatus: (user: TUser) => UserStatus;
|
|
116
|
-
/**
|
|
117
|
-
* Returns true if the user is a creator. Called only when
|
|
118
|
-
* AuthRequirements.creator === true.
|
|
119
|
-
*/
|
|
120
|
-
isUserCreator: (user: TUser) => boolean;
|
|
121
|
-
/**
|
|
122
|
-
* Returns true if the given uid is the owner of the project.
|
|
123
|
-
*/
|
|
124
|
-
isProjectOwner: (project: TProject, uid: string) => boolean;
|
|
125
|
-
/**
|
|
126
|
-
* Returns true if the given uid is a member of the project. Owners are
|
|
127
|
-
* typically also members — the callback should reflect that.
|
|
128
|
-
*/
|
|
129
|
-
isProjectMember: (project: TProject, uid: string) => boolean;
|
|
130
92
|
/**
|
|
131
93
|
* Admin check. Called only when AuthRequirements.admin is set. The
|
|
132
94
|
* package forwards uid, token, and the admin options verbatim. The
|
|
@@ -137,5 +99,5 @@ export interface AssertAuthConfig<TUser, TProject> {
|
|
|
137
99
|
/**
|
|
138
100
|
* The function returned by createAssertAuth.
|
|
139
101
|
*/
|
|
140
|
-
export type AssertAuthFn<TUser
|
|
102
|
+
export type AssertAuthFn<TUser> = (request: CallableRequest, requirements?: AuthRequirements) => Promise<AuthContext<TUser>>;
|
|
141
103
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,OAAO;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,CAAC;IACtB,uEAAuE;IACvE,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC;;;;OAIG;IACH,SAAS,EAAE,MAAM,SAAS,CAAC;IAE3B;;;OAGG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAEzC;;;;OAIG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC;IAE3C;;;;OAIG;IACH,YAAY,EAAE,CACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,KAAK,IAAI,CAChC,OAAO,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,gBAAgB,KAC5B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
package/dist/server/types.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// packages/auth-core/src/server/types.ts
|
|
2
2
|
//
|
|
3
3
|
// Types for the createAssertAuth factory. Fully generic over the consuming
|
|
4
|
-
// app's user
|
|
5
|
-
// app-specific knowledge.
|
|
4
|
+
// app's user document shape. The package contains no app-specific knowledge.
|
|
6
5
|
export {};
|
|
7
6
|
//# sourceMappingURL=types.js.map
|
package/dist/server/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E"}
|