@proteinjs/user-server 1.5.1 → 1.5.3

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.
Files changed (37) hide show
  1. package/dist/generated/index.d.ts.map +1 -1
  2. package/dist/generated/index.js +5 -1
  3. package/dist/generated/index.js.map +1 -1
  4. package/dist/src/authorization/userCache.js +1 -1
  5. package/dist/src/authorization/userCache.js.map +1 -1
  6. package/dist/src/migrations/BackfillUserRolesArray.d.ts +27 -0
  7. package/dist/src/migrations/BackfillUserRolesArray.d.ts.map +1 -0
  8. package/dist/src/migrations/BackfillUserRolesArray.js +126 -0
  9. package/dist/src/migrations/BackfillUserRolesArray.js.map +1 -0
  10. package/dist/src/services/Roles.d.ts +15 -0
  11. package/dist/src/services/Roles.d.ts.map +1 -0
  12. package/dist/src/services/Roles.js +148 -0
  13. package/dist/src/services/Roles.js.map +1 -0
  14. package/dist/src/services/Signup.d.ts.map +1 -1
  15. package/dist/src/services/Signup.js +7 -6
  16. package/dist/src/services/Signup.js.map +1 -1
  17. package/dist/test/BackfillUserRolesArray.integration.test.d.ts +2 -0
  18. package/dist/test/BackfillUserRolesArray.integration.test.d.ts.map +1 -0
  19. package/dist/test/BackfillUserRolesArray.integration.test.js +236 -0
  20. package/dist/test/BackfillUserRolesArray.integration.test.js.map +1 -0
  21. package/dist/test/Roles.integration.test.d.ts +2 -0
  22. package/dist/test/Roles.integration.test.d.ts.map +1 -0
  23. package/dist/test/Roles.integration.test.js +334 -0
  24. package/dist/test/Roles.integration.test.js.map +1 -0
  25. package/dist/test/Signup.test.js +14 -2
  26. package/dist/test/Signup.test.js.map +1 -1
  27. package/generated/index.ts +5 -1
  28. package/jest.config.js +1 -0
  29. package/package.json +8 -7
  30. package/src/authorization/userCache.ts +1 -1
  31. package/src/migrations/BackfillUserRolesArray.ts +69 -0
  32. package/src/services/Roles.ts +61 -0
  33. package/src/services/Signup.ts +11 -7
  34. package/test/BackfillUserRolesArray.integration.test.ts +113 -0
  35. package/test/Roles.integration.test.ts +163 -0
  36. package/test/Signup.test.ts +20 -3
  37. package/test/setup.js +2 -0
@@ -78,11 +78,12 @@ var Signup = /** @class */ (function () {
78
78
  this.serviceMetadata = {
79
79
  auth: {
80
80
  canAccess: function (methodName, args) {
81
- // Admin-only invite management. This previously evaluated hasRole WITHOUT returning it,
82
- // which made sendInvite/revokeInvite effectively public — any caller (even logged out)
83
- // could mint themselves a valid signup token and bypass invite-only signup.
81
+ // Invite management rides the 'users' permission (admin passes via break-glass). This
82
+ // previously evaluated the check WITHOUT returning it, which made sendInvite/revokeInvite
83
+ // effectively public — any caller (even logged out) could mint themselves a valid signup
84
+ // token and bypass invite-only signup.
84
85
  if (methodName === 'sendInvite' || methodName === 'revokeInvite') {
85
- return user_1.UserAuth.hasRole('admin');
86
+ return user_1.UserAuth.hasPermission(user_1.USER_PERMISSIONS.users);
86
87
  }
87
88
  return true;
88
89
  },
@@ -135,7 +136,7 @@ var Signup = /** @class */ (function () {
135
136
  email: email,
136
137
  password: (0, sha256_1.default)(user.password).toString(),
137
138
  emailVerified: invite ? true : false,
138
- roles: '',
139
+ roles: [],
139
140
  invitedBy: invite ? invite.invitedBy : null,
140
141
  })];
141
142
  case 8:
@@ -224,7 +225,7 @@ var Signup = /** @class */ (function () {
224
225
  if (!email) {
225
226
  throw new Error('No email was provided.');
226
227
  }
227
- db = (0, db_1.getDb)();
228
+ db = (0, db_1.getDbAsSystem)();
228
229
  return [4 /*yield*/, db.delete(user_1.tables.Invite, { email: email.toLowerCase() })];
229
230
  case 1:
230
231
  _a.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"Signup.js","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Signup.js","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BackfillUserRolesArray.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackfillUserRolesArray.integration.test.d.ts","sourceRoot":"","sources":["../../test/BackfillUserRolesArray.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var db_1 = require("@proteinjs/db");
40
+ var db_driver_spanner_1 = require("@proteinjs/db-driver-spanner");
41
+ var test_1 = require("@proteinjs/db-driver-spanner/test");
42
+ var reflection_1 = require("@proteinjs/reflection");
43
+ var user_1 = require("@proteinjs/user");
44
+ var BackfillUserRolesArray_1 = require("../src/migrations/BackfillUserRolesArray");
45
+ /**
46
+ * The user.roles cutover migration against a real Spanner emulator, simulating a deployed
47
+ * database: the user table carries the NEW schema (role_list, added by schema sync) PLUS the
48
+ * legacy comma-string `roles` column with pre-cutover data — exactly the state a deployment is
49
+ * in when the migration runs.
50
+ *
51
+ * Pinned outcomes:
52
+ * - legacy comma strings land in role_list as normalized arrays (trim, drop empties, dedupe)
53
+ * - empty/NULL legacy values stay untouched (no roles then, no roles now)
54
+ * - rows already carrying role_list are never clobbered (idempotence / post-cutover grants win)
55
+ * - a database that never had the legacy column (fresh install) is a clean no-op
56
+ */
57
+ var spannerDriver = new db_driver_spanner_1.SpannerDriver({
58
+ projectId: 'proteinjs-test',
59
+ instanceName: 'proteinjs-test',
60
+ databaseName: 'test',
61
+ });
62
+ var DbDriverFactory = /** @class */ (function () {
63
+ function DbDriverFactory() {
64
+ }
65
+ DbDriverFactory.prototype.getDbDriver = function () {
66
+ return spannerDriver;
67
+ };
68
+ return DbDriverFactory;
69
+ }());
70
+ var dropTable = (0, test_1.getDropTestTable)(spannerDriver);
71
+ var runMigration = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0: return [4 /*yield*/, new BackfillUserRolesArray_1.BackfillUserRolesArray().record.run()];
74
+ case 1: return [2 /*return*/, _a.sent()];
75
+ }
76
+ }); }); };
77
+ var rawUserInsert = function (id, legacyRoles) { return __awaiter(void 0, void 0, void 0, function () {
78
+ var rolesValue;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0:
82
+ rolesValue = legacyRoles === null ? 'NULL' : "'".concat(legacyRoles, "'");
83
+ return [4 /*yield*/, spannerDriver.runDml(function () { return ({
84
+ sql: "INSERT INTO ".concat(user_1.tables.User.name, " (id, name, email, password, email_verified, roles, created, updated) ") +
85
+ "VALUES ('".concat(id, "', 'User ").concat(id, "', '").concat(id, "@test.local', 'test', false, ").concat(rolesValue, ", ") +
86
+ "CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP())",
87
+ }); })];
88
+ case 1:
89
+ _a.sent();
90
+ return [2 /*return*/];
91
+ }
92
+ });
93
+ }); };
94
+ var rawRoleList = function (id) { return __awaiter(void 0, void 0, void 0, function () {
95
+ return __generator(this, function (_a) {
96
+ switch (_a.label) {
97
+ case 0: return [4 /*yield*/, spannerDriver.runQuery(function () { return ({
98
+ sql: "SELECT role_list FROM ".concat(user_1.tables.User.name, " WHERE id = '").concat(id, "'"),
99
+ }); })];
100
+ case 1: return [2 /*return*/, (_a.sent())[0].role_list];
101
+ }
102
+ });
103
+ }); };
104
+ describe('BackfillUserRolesArray — legacy comma-string roles → typed role_list', function () {
105
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0:
109
+ reflection_1.SourceRepository.get().objectCache['@proteinjs/db/DefaultDbDriverFactory'] = [new DbDriverFactory()];
110
+ jest.spyOn(db_1.Db, 'getDefaultDbDriver').mockImplementation(function () { return spannerDriver; });
111
+ return [4 /*yield*/, test_1.SpannerEmulatorProvisioner.ensureProvisioned({
112
+ projectId: 'proteinjs-test',
113
+ instanceName: 'proteinjs-test',
114
+ databaseName: 'test',
115
+ })];
116
+ case 1:
117
+ _a.sent();
118
+ return [4 /*yield*/, dropTable(user_1.tables.User)];
119
+ case 2:
120
+ _a.sent();
121
+ return [4 /*yield*/, spannerDriver.getTableManager().loadTable(user_1.tables.User)];
122
+ case 3:
123
+ _a.sent();
124
+ return [2 /*return*/];
125
+ }
126
+ });
127
+ }); }, 120000);
128
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
129
+ return __generator(this, function (_a) {
130
+ switch (_a.label) {
131
+ case 0: return [4 /*yield*/, dropTable(user_1.tables.User)];
132
+ case 1:
133
+ _a.sent();
134
+ return [4 /*yield*/, test_1.SpannerEmulatorProvisioner.release()];
135
+ case 2:
136
+ _a.sent();
137
+ return [2 /*return*/];
138
+ }
139
+ });
140
+ }); }, 60000);
141
+ it('is a clean no-op on a database that never had the legacy roles column', function () { return __awaiter(void 0, void 0, void 0, function () {
142
+ var _a;
143
+ return __generator(this, function (_b) {
144
+ switch (_b.label) {
145
+ case 0:
146
+ _a = expect;
147
+ return [4 /*yield*/, runMigration()];
148
+ case 1:
149
+ _a.apply(void 0, [_b.sent()]).toEqual({ backfilled: 0 });
150
+ return [2 /*return*/];
151
+ }
152
+ });
153
+ }); }, 60000);
154
+ it('backfills, normalizes, preserves, and re-runs clean on a deployed-shape database', function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ var db, alreadyMigrated, _a, _b, _c, _d, _e, _f, _g, _h;
156
+ return __generator(this, function (_j) {
157
+ switch (_j.label) {
158
+ case 0:
159
+ // Simulate the deployed state: the legacy column exists beside the new schema.
160
+ return [4 /*yield*/, spannerDriver.runUpdateSchema("ALTER TABLE ".concat(user_1.tables.User.name, " ADD COLUMN roles STRING(255)"))];
161
+ case 1:
162
+ // Simulate the deployed state: the legacy column exists beside the new schema.
163
+ _j.sent();
164
+ return [4 /*yield*/, rawUserInsert('legacy-admin', 'admin')];
165
+ case 2:
166
+ _j.sent();
167
+ return [4 /*yield*/, rawUserInsert('legacy-messy', ' admin, ops ,admin,, dev')];
168
+ case 3:
169
+ _j.sent();
170
+ return [4 /*yield*/, rawUserInsert('legacy-empty', '')];
171
+ case 4:
172
+ _j.sent();
173
+ return [4 /*yield*/, rawUserInsert('legacy-null', null)];
174
+ case 5:
175
+ _j.sent();
176
+ db = (0, db_1.getDbAsSystem)();
177
+ return [4 /*yield*/, db.insert(user_1.tables.User, {
178
+ name: 'Already migrated',
179
+ email: 'already@test.local',
180
+ password: 'test',
181
+ emailVerified: false,
182
+ roles: ['ops'],
183
+ })];
184
+ case 6:
185
+ alreadyMigrated = _j.sent();
186
+ return [4 /*yield*/, spannerDriver.runDml(function () { return ({
187
+ sql: "UPDATE ".concat(user_1.tables.User.name, " SET roles = 'admin' WHERE id = '").concat(alreadyMigrated.id, "'"),
188
+ }); })];
189
+ case 7:
190
+ _j.sent();
191
+ _a = expect;
192
+ return [4 /*yield*/, runMigration()];
193
+ case 8:
194
+ _a.apply(void 0, [_j.sent()]).toEqual({ backfilled: 2 });
195
+ // The ORM (the product's read path) sees typed arrays.
196
+ _b = expect;
197
+ return [4 /*yield*/, db.get(user_1.tables.User, { id: 'legacy-admin' })];
198
+ case 9:
199
+ // The ORM (the product's read path) sees typed arrays.
200
+ _b.apply(void 0, [(_j.sent()).roles]).toEqual(['admin']);
201
+ _c = expect;
202
+ return [4 /*yield*/, db.get(user_1.tables.User, { id: 'legacy-messy' })];
203
+ case 10:
204
+ _c.apply(void 0, [(_j.sent()).roles]).toEqual(['admin', 'ops', 'dev']);
205
+ // No roles then, no roles now.
206
+ _d = expect;
207
+ return [4 /*yield*/, rawRoleList('legacy-empty')];
208
+ case 11:
209
+ // No roles then, no roles now.
210
+ _d.apply(void 0, [_j.sent()]).toBeNull();
211
+ _e = expect;
212
+ return [4 /*yield*/, rawRoleList('legacy-null')];
213
+ case 12:
214
+ _e.apply(void 0, [_j.sent()]).toBeNull();
215
+ // The post-cutover value wins over the stale legacy string.
216
+ _f = expect;
217
+ return [4 /*yield*/, db.get(user_1.tables.User, { id: alreadyMigrated.id })];
218
+ case 13:
219
+ // The post-cutover value wins over the stale legacy string.
220
+ _f.apply(void 0, [(_j.sent()).roles]).toEqual(['ops']);
221
+ // Re-run: nothing left to do, nothing clobbered.
222
+ _g = expect;
223
+ return [4 /*yield*/, runMigration()];
224
+ case 14:
225
+ // Re-run: nothing left to do, nothing clobbered.
226
+ _g.apply(void 0, [_j.sent()]).toEqual({ backfilled: 0 });
227
+ _h = expect;
228
+ return [4 /*yield*/, db.get(user_1.tables.User, { id: 'legacy-admin' })];
229
+ case 15:
230
+ _h.apply(void 0, [(_j.sent()).roles]).toEqual(['admin']);
231
+ return [2 /*return*/];
232
+ }
233
+ });
234
+ }); }, 120000);
235
+ });
236
+ //# sourceMappingURL=BackfillUserRolesArray.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackfillUserRolesArray.integration.test.js","sourceRoot":"","sources":["../../test/BackfillUserRolesArray.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Roles.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Roles.integration.test.d.ts","sourceRoot":"","sources":["../../test/Roles.integration.test.ts"],"names":[],"mappings":""}