@oneuptime/common 8.0.5574 → 8.0.5575

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 (47) hide show
  1. package/Models/DatabaseModels/Index.ts +4 -0
  2. package/Models/DatabaseModels/StatusPagePrivateUserSession.ts +413 -0
  3. package/Models/DatabaseModels/UserSession.ts +318 -0
  4. package/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.ts +91 -0
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  6. package/Server/Services/Index.ts +4 -0
  7. package/Server/Services/StatusPagePrivateUserSessionService.ts +369 -0
  8. package/Server/Services/UserSessionService.ts +350 -0
  9. package/Server/Utils/Cookie.ts +127 -5
  10. package/Server/Utils/Express.ts +100 -0
  11. package/Server/Utils/JsonWebToken.ts +8 -1
  12. package/Types/CookieName.ts +1 -0
  13. package/Types/JsonWebTokenData.ts +1 -0
  14. package/Types/Text.ts +15 -0
  15. package/UI/Utils/API/API.ts +39 -1
  16. package/Utils/API.ts +74 -5
  17. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  18. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  19. package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js +456 -0
  20. package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js.map +1 -0
  21. package/build/dist/Models/DatabaseModels/UserSession.js +356 -0
  22. package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -0
  23. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js +38 -0
  24. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js.map +1 -0
  25. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  26. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  27. package/build/dist/Server/Services/Index.js +4 -0
  28. package/build/dist/Server/Services/Index.js.map +1 -1
  29. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +214 -0
  30. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -0
  31. package/build/dist/Server/Services/UserSessionService.js +202 -0
  32. package/build/dist/Server/Services/UserSessionService.js.map +1 -0
  33. package/build/dist/Server/Utils/Cookie.js +74 -7
  34. package/build/dist/Server/Utils/Cookie.js.map +1 -1
  35. package/build/dist/Server/Utils/Express.js +62 -0
  36. package/build/dist/Server/Utils/Express.js.map +1 -1
  37. package/build/dist/Server/Utils/JsonWebToken.js +8 -2
  38. package/build/dist/Server/Utils/JsonWebToken.js.map +1 -1
  39. package/build/dist/Types/CookieName.js +1 -0
  40. package/build/dist/Types/CookieName.js.map +1 -1
  41. package/build/dist/Types/Text.js +9 -0
  42. package/build/dist/Types/Text.js.map +1 -1
  43. package/build/dist/UI/Utils/API/API.js +27 -0
  44. package/build/dist/UI/Utils/API/API.js.map +1 -1
  45. package/build/dist/Utils/API.js +36 -6
  46. package/build/dist/Utils/API.js.map +1 -1
  47. package/package.json +146 -146
@@ -0,0 +1,456 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
11
+ import Project from "./Project";
12
+ import StatusPage from "./StatusPage";
13
+ import StatusPagePrivateUser from "./StatusPagePrivateUser";
14
+ import Route from "../../Types/API/Route";
15
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
16
+ import AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
17
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
18
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
19
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
20
+ import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
21
+ import ColumnLength from "../../Types/Database/ColumnLength";
22
+ import ColumnType from "../../Types/Database/ColumnType";
23
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
24
+ import TableColumn from "../../Types/Database/TableColumn";
25
+ import TableColumnType from "../../Types/Database/TableColumnType";
26
+ import TableMetadata from "../../Types/Database/TableMetadata";
27
+ import TenantColumn from "../../Types/Database/TenantColumn";
28
+ import HashedString from "../../Types/HashedString";
29
+ import IconProp from "../../Types/Icon/IconProp";
30
+ import ObjectID from "../../Types/ObjectID";
31
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
32
+ let StatusPagePrivateUserSession = class StatusPagePrivateUserSession extends BaseModel {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.project = undefined;
36
+ this.projectId = undefined;
37
+ this.statusPage = undefined;
38
+ this.statusPageId = undefined;
39
+ this.statusPagePrivateUser = undefined;
40
+ this.statusPagePrivateUserId = undefined;
41
+ this.refreshToken = undefined;
42
+ this.refreshTokenExpiresAt = undefined;
43
+ this.lastActiveAt = undefined;
44
+ this.deviceName = undefined;
45
+ this.deviceType = undefined;
46
+ this.deviceOS = undefined;
47
+ this.deviceBrowser = undefined;
48
+ this.ipAddress = undefined;
49
+ this.userAgent = undefined;
50
+ this.isRevoked = undefined;
51
+ this.revokedAt = undefined;
52
+ this.revokedReason = undefined;
53
+ this.additionalInfo = undefined;
54
+ }
55
+ };
56
+ __decorate([
57
+ ColumnAccessControl({
58
+ create: [],
59
+ read: [],
60
+ update: [],
61
+ }),
62
+ TableColumn({
63
+ manyToOneRelationColumn: "projectId",
64
+ type: TableColumnType.Entity,
65
+ modelType: Project,
66
+ title: "Project",
67
+ description: "Project that owns this private status page session.",
68
+ }),
69
+ ManyToOne(() => {
70
+ return Project;
71
+ }, {
72
+ eager: false,
73
+ nullable: true,
74
+ onDelete: "CASCADE",
75
+ orphanedRowAction: "nullify",
76
+ }),
77
+ JoinColumn({ name: "projectId" }),
78
+ __metadata("design:type", Project)
79
+ ], StatusPagePrivateUserSession.prototype, "project", void 0);
80
+ __decorate([
81
+ ColumnAccessControl({
82
+ create: [],
83
+ read: [],
84
+ update: [],
85
+ }),
86
+ Index(),
87
+ TableColumn({
88
+ type: TableColumnType.ObjectID,
89
+ title: "Project ID",
90
+ description: "Project identifier for this session.",
91
+ required: true,
92
+ canReadOnRelationQuery: true,
93
+ }),
94
+ Column({
95
+ type: ColumnType.ObjectID,
96
+ nullable: false,
97
+ transformer: ObjectID.getDatabaseTransformer(),
98
+ }),
99
+ __metadata("design:type", ObjectID)
100
+ ], StatusPagePrivateUserSession.prototype, "projectId", void 0);
101
+ __decorate([
102
+ ColumnAccessControl({
103
+ create: [],
104
+ read: [],
105
+ update: [],
106
+ }),
107
+ TableColumn({
108
+ manyToOneRelationColumn: "statusPageId",
109
+ type: TableColumnType.Entity,
110
+ modelType: StatusPage,
111
+ title: "Status Page",
112
+ description: "Status page associated with this session.",
113
+ }),
114
+ ManyToOne(() => {
115
+ return StatusPage;
116
+ }, {
117
+ eager: false,
118
+ nullable: true,
119
+ onDelete: "CASCADE",
120
+ orphanedRowAction: "nullify",
121
+ }),
122
+ JoinColumn({ name: "statusPageId" }),
123
+ __metadata("design:type", StatusPage)
124
+ ], StatusPagePrivateUserSession.prototype, "statusPage", void 0);
125
+ __decorate([
126
+ ColumnAccessControl({
127
+ create: [],
128
+ read: [],
129
+ update: [],
130
+ }),
131
+ Index(),
132
+ TableColumn({
133
+ type: TableColumnType.ObjectID,
134
+ title: "Status Page ID",
135
+ description: "Identifier for the status page.",
136
+ required: true,
137
+ }),
138
+ Column({
139
+ type: ColumnType.ObjectID,
140
+ nullable: false,
141
+ transformer: ObjectID.getDatabaseTransformer(),
142
+ }),
143
+ __metadata("design:type", ObjectID)
144
+ ], StatusPagePrivateUserSession.prototype, "statusPageId", void 0);
145
+ __decorate([
146
+ ColumnAccessControl({
147
+ create: [],
148
+ read: [],
149
+ update: [],
150
+ }),
151
+ TableColumn({
152
+ manyToOneRelationColumn: "statusPagePrivateUserId",
153
+ type: TableColumnType.Entity,
154
+ modelType: StatusPagePrivateUser,
155
+ title: "Status Page Private User",
156
+ description: "Private user record associated with this session.",
157
+ }),
158
+ ManyToOne(() => {
159
+ return StatusPagePrivateUser;
160
+ }, {
161
+ eager: false,
162
+ nullable: false,
163
+ onDelete: "CASCADE",
164
+ orphanedRowAction: "delete",
165
+ }),
166
+ JoinColumn({ name: "statusPagePrivateUserId" }),
167
+ __metadata("design:type", StatusPagePrivateUser)
168
+ ], StatusPagePrivateUserSession.prototype, "statusPagePrivateUser", void 0);
169
+ __decorate([
170
+ ColumnAccessControl({
171
+ create: [],
172
+ read: [],
173
+ update: [],
174
+ }),
175
+ Index(),
176
+ TableColumn({
177
+ type: TableColumnType.ObjectID,
178
+ title: "Status Page Private User ID",
179
+ description: "Identifier for the status page private user.",
180
+ required: true,
181
+ canReadOnRelationQuery: true,
182
+ }),
183
+ Column({
184
+ type: ColumnType.ObjectID,
185
+ nullable: false,
186
+ transformer: ObjectID.getDatabaseTransformer(),
187
+ }),
188
+ __metadata("design:type", ObjectID)
189
+ ], StatusPagePrivateUserSession.prototype, "statusPagePrivateUserId", void 0);
190
+ __decorate([
191
+ ColumnAccessControl({
192
+ create: [],
193
+ read: [],
194
+ update: [],
195
+ }),
196
+ Index({ unique: true }),
197
+ TableColumn({
198
+ type: TableColumnType.HashedString,
199
+ title: "Refresh Token",
200
+ description: "Hashed refresh token for the private user session.",
201
+ required: true,
202
+ hideColumnInDocumentation: true,
203
+ }),
204
+ Column({
205
+ type: ColumnType.HashedString,
206
+ length: ColumnLength.HashedString,
207
+ nullable: false,
208
+ unique: true,
209
+ transformer: HashedString.getDatabaseTransformer(),
210
+ }),
211
+ __metadata("design:type", HashedString)
212
+ ], StatusPagePrivateUserSession.prototype, "refreshToken", void 0);
213
+ __decorate([
214
+ ColumnAccessControl({
215
+ create: [],
216
+ read: [],
217
+ update: [],
218
+ }),
219
+ TableColumn({
220
+ type: TableColumnType.Date,
221
+ title: "Refresh Token Expires At",
222
+ description: "Expiration timestamp for the refresh token.",
223
+ required: true,
224
+ }),
225
+ Column({
226
+ type: ColumnType.Date,
227
+ nullable: false,
228
+ }),
229
+ __metadata("design:type", Date)
230
+ ], StatusPagePrivateUserSession.prototype, "refreshTokenExpiresAt", void 0);
231
+ __decorate([
232
+ ColumnAccessControl({
233
+ create: [],
234
+ read: [],
235
+ update: [],
236
+ }),
237
+ TableColumn({
238
+ type: TableColumnType.Date,
239
+ title: "Last Active At",
240
+ description: "Last time this session was active.",
241
+ }),
242
+ Column({
243
+ type: ColumnType.Date,
244
+ nullable: true,
245
+ }),
246
+ __metadata("design:type", Date)
247
+ ], StatusPagePrivateUserSession.prototype, "lastActiveAt", void 0);
248
+ __decorate([
249
+ ColumnAccessControl({
250
+ create: [],
251
+ read: [],
252
+ update: [],
253
+ }),
254
+ TableColumn({
255
+ type: TableColumnType.ShortText,
256
+ title: "Device Name",
257
+ description: "Friendly name for the device used to access the status page.",
258
+ }),
259
+ Column({
260
+ type: ColumnType.ShortText,
261
+ length: ColumnLength.ShortText,
262
+ nullable: true,
263
+ }),
264
+ __metadata("design:type", String)
265
+ ], StatusPagePrivateUserSession.prototype, "deviceName", void 0);
266
+ __decorate([
267
+ ColumnAccessControl({
268
+ create: [],
269
+ read: [],
270
+ update: [],
271
+ }),
272
+ TableColumn({
273
+ type: TableColumnType.ShortText,
274
+ title: "Device Type",
275
+ description: "Type of device (desktop, mobile, etc).",
276
+ }),
277
+ Column({
278
+ type: ColumnType.ShortText,
279
+ length: ColumnLength.ShortText,
280
+ nullable: true,
281
+ }),
282
+ __metadata("design:type", String)
283
+ ], StatusPagePrivateUserSession.prototype, "deviceType", void 0);
284
+ __decorate([
285
+ ColumnAccessControl({
286
+ create: [],
287
+ read: [],
288
+ update: [],
289
+ }),
290
+ TableColumn({
291
+ type: TableColumnType.ShortText,
292
+ title: "Device OS",
293
+ description: "Operating system reported for this session.",
294
+ }),
295
+ Column({
296
+ type: ColumnType.ShortText,
297
+ length: ColumnLength.ShortText,
298
+ nullable: true,
299
+ }),
300
+ __metadata("design:type", String)
301
+ ], StatusPagePrivateUserSession.prototype, "deviceOS", void 0);
302
+ __decorate([
303
+ ColumnAccessControl({
304
+ create: [],
305
+ read: [],
306
+ update: [],
307
+ }),
308
+ TableColumn({
309
+ type: TableColumnType.ShortText,
310
+ title: "Browser",
311
+ description: "Browser or client application used for the session.",
312
+ }),
313
+ Column({
314
+ type: ColumnType.ShortText,
315
+ length: ColumnLength.ShortText,
316
+ nullable: true,
317
+ }),
318
+ __metadata("design:type", String)
319
+ ], StatusPagePrivateUserSession.prototype, "deviceBrowser", void 0);
320
+ __decorate([
321
+ ColumnAccessControl({
322
+ create: [],
323
+ read: [],
324
+ update: [],
325
+ }),
326
+ TableColumn({
327
+ type: TableColumnType.ShortText,
328
+ title: "IP Address",
329
+ description: "IP address recorded for this session.",
330
+ }),
331
+ Column({
332
+ type: ColumnType.ShortText,
333
+ length: ColumnLength.ShortText,
334
+ nullable: true,
335
+ }),
336
+ __metadata("design:type", String)
337
+ ], StatusPagePrivateUserSession.prototype, "ipAddress", void 0);
338
+ __decorate([
339
+ ColumnAccessControl({
340
+ create: [],
341
+ read: [],
342
+ update: [],
343
+ }),
344
+ TableColumn({
345
+ type: TableColumnType.VeryLongText,
346
+ title: "User Agent",
347
+ description: "User agent string supplied by the client.",
348
+ }),
349
+ Column({
350
+ type: ColumnType.VeryLongText,
351
+ nullable: true,
352
+ }),
353
+ __metadata("design:type", String)
354
+ ], StatusPagePrivateUserSession.prototype, "userAgent", void 0);
355
+ __decorate([
356
+ ColumnAccessControl({
357
+ create: [],
358
+ read: [],
359
+ update: [],
360
+ }),
361
+ TableColumn({
362
+ type: TableColumnType.Boolean,
363
+ title: "Is Revoked",
364
+ description: "Indicates if the session has been revoked.",
365
+ isDefaultValueColumn: true,
366
+ defaultValue: false,
367
+ }),
368
+ Column({
369
+ type: ColumnType.Boolean,
370
+ nullable: false,
371
+ default: false,
372
+ }),
373
+ __metadata("design:type", Boolean)
374
+ ], StatusPagePrivateUserSession.prototype, "isRevoked", void 0);
375
+ __decorate([
376
+ ColumnAccessControl({
377
+ create: [],
378
+ read: [],
379
+ update: [],
380
+ }),
381
+ TableColumn({
382
+ type: TableColumnType.Date,
383
+ title: "Revoked At",
384
+ description: "Timestamp when the session was revoked, if applicable.",
385
+ }),
386
+ Column({
387
+ type: ColumnType.Date,
388
+ nullable: true,
389
+ }),
390
+ __metadata("design:type", Date)
391
+ ], StatusPagePrivateUserSession.prototype, "revokedAt", void 0);
392
+ __decorate([
393
+ ColumnAccessControl({
394
+ create: [],
395
+ read: [],
396
+ update: [],
397
+ }),
398
+ TableColumn({
399
+ type: TableColumnType.ShortText,
400
+ title: "Revoked Reason",
401
+ description: "Reason provided for revoking this session.",
402
+ }),
403
+ Column({
404
+ type: ColumnType.ShortText,
405
+ length: ColumnLength.ShortText,
406
+ nullable: true,
407
+ }),
408
+ __metadata("design:type", String)
409
+ ], StatusPagePrivateUserSession.prototype, "revokedReason", void 0);
410
+ __decorate([
411
+ ColumnAccessControl({
412
+ create: [],
413
+ read: [],
414
+ update: [],
415
+ }),
416
+ TableColumn({
417
+ type: TableColumnType.JSON,
418
+ title: "Additional Info",
419
+ description: "Flexible JSON payload for storing structured metadata.",
420
+ }),
421
+ Column({
422
+ type: ColumnType.JSON,
423
+ nullable: true,
424
+ }),
425
+ __metadata("design:type", Object)
426
+ ], StatusPagePrivateUserSession.prototype, "additionalInfo", void 0);
427
+ StatusPagePrivateUserSession = __decorate([
428
+ AllowAccessIfSubscriptionIsUnpaid(),
429
+ TableBillingAccessControl({
430
+ create: PlanType.Growth,
431
+ read: PlanType.Growth,
432
+ update: PlanType.Growth,
433
+ delete: PlanType.Growth,
434
+ }),
435
+ CanAccessIfCanReadOn("statusPage"),
436
+ TenantColumn("projectId"),
437
+ TableAccessControl({
438
+ create: [],
439
+ read: [],
440
+ delete: [],
441
+ update: [],
442
+ }),
443
+ CrudApiEndpoint(new Route("/status-page-private-user-session")),
444
+ Entity({
445
+ name: "StatusPagePrivateUserSession",
446
+ }),
447
+ TableMetadata({
448
+ tableName: "StatusPagePrivateUserSession",
449
+ singularName: "Status Page Private User Session",
450
+ pluralName: "Status Page Private User Sessions",
451
+ icon: IconProp.Lock,
452
+ tableDescription: "Stores status page private user sessions, refresh tokens, and device metadata for secure access control.",
453
+ })
454
+ ], StatusPagePrivateUserSession);
455
+ export default StatusPagePrivateUserSession;
456
+ //# sourceMappingURL=StatusPagePrivateUserSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusPagePrivateUserSession.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/StatusPagePrivateUserSession.ts"],"names":[],"mappings":"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"}