Add missing imports

This commit is contained in:
Fang-Pen Lin
2025-10-31 10:47:45 -07:00
parent 27e88d186d
commit 2cb38dae05
5 changed files with 62 additions and 20 deletions

View File

@@ -266,6 +266,24 @@ import {
TOrgRoles,
TOrgRolesInsert,
TOrgRolesUpdate,
TPkiAcmeAccounts,
TPkiAcmeAccountsInsert,
TPkiAcmeAccountsUpdate,
TPkiAcmeAuths,
TPkiAcmeAuthsInsert,
TPkiAcmeAuthsUpdate,
TPkiAcmeChallenges,
TPkiAcmeChallengesInsert,
TPkiAcmeChallengesUpdate,
TPkiAcmeEnrollmentConfigs,
TPkiAcmeEnrollmentConfigsInsert,
TPkiAcmeEnrollmentConfigsUpdate,
TPkiAcmeOrderAuths,
TPkiAcmeOrderAuthsInsert,
TPkiAcmeOrderAuthsUpdate,
TPkiAcmeOrders,
TPkiAcmeOrdersInsert,
TPkiAcmeOrdersUpdate,
TPkiAlerts,
TPkiAlertsInsert,
TPkiAlertsUpdate,
@@ -287,9 +305,6 @@ import {
TPkiEstEnrollmentConfigs,
TPkiEstEnrollmentConfigsInsert,
TPkiEstEnrollmentConfigsUpdate,
TPkiAcmeEnrollmentConfigs,
TPkiAcmeEnrollmentConfigsInsert,
TPkiAcmeEnrollmentConfigsUpdate,
TPkiSubscribers,
TPkiSubscribersInsert,
TPkiSubscribersUpdate,

View File

@@ -28,11 +28,6 @@ export enum TableName {
PkiEstEnrollmentConfig = "pki_est_enrollment_configs",
PkiApiEnrollmentConfig = "pki_api_enrollment_configs",
PkiAcmeEnrollmentConfig = "pki_acme_enrollment_configs",
PkiAcmeAccount = "pki_acme_accounts",
PkiAcmeOrder = "pki_acme_orders",
PkiAcmeOrderAuth = "pki_acme_order_auths",
PkiAcmeAuth = "pki_acme_auths",
PkiAcmeChallenge = "pki_acme_challenges",
PkiSubscriber = "pki_subscribers",
PkiAlert = "pki_alerts",
PkiCollection = "pki_collections",
@@ -216,7 +211,14 @@ export enum TableName {
PamAccount = "pam_accounts",
PamSession = "pam_sessions",
VaultExternalMigrationConfig = "vault_external_migration_configs"
VaultExternalMigrationConfig = "vault_external_migration_configs",
// PKI ACME
PkiAcmeAccount = "pki_acme_accounts",
PkiAcmeOrder = "pki_acme_orders",
PkiAcmeOrderAuth = "pki_acme_order_auths",
PkiAcmeAuth = "pki_acme_auths",
PkiAcmeChallenge = "pki_acme_challenges"
}
export type TImmutableDBKeys = "id" | "createdAt" | "updatedAt" | "commitId";

View File

@@ -1,5 +1,5 @@
import { TDbClient } from "@app/db";
import { TableName } from "@app/db/schemas";
import { TableName, TPkiAcmeAccounts, TPkiAcmeAuths } from "@app/db/schemas";
import { DatabaseError } from "@app/lib/errors";
import { ormify, selectAllTableCols, sqlNestRelationships } from "@app/lib/knex";
import { Knex } from "knex";
@@ -34,9 +34,14 @@ export const pkiAcmeChallengeDALFactory = (db: TDbClient) => {
throw new DatabaseError({ error, name: "Find PKI ACME challenge by account id, auth id and challenge id" });
}
};
const findByIdWithAuthForUpdate = async (id: string, tx?: Knex) => {
const findByIdForChallengeValidation = async (id: string, tx?: Knex) => {
const rows = await (tx || db)(TableName.PkiAcmeChallenge)
.join(TableName.PkiAcmeAuth, `${TableName.PkiAcmeChallenge}.authId`, `${TableName.PkiAcmeAuth}.id`)
.join<TPkiAcmeAuths>(TableName.PkiAcmeAuth, `${TableName.PkiAcmeChallenge}.authId`, `${TableName.PkiAcmeAuth}.id`)
.join<TPkiAcmeAccounts>(
TableName.PkiAcmeAccount,
`${TableName.PkiAcmeAuth}.accountId`,
`${TableName.PkiAcmeAccount}.id`
)
.select(
selectAllTableCols(TableName.PkiAcmeChallenge),
db.ref("id").withSchema(TableName.PkiAcmeAuth).as("authId"),
@@ -44,7 +49,9 @@ export const pkiAcmeChallengeDALFactory = (db: TDbClient) => {
db.ref("status").withSchema(TableName.PkiAcmeAuth).as("authStatus"),
db.ref("identifierType").withSchema(TableName.PkiAcmeAuth).as("authIdentifierType"),
db.ref("identifierValue").withSchema(TableName.PkiAcmeAuth).as("authIdentifierValue"),
db.ref("expiresAt").withSchema(TableName.PkiAcmeAuth).as("authExpiresAt")
db.ref("expiresAt").withSchema(TableName.PkiAcmeAuth).as("authExpiresAt"),
db.ref("id").withSchema(TableName.PkiAcmeAccount).as("accountId"),
db.ref("publicKeyThumbprint").withSchema(TableName.PkiAcmeAccount).as("accountPublicKeyThumbprint")
)
// For all challenges, acquire update lock on the auth to avoid race conditions
.forUpdate(TableName.PkiAcmeAuth)
@@ -68,7 +75,17 @@ export const pkiAcmeChallengeDALFactory = (db: TDbClient) => {
identifierType: authIdentifierType,
identifierValue: authIdentifierValue,
expiresAt: authExpiresAt
})
}),
childrenMapper: [
{
key: "accountId",
label: "account" as const,
mapper: ({ accountId, accountPublicKeyThumbprint }) => ({
id: accountId,
publicKeyThumbprint: accountPublicKeyThumbprint
})
}
]
}
]
})?.[0];
@@ -77,6 +94,6 @@ export const pkiAcmeChallengeDALFactory = (db: TDbClient) => {
return {
...pkiAcmeChallengeOrm,
findByAccountAuthAndChallengeIdWithToken,
findByIdWithAuthForUpdate
findByIdForChallengeValidation
};
};

View File

@@ -6,7 +6,7 @@ import { getConfig } from "@app/lib/config/env";
import { calculateJwkThumbprint } from "jose";
type TPkiAcmeChallengeServiceFactoryDep = {
acmeChallengeDAL: Pick<TPkiAcmeChallengeDALFactory, "transaction" | "findByIdWithAuthForUpdate">;
acmeChallengeDAL: Pick<TPkiAcmeChallengeDALFactory, "transaction" | "findByIdForChallengeValidation">;
};
export const pkiAcmeChallengeServiceFactory = ({
@@ -16,7 +16,7 @@ export const pkiAcmeChallengeServiceFactory = ({
const validateChallengeResponse = async (challengeId: string): Promise<void> => {
return await acmeChallengeDAL.transaction(async (tx) => {
const challenge = await acmeChallengeDAL.findByIdWithAuthForUpdate(challengeId, tx);
const challenge = await acmeChallengeDAL.findByIdForChallengeValidation(challengeId, tx);
if (!challenge) {
throw new NotFoundError({ message: "ACME challenge not found" });
}

View File

@@ -1,7 +1,7 @@
import { Knex } from "knex";
import { TDbClient } from "@app/db";
import { TableName } from "@app/db/schemas";
import { TableName, TPkiAcmeAuths, TPkiAcmeOrderAuths } from "@app/db/schemas";
import { DatabaseError } from "@app/lib/errors";
import { ormify, selectAllTableCols, sqlNestRelationships } from "@app/lib/knex";
@@ -13,8 +13,16 @@ export const pkiAcmeOrderDALFactory = (db: TDbClient) => {
const findByAccountAndOrderIdWithAuthorizations = async (accountId: string, orderId: string, tx?: Knex) => {
try {
const rows = await (tx || db)(TableName.PkiAcmeOrder)
.join(TableName.PkiAcmeOrderAuth, `${TableName.PkiAcmeOrderAuth}.orderId`, `${TableName.PkiAcmeOrder}.id`)
.join(TableName.PkiAcmeAuth, `${TableName.PkiAcmeOrderAuth}.authId`, `${TableName.PkiAcmeAuth}.id`)
.join<TPkiAcmeOrderAuths>(
TableName.PkiAcmeOrderAuth,
`${TableName.PkiAcmeOrderAuth}.orderId`,
`${TableName.PkiAcmeOrder}.id`
)
.join<TPkiAcmeAuths>(
TableName.PkiAcmeAuth,
`${TableName.PkiAcmeOrderAuth}.authId`,
`${TableName.PkiAcmeAuth}.id`
)
.select(
selectAllTableCols(TableName.PkiAcmeOrder),
db.ref("id").withSchema(TableName.PkiAcmeAuth).as("authId"),