@oneuptime/common 12.0.3 → 12.0.4
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/Models/DatabaseModels/CephCluster.ts +14 -0
- package/Models/DatabaseModels/CodeRepository.ts +14 -6
- package/Models/DatabaseModels/DockerHost.ts +14 -0
- package/Models/DatabaseModels/GlobalOidcProject.ts +18 -0
- package/Models/DatabaseModels/GlobalSsoProject.ts +18 -0
- package/Models/DatabaseModels/IoTFleet.ts +14 -0
- package/Models/DatabaseModels/KubernetesCluster.ts +14 -0
- package/Models/DatabaseModels/NetworkDevice.ts +14 -0
- package/Models/DatabaseModels/NetworkInterface.ts +18 -0
- package/Models/DatabaseModels/Project.ts +16 -2
- package/Models/DatabaseModels/ProxmoxCluster.ts +14 -0
- package/Models/DatabaseModels/Service.ts +30 -0
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +30 -0
- package/Models/DatabaseModels/User.ts +30 -0
- package/Server/API/AIAgentDataAPI.ts +31 -0
- package/Server/API/DashboardAPI.ts +419 -12
- package/Server/API/GitHubAPI.ts +119 -283
- package/Server/API/UserAPI.ts +263 -1
- package/Server/EnvironmentConfig.ts +7 -3
- package/Server/Infrastructure/GlobalCache.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts +68 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +100 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +214 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.ts +69 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AnalyticsDatabaseService.ts +72 -1
- package/Server/Services/CodeRepositoryService.ts +105 -2
- package/Server/Services/DatabaseService.ts +185 -2
- package/Server/Services/OpenTelemetryIngestService.ts +230 -26
- package/Server/Services/UserService.ts +184 -0
- package/Server/Utils/AI/Toolbox/CodeTools.ts +45 -4
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +157 -4
- package/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.ts +130 -0
- package/Server/Utils/PasswordHash.ts +306 -0
- package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +333 -0
- package/Tests/App/Dashboard/UserCustomFields.test.tsx +392 -0
- package/Tests/Server/API/AIAgentDataRepositoryToken.test.ts +381 -0
- package/Tests/Server/API/DashboardPublicAttributeValuesAPI.test.ts +943 -0
- package/Tests/Server/API/DashboardPublicMetricsAggregateAPI.test.ts +1296 -0
- package/Tests/Server/API/DashboardPublicTemplatePayloads.test.ts +598 -0
- package/Tests/Server/API/GitHubAppInstallationBindingAPI.test.ts +539 -0
- package/Tests/Server/API/Helpers.ts +6 -1
- package/Tests/Server/API/UserProjectsAPI.test.ts +852 -0
- package/Tests/Server/Infrastructure/GlobalCache.test.ts +128 -0
- package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +215 -0
- package/Tests/Server/Services/AddPerUserPasswordSaltMigration.test.ts +178 -0
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +582 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +5 -0
- package/Tests/Server/Services/CodeRepositoryInstallationBinding.test.ts +305 -0
- package/Tests/Server/Services/CodeRepositoryResolutionBinding.test.ts +147 -0
- package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +870 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +568 -0
- package/Tests/Server/Services/RestoreDroppedUniqueIndexesMigration.test.ts +386 -0
- package/Tests/Server/Services/RestoreServiceLowerNameIndexMigration.test.ts +240 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +885 -0
- package/Tests/Server/Services/WidenHashedStringColumnsForScryptMigration.test.ts +220 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +47 -1
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +10 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +120 -0
- package/Tests/Server/Utils/CodeRepository/GitHubInstallationBinding.test.ts +292 -0
- package/Tests/Server/Utils/GitHubInstallationOwnershipVerification.test.ts +340 -0
- package/Tests/Server/Utils/GitHubWebhookAndTreeCacheIsolation.test.ts +250 -0
- package/Tests/Server/Utils/PasswordHash.test.ts +555 -0
- package/Tests/Types/Database/ColumnLength.test.ts +7 -1
- package/Tests/Types/HashedStringPerUserSalt.test.ts +476 -0
- package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +293 -0
- package/Tests/Types/Monitor/HostAlertTemplates.test.ts +249 -0
- package/Tests/Types/Monitor/IotAlertTemplates.test.ts +320 -0
- package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +271 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +696 -0
- package/Tests/UI/Utils/UserProjectsModelAPI.test.ts +714 -0
- package/Tests/Utils/TeamMembersByProject.test.ts +655 -0
- package/Types/Database/ColumnLength.ts +9 -1
- package/Types/Database/TableColumn.ts +11 -0
- package/Types/Database/UnsynchronizedIndex.ts +48 -0
- package/Types/HashedString.ts +139 -4
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +85 -11
- package/UI/Components/Navbar/NavBar.tsx +12 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +19 -7
- package/UI/Utils/ModelAPI/UserProjectsModelAPI.ts +257 -0
- package/Utils/TeamMembersByProject.ts +237 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +14 -6
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +16 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js +16 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +16 -2
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +28 -1
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +32 -0
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +32 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +21 -2
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +304 -10
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +94 -167
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +187 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +7 -3
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/GlobalCache.js +29 -0
- package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js +59 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +93 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js +101 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js +66 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +57 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/CodeRepositoryService.js +90 -2
- package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +160 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +155 -25
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +165 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +31 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +126 -4
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js +136 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js.map +1 -0
- package/build/dist/Server/Utils/PasswordHash.js +237 -0
- package/build/dist/Server/Utils/PasswordHash.js.map +1 -0
- package/build/dist/Types/Database/ColumnLength.js +9 -1
- package/build/dist/Types/Database/ColumnLength.js.map +1 -1
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Database/UnsynchronizedIndex.js +46 -0
- package/build/dist/Types/Database/UnsynchronizedIndex.js.map +1 -0
- package/build/dist/Types/HashedString.js +95 -5
- package/build/dist/Types/HashedString.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +51 -10
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +3 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +19 -7
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js +156 -0
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js.map +1 -0
- package/build/dist/Utils/TeamMembersByProject.js +145 -0
- package/build/dist/Utils/TeamMembersByProject.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,16 +1,137 @@
|
|
|
1
|
+
import Team from "../../Models/DatabaseModels/Team";
|
|
2
|
+
import TeamMember from "../../Models/DatabaseModels/TeamMember";
|
|
1
3
|
import User from "../../Models/DatabaseModels/User";
|
|
4
|
+
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
+
import LIMIT_MAX, { DEFAULT_LIMIT } from "../../Types/Database/LimitMax";
|
|
6
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
2
7
|
import NotFoundException from "../../Types/Exception/NotFoundException";
|
|
3
8
|
import ObjectID from "../../Types/ObjectID";
|
|
9
|
+
import PositiveNumber from "../../Types/PositiveNumber";
|
|
10
|
+
import TeamMembersByProject from "../../Utils/TeamMembersByProject";
|
|
11
|
+
import MasterAdminAuthorization from "../Middleware/MasterAdminAuthorization";
|
|
12
|
+
import TeamMemberService from "../Services/TeamMemberService";
|
|
4
13
|
import UserService from "../Services/UserService";
|
|
14
|
+
import CommonAPI from "./CommonAPI";
|
|
5
15
|
import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
|
|
6
16
|
import Response from "../Utils/Response";
|
|
7
17
|
import BaseAPI from "./BaseAPI";
|
|
8
18
|
const BLANK_PROFILE_PICTURE_PATH = "/usr/src/Common/UI/Images/users/blank-profile.svg";
|
|
9
19
|
export default class UserAPI extends BaseAPI {
|
|
10
20
|
constructor() {
|
|
11
|
-
var _a;
|
|
21
|
+
var _a, _b, _c;
|
|
12
22
|
super(User, UserService);
|
|
13
|
-
|
|
23
|
+
/*
|
|
24
|
+
* Every project one user belongs to, one row per project, for the Admin
|
|
25
|
+
* Dashboard's User > Projects page.
|
|
26
|
+
*
|
|
27
|
+
* There is no CRUD list that answers this. `GET /team-member` scoped to a
|
|
28
|
+
* user returns MEMBERSHIPS - a (user, team) pair - so a user on three teams
|
|
29
|
+
* of one project comes back as three rows and reads as three projects. This
|
|
30
|
+
* endpoint folds those into one row per project carrying every team the
|
|
31
|
+
* user is on there, which is both what the page renders and what any
|
|
32
|
+
* caller asking "which projects is this person in?" actually wants.
|
|
33
|
+
*
|
|
34
|
+
* Master-admin only: it deliberately reads across every tenant, which is
|
|
35
|
+
* exactly what no project-scoped caller is allowed to do. The middleware is
|
|
36
|
+
* the gate; the read below runs as root because a master admin is not a
|
|
37
|
+
* member of the projects being listed and so has no tenant permissions to
|
|
38
|
+
* read them with.
|
|
39
|
+
*/
|
|
40
|
+
this.router.post(`${(_a = new this.entityType().getCrudApiPath()) === null || _a === void 0 ? void 0 : _a.toString()}/:userId/projects`, MasterAdminAuthorization.isAuthorizedMasterAdminMiddleware, async (req, res, next) => {
|
|
41
|
+
try {
|
|
42
|
+
const userId = UserAPI.getUserIdFromParams(req);
|
|
43
|
+
const memberships = await TeamMemberService.findBy({
|
|
44
|
+
query: {
|
|
45
|
+
userId: userId,
|
|
46
|
+
},
|
|
47
|
+
select: {
|
|
48
|
+
_id: true,
|
|
49
|
+
projectId: true,
|
|
50
|
+
teamId: true,
|
|
51
|
+
hasAcceptedInvitation: true,
|
|
52
|
+
createdAt: true,
|
|
53
|
+
project: {
|
|
54
|
+
_id: true,
|
|
55
|
+
name: true,
|
|
56
|
+
slug: true,
|
|
57
|
+
},
|
|
58
|
+
team: {
|
|
59
|
+
_id: true,
|
|
60
|
+
name: true,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
limit: LIMIT_MAX,
|
|
64
|
+
skip: 0,
|
|
65
|
+
sort: {},
|
|
66
|
+
props: {
|
|
67
|
+
isRoot: true,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const rows = TeamMembersByProject.sortByProjectName(TeamMembersByProject.groupByProject(memberships));
|
|
71
|
+
const skip = UserAPI.getPositiveIntegerParam(req.query["skip"], 0);
|
|
72
|
+
const limit = UserAPI.getPositiveIntegerParam(req.query["limit"], DEFAULT_LIMIT);
|
|
73
|
+
const page = rows.slice(skip, skip + limit);
|
|
74
|
+
return Response.sendJsonArrayResponse(req, res, page.map((row) => {
|
|
75
|
+
return UserAPI.serializeUserProjectMembership(userId, row);
|
|
76
|
+
}), new PositiveNumber(rows.length));
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return next(err);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
/*
|
|
83
|
+
* Removes one user from one project - every team they belong to in it - in
|
|
84
|
+
* a single call.
|
|
85
|
+
*
|
|
86
|
+
* A row on the User > Projects page is a project, so "remove" there means
|
|
87
|
+
* "remove from the project". Doing that as N separate DELETEs from the
|
|
88
|
+
* browser is not equivalent: TeamMemberService.onBeforeDelete refuses to
|
|
89
|
+
* remove the last accepted member of a team that shouldHaveAtLeastOneMember
|
|
90
|
+
* (the Owners team), and it refuses per request - so a client-side loop
|
|
91
|
+
* deletes every other membership first and only then reports the failure,
|
|
92
|
+
* leaving the user stripped of the teams the admin was just told they had
|
|
93
|
+
* not lost. One deleteBy over the whole set runs that guard against all of
|
|
94
|
+
* the user's memberships in the project before anything is deleted.
|
|
95
|
+
*
|
|
96
|
+
* This is the master-admin twin of
|
|
97
|
+
* POST /team-member/remove-user-from-project, which takes its project from
|
|
98
|
+
* the request's tenant. A master admin is not a member of the project and
|
|
99
|
+
* sends no tenant, so the project is named in the body here - the
|
|
100
|
+
* master-admin middleware, not a tenant, is what authorizes the call.
|
|
101
|
+
*
|
|
102
|
+
* The delete runs with the CALLER'S props rather than as root, so the
|
|
103
|
+
* Owners-team and SCIM Push Groups guards still apply: a master admin can
|
|
104
|
+
* remove people, but not leave a project ownerless or fight the customer's
|
|
105
|
+
* identity provider behind its back.
|
|
106
|
+
*/
|
|
107
|
+
this.router.post(`${(_b = new this.entityType().getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/:userId/remove-from-project`, MasterAdminAuthorization.isAuthorizedMasterAdminMiddleware, async (req, res, next) => {
|
|
108
|
+
var _a;
|
|
109
|
+
try {
|
|
110
|
+
const userId = UserAPI.getUserIdFromParams(req);
|
|
111
|
+
const projectIdParam = (((_a = req.body) === null || _a === void 0 ? void 0 : _a["projectId"]) || "").trim();
|
|
112
|
+
if (!projectIdParam) {
|
|
113
|
+
return Response.sendErrorResponse(req, res, new BadDataException("Project ID is required"));
|
|
114
|
+
}
|
|
115
|
+
ObjectID.validateUUID(projectIdParam);
|
|
116
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
117
|
+
const numberOfMembershipsDeleted = await TeamMemberService.deleteBy({
|
|
118
|
+
query: {
|
|
119
|
+
userId: userId,
|
|
120
|
+
projectId: new ObjectID(projectIdParam),
|
|
121
|
+
},
|
|
122
|
+
limit: LIMIT_MAX,
|
|
123
|
+
skip: 0,
|
|
124
|
+
props: props,
|
|
125
|
+
});
|
|
126
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
127
|
+
numberOfMembershipsDeleted: numberOfMembershipsDeleted,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return next(err);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
this.router.get(`${(_c = new this.entityType().getCrudApiPath()) === null || _c === void 0 ? void 0 : _c.toString()}/profile-picture/:userId`, async (req, res) => {
|
|
14
135
|
const userIdParam = req.params["userId"];
|
|
15
136
|
if (!userIdParam) {
|
|
16
137
|
return this.sendBlankProfile(req, res);
|
|
@@ -52,6 +173,70 @@ export default class UserAPI extends BaseAPI {
|
|
|
52
173
|
}
|
|
53
174
|
});
|
|
54
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* The `:userId` in the path, rejected loudly if it is not a uuid.
|
|
178
|
+
*
|
|
179
|
+
* Validating rather than trusting matters even behind the master-admin gate:
|
|
180
|
+
* the value flows into a query, and a malformed id should fail as bad input
|
|
181
|
+
* rather than reach the database layer.
|
|
182
|
+
*/
|
|
183
|
+
static getUserIdFromParams(req) {
|
|
184
|
+
const userIdParam = (req.params["userId"] || "").trim();
|
|
185
|
+
if (!userIdParam) {
|
|
186
|
+
throw new BadDataException("User ID is required");
|
|
187
|
+
}
|
|
188
|
+
ObjectID.validateUUID(userIdParam);
|
|
189
|
+
return new ObjectID(userIdParam);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* A non-negative integer from a query string, or the fallback.
|
|
193
|
+
*
|
|
194
|
+
* Anything unparseable (missing, "abc", "-5", "1e9999") falls back rather
|
|
195
|
+
* than becoming NaN - a NaN skip/limit turns Array.slice into "return
|
|
196
|
+
* everything from 0", which would silently ignore paging instead of failing.
|
|
197
|
+
*/
|
|
198
|
+
static getPositiveIntegerParam(value, fallback) {
|
|
199
|
+
if (value === undefined || value === null || value === "") {
|
|
200
|
+
return fallback;
|
|
201
|
+
}
|
|
202
|
+
const parsed = Number(value.toString());
|
|
203
|
+
if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed < 0) {
|
|
204
|
+
return fallback;
|
|
205
|
+
}
|
|
206
|
+
return parsed;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* One grouped row as JSON.
|
|
210
|
+
*
|
|
211
|
+
* The row is sent as a TeamMember - the model the row is built from, and the
|
|
212
|
+
* one the Admin Dashboard's table is typed against - carrying the project it
|
|
213
|
+
* stands for. The aggregate fields (`teams`, the counts) are not columns of
|
|
214
|
+
* TeamMember, so they are attached after serialization; the client reads them
|
|
215
|
+
* off the raw JSON before hydrating the model.
|
|
216
|
+
*/
|
|
217
|
+
static serializeUserProjectMembership(userId, row) {
|
|
218
|
+
const teamMember = new TeamMember();
|
|
219
|
+
if (row.id) {
|
|
220
|
+
teamMember._id = row.id;
|
|
221
|
+
}
|
|
222
|
+
teamMember.userId = userId;
|
|
223
|
+
teamMember.hasAcceptedInvitation = row.hasAcceptedInvitation;
|
|
224
|
+
if (row.projectId) {
|
|
225
|
+
teamMember.projectId = row.projectId;
|
|
226
|
+
}
|
|
227
|
+
if (row.project) {
|
|
228
|
+
teamMember.project = row.project;
|
|
229
|
+
}
|
|
230
|
+
if (row.joinedAt) {
|
|
231
|
+
teamMember.createdAt = row.joinedAt;
|
|
232
|
+
}
|
|
233
|
+
const json = BaseModel.toJSON(teamMember, TeamMember);
|
|
234
|
+
json["teams"] = BaseModel.toJSONArray(row.teams, Team);
|
|
235
|
+
json["teamCount"] = row.teams.length;
|
|
236
|
+
json["pendingTeamCount"] = row.pendingTeamCount;
|
|
237
|
+
json["teamMemberIds"] = [...row.teamMemberIds];
|
|
238
|
+
return json;
|
|
239
|
+
}
|
|
55
240
|
sendBlankProfile(req, res) {
|
|
56
241
|
Response.setNoCacheHeaders(res);
|
|
57
242
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserAPI.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,kCAAkC,CAAC;AACpD,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"UserAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -279,10 +279,14 @@ export const DisableQueueWorkers = process.env["DISABLE_QUEUE_WORKERS"] === "tru
|
|
|
279
279
|
* When "false", this process does NOT run schema or data migrations on boot.
|
|
280
280
|
* Set on runtime pods (app/worker/nginx) when a dedicated one-shot migrate Job
|
|
281
281
|
* (App/Migrate.ts) owns migrations instead, so the fleet's many replicas never
|
|
282
|
-
* run them — which
|
|
283
|
-
*
|
|
282
|
+
* run them — which keeps boot DDL off pooled connections and, since the data
|
|
283
|
+
* migration runner no longer takes an advisory lock, is also what keeps two
|
|
284
|
+
* replicas from running the same migration concurrently.
|
|
285
|
+
*
|
|
284
286
|
* Default true preserves the original self-migrating-on-boot behavior used by
|
|
285
|
-
* docker-compose and any deploy that does not run the migrate Job.
|
|
287
|
+
* docker-compose and any deploy that does not run the migrate Job. Those
|
|
288
|
+
* deployments DO run several unserialized runners, so data migrations must be
|
|
289
|
+
* written to tolerate it (see Workers/Utils/DataMigration.ts).
|
|
286
290
|
*/
|
|
287
291
|
export const RunDatabaseMigrationsOnBoot = process.env["RUN_DATABASE_MIGRATIONS_ON_BOOT"] !== "false";
|
|
288
292
|
export const ClickhouseHost = Hostname.fromString(process.env["CLICKHOUSE_HOST"] || "clickhouse");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,6 +180,29 @@ export default class GlobalCache {
|
|
|
180
180
|
}
|
|
181
181
|
return Math.ceil(expiresInSeconds * (1 + Math.random() * 0.25));
|
|
182
182
|
}
|
|
183
|
+
/*
|
|
184
|
+
* Atomic compare-and-delete: drop the key only if it still holds `value`.
|
|
185
|
+
* Returns true only when this caller's value was the one removed.
|
|
186
|
+
*
|
|
187
|
+
* This is the release half of a lease taken with `setStringIfNotExists`, and
|
|
188
|
+
* the comparison is what makes the release safe. A plain `deleteKey` is a
|
|
189
|
+
* check-then-act race in disguise: if the holder overruns its TTL the key
|
|
190
|
+
* expires, a second worker legitimately acquires the lease, and the first
|
|
191
|
+
* worker's release then deletes the SECOND worker's lease — handing the same
|
|
192
|
+
* lease to a third. Comparing the holder token collapses that into one
|
|
193
|
+
* atomic evaluation, so a late release is a no-op instead of a double-grant.
|
|
194
|
+
*
|
|
195
|
+
* The key is passed as KEYS[1] rather than inlined into the script body so
|
|
196
|
+
* the script stays correct on Redis Cluster, which routes by declared keys.
|
|
197
|
+
*/
|
|
198
|
+
static async deleteKeyIfValue(namespace, key, value) {
|
|
199
|
+
const client = Redis.getClient();
|
|
200
|
+
if (!client || !Redis.isConnected()) {
|
|
201
|
+
throw new DatabaseNotConnectedException("Cache is not connected");
|
|
202
|
+
}
|
|
203
|
+
const result = await client.eval("if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end", 1, `${namespace}-${key}`, value);
|
|
204
|
+
return result === 1;
|
|
205
|
+
}
|
|
183
206
|
static async deleteKey(namespace, key) {
|
|
184
207
|
const client = Redis.getClient();
|
|
185
208
|
if (!client || !Redis.isConnected()) {
|
|
@@ -242,6 +265,12 @@ __decorate([
|
|
|
242
265
|
__metadata("design:paramtypes", [String, String, String, Object]),
|
|
243
266
|
__metadata("design:returntype", Promise)
|
|
244
267
|
], GlobalCache, "setStringIfChanged", null);
|
|
268
|
+
__decorate([
|
|
269
|
+
CaptureSpan(),
|
|
270
|
+
__metadata("design:type", Function),
|
|
271
|
+
__metadata("design:paramtypes", [String, String, String]),
|
|
272
|
+
__metadata("design:returntype", Promise)
|
|
273
|
+
], GlobalCache, "deleteKeyIfValue", null);
|
|
245
274
|
__decorate([
|
|
246
275
|
CaptureSpan(),
|
|
247
276
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalCache.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/GlobalCache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GlobalCache.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/GlobalCache.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAqB,MAAM,SAAS,CAAC;AAC5C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,6BAA6B,MAAM,qDAAqD,CAAC;AAEhG,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAMzD,MAAM,CAAC,OAAO,OAAgB,WAAW;IAEnB,AAAb,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,SAAiB,EACjB,GAAW;QAEX,MAAM,IAAI,GAAkC,MAAM,IAAI,CAAC,oBAAoB,CACzE,SAAS,EACT,GAAG,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,cAAc,CAChC,SAAiB,EACjB,GAAW;QAEX,MAAM,KAAK,GAAkB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC,KAAK,CAAa,CAAC;QAE1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,gBAAgB,CACxB,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,cAAc,CAChC,SAAiB,EACjB,GAAW,EACX,KAAe,EACf,OAAyB;QAEzB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,SAAiB,EACjB,GAAW;QAEX,MAAM,IAAI,GAAkC,MAAM,IAAI,CAAC,oBAAoB,CACzE,SAAS,EACT,GAAG,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,SAAiB,EACjB,GAAW;QAEX,MAAM,KAAK,GAAkB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,IAAI,UAAU,GAA2B,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEpE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,SAAiB,EACjB,GAAW;QAEX,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAkB,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAA,CAAC;QAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,SAAiB,EACjB,GAAW,EACX,KAAiB,EACjB,OAAyB;QAEzB,MAAM,IAAI,CAAC,SAAS,CAClB,SAAS,EACT,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC9C,OAAO,CACR,CAAC;IACJ,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,SAAiB,EACjB,GAAW,EACX,KAAa,EACb,OAAyB;;QAEzB,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,gBAAgB,GACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,mCAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAElE;;;;;WAKG;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACtC,SAAiB,EACjB,GAAW,EACX,KAAa,EACb,OAAyB;;QAEzB,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,gBAAgB,GACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,mCAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAElE,MAAM,MAAM,GAAkB,MAAM,MAAM,CAAC,GAAG,CAC5C,GAAG,SAAS,IAAI,GAAG,EAAE,EACrB,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,IAAI,CACL,CAAC;QAEF;;;;WAIG;QACH,OAAO,MAAM,KAAK,IAAI,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,SAAiB,EACjB,GAAW,EACX,KAAa,EACb,OAAyB;;QAEzB,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,gBAAgB,GACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,mCAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAElE,MAAM,MAAM,GAAY,MAAM,MAAM,CAAC,IAAI,CACvC,yDAAyD;YACvD,sEAAsE,EACxE,CAAC,EACD,GAAG,SAAS,IAAI,GAAG,EAAE,EACrB,KAAK,EACL,MAAM,CAAC,gBAAgB,CAAC,CACzB,CAAC;QAEF,OAAO,MAAM,KAAK,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,UAAU,CAAC,gBAAwB;QAC/C,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;OAcG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAClC,SAAiB,EACjB,GAAW,EACX,KAAa;QAEb,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAY,MAAM,MAAM,CAAC,IAAI,CACvC,mGAAmG,EACnG,CAAC,EACD,GAAG,SAAS,IAAI,GAAG,EAAE,EACrB,KAAK,CACN,CAAC;QAEF,OAAO,MAAM,KAAK,CAAC,CAAC;IACtB,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,GAAW;QAC1D,MAAM,MAAM,GAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CAAC,wBAAwB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AArUqB;IADnB,WAAW,EAAE;;;;sCAmBb;AAGmB;IADnB,WAAW,EAAE;;;;uCAoBb;AAGmB;IADnB,WAAW,EAAE;;;;uCAQb;AAGmB;IADnB,WAAW,EAAE;;;;qCAmBb;AAiCmB;IADnB,WAAW,EAAE;;;;kCAkBb;AAGmB;IADnB,WAAW,EAAE;;;;gCAab;AAGmB;IADnB,WAAW,EAAE;;;;kCAuBb;AAsBmB;IADnB,WAAW,EAAE;;;;6CA8Bb;AAkBmB;IADnB,WAAW,EAAE;;;;2CA0Bb;AAuCmB;IADnB,WAAW,EAAE;;;;yCAoBb;AAGmB;IADnB,WAAW,EAAE;;;;kCASb"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class AddPerUserPasswordSalt1786018109307 {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.name = "AddPerUserPasswordSalt1786018109307";
|
|
4
|
+
}
|
|
5
|
+
async up(queryRunner) {
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "User" ADD "passwordSalt" character varying(100)`);
|
|
7
|
+
await queryRunner.query(`ALTER TABLE "StatusPagePrivateUser" ADD "passwordSalt" character varying(100)`);
|
|
8
|
+
}
|
|
9
|
+
async down(queryRunner) {
|
|
10
|
+
await queryRunner.query(`ALTER TABLE "StatusPagePrivateUser" DROP COLUMN "passwordSalt"`);
|
|
11
|
+
await queryRunner.query(`ALTER TABLE "User" DROP COLUMN "passwordSalt"`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=1786018109307-AddPerUserPasswordSalt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1786018109307-AddPerUserPasswordSalt.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mCAAmC;IAAhD;QACS,SAAI,GAAG,qCAAqC,CAAC;IAiBtD,CAAC;IAfQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,8DAA8D,CAC/D,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gEAAgE,CACjE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Widen every HashedString column from varchar(64) to varchar(255).
|
|
3
|
+
*
|
|
4
|
+
* A bare SHA-256 digest is 64 hex characters, which is exactly what the old
|
|
5
|
+
* column held. User passwords are now scrypt hashes that carry the cost
|
|
6
|
+
* parameters they were produced with — `scrypt$N=16384,r=8,p=1$<64 hex>`,
|
|
7
|
+
* about 90 characters — so that raising the cost later needs no migration and
|
|
8
|
+
* no password reset. The other HashedString columns (session refresh tokens,
|
|
9
|
+
* master passwords) still store a bare digest and simply do not use the room;
|
|
10
|
+
* they are widened only because they share ColumnLength.HashedString.
|
|
11
|
+
*
|
|
12
|
+
* WHY THIS FILE IS NOT WHAT `migration:generate` PRODUCED.
|
|
13
|
+
*
|
|
14
|
+
* TypeORM does not express a varchar length change as ALTER COLUMN TYPE. It
|
|
15
|
+
* emits DROP COLUMN followed by ADD COLUMN, which for these six columns means
|
|
16
|
+
* deleting every password, every status page and dashboard master password,
|
|
17
|
+
* and every active session in the instance. The generated `up()` also had to
|
|
18
|
+
* drop and recreate the refresh-token unique constraints and indexes, purely
|
|
19
|
+
* to work around its own DROP.
|
|
20
|
+
*
|
|
21
|
+
* ALTER COLUMN TYPE to a WIDER varchar is the correct statement and is
|
|
22
|
+
* cheaper besides: Postgres skips the table rewrite entirely when a varchar
|
|
23
|
+
* is only being lengthened (no rewrite means the unique indexes survive
|
|
24
|
+
* untouched too), so this is a catalog update behind a brief ACCESS EXCLUSIVE
|
|
25
|
+
* lock rather than a full copy of six tables.
|
|
26
|
+
*
|
|
27
|
+
* The resulting schema is identical to what the generated migration would
|
|
28
|
+
* have produced, which is what `npm run check-postgres-schema-drift` verifies.
|
|
29
|
+
*/
|
|
30
|
+
const WIDENED_COLUMNS = [
|
|
31
|
+
{ table: "User", column: "password" },
|
|
32
|
+
{ table: "StatusPagePrivateUser", column: "password" },
|
|
33
|
+
{ table: "StatusPage", column: "masterPassword" },
|
|
34
|
+
{ table: "Dashboard", column: "masterPassword" },
|
|
35
|
+
{ table: "UserSession", column: "refreshToken" },
|
|
36
|
+
{ table: "StatusPagePrivateUserSession", column: "refreshToken" },
|
|
37
|
+
];
|
|
38
|
+
export class WidenHashedStringColumnsForScrypt1786023262402 {
|
|
39
|
+
constructor() {
|
|
40
|
+
this.name = "WidenHashedStringColumnsForScrypt1786023262402";
|
|
41
|
+
}
|
|
42
|
+
async up(queryRunner) {
|
|
43
|
+
for (const { table, column } of WIDENED_COLUMNS) {
|
|
44
|
+
await queryRunner.query(`ALTER TABLE "${table}" ALTER COLUMN "${column}" TYPE character varying(255)`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/*
|
|
48
|
+
* Narrowing back to 64 fails loudly if any scrypt hash has been written,
|
|
49
|
+
* because those do not fit. That is the intended behaviour: a down
|
|
50
|
+
* migration that truncated password hashes would lock every user out
|
|
51
|
+
* silently instead of refusing.
|
|
52
|
+
*/
|
|
53
|
+
async down(queryRunner) {
|
|
54
|
+
for (const { table, column } of [...WIDENED_COLUMNS].reverse()) {
|
|
55
|
+
await queryRunner.query(`ALTER TABLE "${table}" ALTER COLUMN "${column}" TYPE character varying(64)`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=1786023262402-WidenHashedStringColumnsForScrypt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1786023262402-WidenHashedStringColumnsForScrypt.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,eAAe,GAAqD;IACxE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,EAAE;IACtD,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACjD,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAChD,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE;IAChD,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,cAAc,EAAE;CAClE,CAAC;AAEF,MAAM,OAAO,8CAA8C;IAA3D;QAGS,SAAI,GAAG,gDAAgD,CAAC;IAuBjE,CAAC;IArBQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YAChD,MAAM,WAAW,CAAC,KAAK,CACrB,gBAAgB,KAAK,mBAAmB,MAAM,+BAA+B,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,MAAM,WAAW,CAAC,KAAK,CACrB,gBAAgB,KAAK,mBAAmB,MAAM,8BAA8B,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Restores the expression index that serves the telemetry ingest path's
|
|
3
|
+
* `service.name` lookup, and that an autogenerated migration deleted.
|
|
4
|
+
*
|
|
5
|
+
* WHAT BROKE
|
|
6
|
+
*
|
|
7
|
+
* `OTelIngestService.findOrCreateTelemetryService` resolves an OTLP resource's
|
|
8
|
+
* `service.name` to a Service row through `QueryHelper.findWithSameText`, which
|
|
9
|
+
* emits a case-insensitive predicate:
|
|
10
|
+
*
|
|
11
|
+
* WHERE "projectId" = $1 AND LOWER("name") = $2 AND "deletedAt" IS NULL
|
|
12
|
+
* ORDER BY "createdAt" ASC LIMIT 1
|
|
13
|
+
*
|
|
14
|
+
* Every live index on Service is over the RAW `name` column. Postgres cannot
|
|
15
|
+
* invert `lower()` (it is not order-preserving under any non-C collation) and
|
|
16
|
+
* PG16 has no index-condition pushdown, so `LOWER("name") = $2` degrades to a
|
|
17
|
+
* post-heap-fetch Filter. Only the `projectId` prefix acts as an index qual,
|
|
18
|
+
* which makes each lookup cost O(services in that project) heap fetches plus
|
|
19
|
+
* that many collation-aware lower() calls — not O(log n).
|
|
20
|
+
*
|
|
21
|
+
* That query runs once per OTLP *resource* (hundreds per batch for the shipped
|
|
22
|
+
* host-metrics collector config), again per signal type, from every ingest pod.
|
|
23
|
+
* Production sat at 100% CPU against a 100% buffer cache hit ratio and ~110 B/s
|
|
24
|
+
* of reads: entirely in memory, entirely CPU.
|
|
25
|
+
*
|
|
26
|
+
* WHY IT BROKE
|
|
27
|
+
*
|
|
28
|
+
* The correct index existed. Migration 1774559064921 created:
|
|
29
|
+
*
|
|
30
|
+
* CREATE UNIQUE INDEX "IDX_SERVICE_PROJECT_NAME_UNIQUE"
|
|
31
|
+
* ON "Service" ("projectId", LOWER("name")) WHERE "deletedAt" IS NULL
|
|
32
|
+
*
|
|
33
|
+
* Migration 1775735059360 — otherwise two unrelated column-default changes —
|
|
34
|
+
* dropped it. TypeORM's schema builder matches database indexes to entity
|
|
35
|
+
* metadata BY NAME and drops any it cannot find, and a hand-named expression
|
|
36
|
+
* index created only in a migration is invisible to entity metadata. Its down()
|
|
37
|
+
* "restores" the index as ("projectId") alone, silently losing the expression,
|
|
38
|
+
* which is the signature of a machine-generated statement rather than a
|
|
39
|
+
* deliberate one.
|
|
40
|
+
*
|
|
41
|
+
* The Service entity now declares this index with `synchronize: false`, which
|
|
42
|
+
* makes the schema builder skip it in both directions. Without that decorator
|
|
43
|
+
* this migration would be undone again by the next autogenerated one.
|
|
44
|
+
*
|
|
45
|
+
* WHY THIS IS HAND-WRITTEN
|
|
46
|
+
*
|
|
47
|
+
* AGENTS.md requires migrations to come from `npm run generate-postgres-migration`.
|
|
48
|
+
* That cannot produce this one: `@Index()` has no way to express `LOWER(...)`,
|
|
49
|
+
* so TypeORM can neither generate nor round-trip an expression index. The
|
|
50
|
+
* generator is authoritative for column and table drift; expression indexes are
|
|
51
|
+
* outside what it can model.
|
|
52
|
+
*
|
|
53
|
+
* NOT UNIQUE, DELIBERATELY
|
|
54
|
+
*
|
|
55
|
+
* The dropped original was UNIQUE. Recreating it that way would make this
|
|
56
|
+
* migration fail on any project that already holds two services whose names
|
|
57
|
+
* differ only by case — which the surviving raw-name unique index permits, so
|
|
58
|
+
* such rows can legitimately exist today. Failing a deploy to enforce an
|
|
59
|
+
* invariant nobody is currently relying on is the wrong trade: this index
|
|
60
|
+
* exists to make the lookup fast. `ORDER BY "createdAt" ASC LIMIT 1` in the
|
|
61
|
+
* query already resolves duplicates deterministically (oldest wins), and the
|
|
62
|
+
* raw-name unique index still blocks exact-duplicate races. Restoring
|
|
63
|
+
* case-insensitive uniqueness would need a dedupe pass first, as migration
|
|
64
|
+
* 1778100000000 did, and belongs in its own change.
|
|
65
|
+
*
|
|
66
|
+
* `createdAt` is the third key column so the ORDER BY is satisfied by the index
|
|
67
|
+
* itself and the plan carries no Sort node even when duplicates exist.
|
|
68
|
+
*
|
|
69
|
+
* NOT CONCURRENT, DELIBERATELY
|
|
70
|
+
*
|
|
71
|
+
* DataSourceOptions sets no `migrationsTransactionMode`, so TypeORM defaults to
|
|
72
|
+
* "all" and runs every migration inside ONE transaction. `CREATE INDEX
|
|
73
|
+
* CONCURRENTLY` cannot run inside a transaction block and would abort the whole
|
|
74
|
+
* run. A plain CREATE INDEX takes a SHARE lock that blocks writes to Service
|
|
75
|
+
* for the duration, which is milliseconds at this table's size (thousands of
|
|
76
|
+
* live rows).
|
|
77
|
+
*
|
|
78
|
+
* IF NOT EXISTS makes this a no-op when an operator has already created the
|
|
79
|
+
* index by hand — the recommended incident mitigation is to build it
|
|
80
|
+
* CONCURRENTLY on the live database under this exact name, ahead of the deploy.
|
|
81
|
+
*/
|
|
82
|
+
export class RestoreServiceLowerNameIndex1786100000000 {
|
|
83
|
+
constructor() {
|
|
84
|
+
this.name = "RestoreServiceLowerNameIndex1786100000000";
|
|
85
|
+
}
|
|
86
|
+
async up(queryRunner) {
|
|
87
|
+
await queryRunner.query(`CREATE INDEX IF NOT EXISTS "IDX_SERVICE_PROJECT_LOWER_NAME" ON "Service" ("projectId", LOWER("name"), "createdAt") WHERE "deletedAt" IS NULL`);
|
|
88
|
+
}
|
|
89
|
+
async down(queryRunner) {
|
|
90
|
+
await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_SERVICE_PROJECT_LOWER_NAME"`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=1786100000000-RestoreServiceLowerNameIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1786100000000-RestoreServiceLowerNameIndex.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,MAAM,OAAO,yCAAyC;IAAtD;QAGS,SAAI,GAAW,2CAA2C,CAAC;IAapE,CAAC;IAXQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,8IAA8I,CAC/I,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gEAAgE,CACjE,CAAC;IACJ,CAAC;CACF"}
|