From 6d5bed756aa83bf1ff65821332df7b08652779c0 Mon Sep 17 00:00:00 2001 From: x032205 Date: Mon, 18 Aug 2025 23:57:31 +0800 Subject: [PATCH 01/40] feat(identities): Universal Auth Login Lockout --- .../20250815022242_identity-lockouts.ts | 25 ++ .../db/schemas/identity-universal-auths.ts | 6 +- .../ee/services/audit-log/audit-log-types.ts | 17 ++ backend/src/keystore/keystore.ts | 3 +- backend/src/lib/api-docs/constants.ts | 12 +- backend/src/server/routes/index.ts | 6 +- .../src/server/routes/v1/identity-router.ts | 3 +- .../v1/identity-universal-auth-router.ts | 83 +++++- .../identity-ua/identity-ua-service.ts | 245 +++++++++++++----- .../services/identity-ua/identity-ua-types.ts | 12 + .../src/services/identity/identity-service.ts | 20 +- frontend/src/components/v2/Button/Button.tsx | 2 +- .../src/hooks/api/auditLogs/constants.tsx | 1 + frontend/src/hooks/api/auditLogs/enums.tsx | 1 + frontend/src/hooks/api/auditLogs/types.tsx | 9 + .../src/hooks/api/identities/mutations.tsx | 44 +++- frontend/src/hooks/api/identities/queries.tsx | 4 +- frontend/src/hooks/api/identities/types.ts | 17 ++ .../IdentityUniversalAuthForm.tsx | 151 ++++++++++- .../components/IdentitySection/types/index.ts | 1 + .../IdentityDetailsByIDPage.tsx | 3 +- .../IdentityAuthenticationSection.tsx | 16 +- .../ViewIdentityAuthModal.tsx | 9 +- .../ViewIdentityUniversalAuthContent.tsx | 61 ++++- .../ViewIdentityAuthModal/types/index.ts | 1 + 25 files changed, 644 insertions(+), 108 deletions(-) create mode 100644 backend/src/db/migrations/20250815022242_identity-lockouts.ts diff --git a/backend/src/db/migrations/20250815022242_identity-lockouts.ts b/backend/src/db/migrations/20250815022242_identity-lockouts.ts new file mode 100644 index 000000000..7b27296dd --- /dev/null +++ b/backend/src/db/migrations/20250815022242_identity-lockouts.ts @@ -0,0 +1,25 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { + await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { + t.boolean("lockoutEnabled").notNullable().defaultTo(true); + t.integer("lockoutThreshold").notNullable().defaultTo(3); + t.integer("lockoutDuration").notNullable().defaultTo(300); // 5 minutes (in seconds) + t.integer("lockoutCounterReset").notNullable().defaultTo(30); // 30 seconds + }); + } +} + +export async function down(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { + await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { + t.dropColumn("lockoutEnabled"); + t.dropColumn("lockoutThreshold"); + t.dropColumn("lockoutDuration"); + t.dropColumn("lockoutCounterReset"); + }); + } +} diff --git a/backend/src/db/schemas/identity-universal-auths.ts b/backend/src/db/schemas/identity-universal-auths.ts index da27b4a55..e42c886c6 100644 --- a/backend/src/db/schemas/identity-universal-auths.ts +++ b/backend/src/db/schemas/identity-universal-auths.ts @@ -18,7 +18,11 @@ export const IdentityUniversalAuthsSchema = z.object({ createdAt: z.date(), updatedAt: z.date(), identityId: z.string().uuid(), - accessTokenPeriod: z.coerce.number().default(0) + accessTokenPeriod: z.coerce.number().default(0), + lockoutEnabled: z.boolean().default(true), + lockoutThreshold: z.number().default(3), + lockoutDuration: z.number().default(300), + lockoutCounterReset: z.number().default(30) }); export type TIdentityUniversalAuths = z.infer; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 11d045eb2..622bac031 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -198,6 +198,7 @@ export enum EventType { CREATE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "create-identity-universal-auth-client-secret", REVOKE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "revoke-identity-universal-auth-client-secret", + CLEAR_IDENTITY_UNIVERSAL_AUTH_LOCKOUTS = "clear-identity-universal-auth-lockouts", GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRETS = "get-identity-universal-auth-client-secret", GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET_BY_ID = "get-identity-universal-auth-client-secret-by-id", @@ -866,6 +867,10 @@ interface AddIdentityUniversalAuthEvent { accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; accessTokenTrustedIps: Array; + lockoutEnabled: boolean; + lockoutThreshold: number; + lockoutDuration: number; + lockoutCounterReset: number; }; } @@ -878,6 +883,10 @@ interface UpdateIdentityUniversalAuthEvent { accessTokenMaxTTL?: number; accessTokenNumUsesLimit?: number; accessTokenTrustedIps?: Array; + lockoutEnabled?: boolean; + lockoutThreshold?: number; + lockoutDuration?: number; + lockoutCounterReset?: number; }; } @@ -1037,6 +1046,13 @@ interface RevokeIdentityUniversalAuthClientSecretEvent { }; } +interface ClearIdentityUniversalAuthLockoutsEvent { + type: EventType.CLEAR_IDENTITY_UNIVERSAL_AUTH_LOCKOUTS; + metadata: { + identityId: string; + }; +} + interface LoginIdentityGcpAuthEvent { type: EventType.LOGIN_IDENTITY_GCP_AUTH; metadata: { @@ -3491,6 +3507,7 @@ export type Event = | GetIdentityUniversalAuthClientSecretsEvent | GetIdentityUniversalAuthClientSecretByIdEvent | RevokeIdentityUniversalAuthClientSecretEvent + | ClearIdentityUniversalAuthLockoutsEvent | LoginIdentityGcpAuthEvent | AddIdentityGcpAuthEvent | DeleteIdentityGcpAuthEvent diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index 26aff767e..3f7b8dc9f 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -13,7 +13,8 @@ export const PgSqlLock = { SecretRotationV2Creation: (folderId: string) => pgAdvisoryLockHashText(`secret-rotation-v2-creation:${folderId}`), CreateProject: (orgId: string) => pgAdvisoryLockHashText(`create-project:${orgId}`), CreateFolder: (envId: string, projectId: string) => pgAdvisoryLockHashText(`create-folder:${envId}-${projectId}`), - SshInit: (projectId: string) => pgAdvisoryLockHashText(`ssh-bootstrap:${projectId}`) + SshInit: (projectId: string) => pgAdvisoryLockHashText(`ssh-bootstrap:${projectId}`), + IdentityLogin: (identityId: string, nonce: string) => pgAdvisoryLockHashText(`identity-login:${identityId}:${nonce}`) } as const; // all the key prefixes used must be set here to avoid conflict diff --git a/backend/src/lib/api-docs/constants.ts b/backend/src/lib/api-docs/constants.ts index 0cc272f15..80a717753 100644 --- a/backend/src/lib/api-docs/constants.ts +++ b/backend/src/lib/api-docs/constants.ts @@ -166,7 +166,11 @@ export const UNIVERSAL_AUTH = { accessTokenNumUsesLimit: "The maximum number of times that an access token can be used; a value of 0 implies infinite number of uses.", accessTokenPeriod: - "The period for an access token in seconds. This value will be referenced at renewal time. Default value is 0." + "The period for an access token in seconds. This value will be referenced at renewal time. Default value is 0.", + lockoutEnabled: "Whether the lockout feature is enabled.", + lockoutThreshold: "The amount of times login must fail before locking the identity auth method.", + lockoutDuration: "How long an identity auth method lockout lasts.", + lockoutCounterReset: "How long to wait from the most recent failed login until resetting the lockout counter." }, RETRIEVE: { identityId: "The ID of the identity to retrieve the auth method for." @@ -181,7 +185,11 @@ export const UNIVERSAL_AUTH = { accessTokenTTL: "The new lifetime for an access token in seconds.", accessTokenMaxTTL: "The new maximum lifetime for an access token in seconds.", accessTokenNumUsesLimit: "The new maximum number of times that an access token can be used.", - accessTokenPeriod: "The new period for an access token in seconds." + accessTokenPeriod: "The new period for an access token in seconds.", + lockoutEnabled: "Whether the lockout feature is enabled.", + lockoutThreshold: "The amount of times login must fail before locking the identity auth method.", + lockoutDuration: "How long an identity auth method lockout lasts.", + lockoutCounterReset: "How long to wait from the most recent failed login until resetting the lockout counter." }, CREATE_CLIENT_SECRET: { identityId: "The ID of the identity to create a client secret for.", diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 8be9f3034..0455a4da0 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1454,7 +1454,8 @@ export const registerRoutes = async ( identityOrgMembershipDAL, identityProjectDAL, licenseService, - identityMetadataDAL + identityMetadataDAL, + keyStore }); const identityAuthTemplateService = identityAuthTemplateServiceFactory({ @@ -1508,7 +1509,8 @@ export const registerRoutes = async ( identityAccessTokenDAL, identityUaClientSecretDAL, identityUaDAL, - licenseService + licenseService, + keyStore }); const identityKubernetesAuthService = identityKubernetesAuthServiceFactory({ diff --git a/backend/src/server/routes/v1/identity-router.ts b/backend/src/server/routes/v1/identity-router.ts index c0578fc0a..ad0411b8c 100644 --- a/backend/src/server/routes/v1/identity-router.ts +++ b/backend/src/server/routes/v1/identity-router.ts @@ -250,7 +250,8 @@ export const registerIdentityRouter = async (server: FastifyZodProvider) => { description: true }).optional(), identity: IdentitiesSchema.pick({ name: true, id: true, hasDeleteProtection: true }).extend({ - authMethods: z.array(z.string()) + authMethods: z.array(z.string()), + activeLockoutAuthMethods: z.array(z.string()) }) }) }) diff --git a/backend/src/server/routes/v1/identity-universal-auth-router.ts b/backend/src/server/routes/v1/identity-universal-auth-router.ts index 09fffbff8..f0fefb4d8 100644 --- a/backend/src/server/routes/v1/identity-universal-auth-router.ts +++ b/backend/src/server/routes/v1/identity-universal-auth-router.ts @@ -137,7 +137,16 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { .min(0) .default(0) .describe(UNIVERSAL_AUTH.ATTACH.accessTokenNumUsesLimit), - accessTokenPeriod: z.number().int().min(0).default(0).describe(UNIVERSAL_AUTH.ATTACH.accessTokenPeriod) + accessTokenPeriod: z.number().int().min(0).default(0).describe(UNIVERSAL_AUTH.ATTACH.accessTokenPeriod), + lockoutEnabled: z.boolean().default(true).describe(UNIVERSAL_AUTH.ATTACH.lockoutEnabled), + lockoutThreshold: z.number().min(1).max(30).default(3).describe(UNIVERSAL_AUTH.ATTACH.lockoutThreshold), + lockoutDuration: z.number().min(30).max(86400).default(300).describe(UNIVERSAL_AUTH.ATTACH.lockoutDuration), + lockoutCounterReset: z + .number() + .min(5) + .max(3600) + .default(30) + .describe(UNIVERSAL_AUTH.ATTACH.lockoutCounterReset) }) .refine( (val) => val.accessTokenTTL <= val.accessTokenMaxTTL, @@ -171,7 +180,11 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { accessTokenMaxTTL: identityUniversalAuth.accessTokenMaxTTL, accessTokenTrustedIps: identityUniversalAuth.accessTokenTrustedIps as TIdentityTrustedIp[], clientSecretTrustedIps: identityUniversalAuth.clientSecretTrustedIps as TIdentityTrustedIp[], - accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit + accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit, + lockoutEnabled: identityUniversalAuth.lockoutEnabled, + lockoutThreshold: identityUniversalAuth.lockoutThreshold, + lockoutDuration: identityUniversalAuth.lockoutDuration, + lockoutCounterReset: identityUniversalAuth.lockoutCounterReset } } }); @@ -243,7 +256,16 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { .min(0) .max(315360000) .optional() - .describe(UNIVERSAL_AUTH.UPDATE.accessTokenPeriod) + .describe(UNIVERSAL_AUTH.UPDATE.accessTokenPeriod), + lockoutEnabled: z.boolean().optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutEnabled), + lockoutThreshold: z.number().min(1).max(30).optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutThreshold), + lockoutDuration: z.number().min(30).max(86400).optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutDuration), + lockoutCounterReset: z + .number() + .min(5) + .max(3600) + .optional() + .describe(UNIVERSAL_AUTH.UPDATE.lockoutCounterReset) }) .refine( (val) => (val.accessTokenMaxTTL && val.accessTokenTTL ? val.accessTokenTTL <= val.accessTokenMaxTTL : true), @@ -276,7 +298,11 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { accessTokenMaxTTL: identityUniversalAuth.accessTokenMaxTTL, accessTokenTrustedIps: identityUniversalAuth.accessTokenTrustedIps as TIdentityTrustedIp[], clientSecretTrustedIps: identityUniversalAuth.clientSecretTrustedIps as TIdentityTrustedIp[], - accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit + accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit, + lockoutEnabled: identityUniversalAuth.lockoutEnabled, + lockoutThreshold: identityUniversalAuth.lockoutThreshold, + lockoutDuration: identityUniversalAuth.lockoutDuration, + lockoutCounterReset: identityUniversalAuth.lockoutCounterReset } } }); @@ -594,4 +620,53 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { return { clientSecretData }; } }); + + server.route({ + method: "POST", + url: "/universal-auth/identities/:identityId/clear-lockouts", + config: { + rateLimit: writeLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + hide: false, + tags: [ApiDocsTags.UniversalAuth], + description: "Clear Universal Auth Lockouts for identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string().describe(UNIVERSAL_AUTH.REVOKE_CLIENT_SECRET.identityId) + }), + response: { + 200: z.object({ + deleted: z.number() + }) + } + }, + handler: async (req) => { + const clearLockoutsData = await server.services.identityUa.clearUniversalAuthLockouts({ + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId, + identityId: req.params.identityId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: clearLockoutsData.orgId, + event: { + type: EventType.CLEAR_IDENTITY_UNIVERSAL_AUTH_LOCKOUTS, + metadata: { + identityId: clearLockoutsData.identityId + } + } + }); + + return clearLockoutsData; + } + }); }; diff --git a/backend/src/services/identity-ua/identity-ua-service.ts b/backend/src/services/identity-ua/identity-ua-service.ts index cd7211b5c..02594c22f 100644 --- a/backend/src/services/identity-ua/identity-ua-service.ts +++ b/backend/src/services/identity-ua/identity-ua-service.ts @@ -8,6 +8,7 @@ import { validatePrivilegeChangeOperation } from "@app/ee/services/permission/permission-fns"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; +import { PgSqlLock, TKeyStoreFactory } from "@app/keystore/keystore"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; import { BadRequestError, NotFoundError, PermissionBoundaryError, UnauthorizedError } from "@app/lib/errors"; @@ -22,6 +23,7 @@ import { TIdentityUaClientSecretDALFactory } from "./identity-ua-client-secret-d import { TIdentityUaDALFactory } from "./identity-ua-dal"; import { TAttachUaDTO, + TClearUaLockoutsDTO, TCreateUaClientSecretDTO, TGetUaClientSecretsDTO, TGetUaDTO, @@ -38,30 +40,30 @@ type TIdentityUaServiceFactoryDep = { identityOrgMembershipDAL: TIdentityOrgDALFactory; permissionService: Pick; licenseService: Pick; + keyStore: Pick; }; export type TIdentityUaServiceFactory = ReturnType; +type LockoutObject = { + lockedOut: boolean; + failedAttempts: number; +}; + export const identityUaServiceFactory = ({ identityUaDAL, identityUaClientSecretDAL, identityAccessTokenDAL, identityOrgMembershipDAL, permissionService, - licenseService + licenseService, + keyStore }: TIdentityUaServiceFactoryDep) => { const login = async (clientId: string, clientSecret: string, ip: string) => { const identityUa = await identityUaDAL.findOne({ clientId }); if (!identityUa) { - throw new NotFoundError({ - message: "No identity with specified client ID was found" - }); - } - - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityUa.identityId }); - if (!identityMembershipOrg) { - throw new NotFoundError({ - message: "No identity with the org membership was found" + throw new UnauthorizedError({ + message: "Invalid credentials" }); } @@ -69,69 +71,119 @@ export const identityUaServiceFactory = ({ ipAddress: ip, trustedIps: identityUa.clientSecretTrustedIps as TIp[] }); - const clientSecretPrefix = clientSecret.slice(0, 4); - const clientSecrtInfo = await identityUaClientSecretDAL.find({ - identityUAId: identityUa.id, - isClientSecretRevoked: false, - clientSecretPrefix - }); - let validClientSecretInfo: (typeof clientSecrtInfo)[0] | null = null; - for await (const info of clientSecrtInfo) { - const isMatch = await crypto.hashing().compareHash(clientSecret, info.clientSecretHash); + const LOCKOUT_KEY = `lockout:identity:${identityUa.identityId}:${IdentityAuthMethod.UNIVERSAL_AUTH}:${clientId}`; - if (isMatch) { - validClientSecretInfo = info; - break; - } + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityUa.identityId }); + if (!identityMembershipOrg) { + throw new UnauthorizedError({ + message: "Invalid credentials" + }); } - if (!validClientSecretInfo) throw new UnauthorizedError({ message: "Invalid credentials" }); + const identityTx = await identityUaDAL.transaction(async (tx) => { + await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.IdentityLogin(identityUa.identityId, clientId)]); - const { clientSecretTTL, clientSecretNumUses, clientSecretNumUsesLimit } = validClientSecretInfo; - if (Number(clientSecretTTL) > 0) { - const clientSecretCreated = new Date(validClientSecretInfo.createdAt); - const ttlInMilliseconds = Number(clientSecretTTL) * 1000; - const currentDate = new Date(); - const expirationTime = new Date(clientSecretCreated.getTime() + ttlInMilliseconds); + // Lockout Check + const lockoutRaw = await keyStore.getItem(LOCKOUT_KEY); - if (currentDate > expirationTime) { + let lockout: LockoutObject | undefined; + if (lockoutRaw) { + lockout = JSON.parse(lockoutRaw) as LockoutObject; + } + + if (lockout && lockout.lockedOut) { + throw new UnauthorizedError({ + message: "This identity auth method is temporarily locked, please try again later" + }); + } + + const clientSecretPrefix = clientSecret.slice(0, 4); + const clientSecretInfo = await identityUaClientSecretDAL.find({ + identityUAId: identityUa.id, + isClientSecretRevoked: false, + clientSecretPrefix + }); + + let validClientSecretInfo: (typeof clientSecretInfo)[0] | null = null; + for await (const info of clientSecretInfo) { + const isMatch = await crypto.hashing().compareHash(clientSecret, info.clientSecretHash); + + if (isMatch) { + validClientSecretInfo = info; + break; + } + } + + if (!validClientSecretInfo) { + if (identityUa.lockoutEnabled) { + if (!lockout) { + lockout = { + lockedOut: false, + failedAttempts: 0 + }; + } + + lockout.failedAttempts += 1; + if (lockout.failedAttempts >= identityUa.lockoutThreshold) { + lockout.lockedOut = true; + } + + await keyStore.setItemWithExpiry( + LOCKOUT_KEY, + lockout.lockedOut ? identityUa.lockoutDuration : identityUa.lockoutCounterReset, + JSON.stringify(lockout) + ); + } + + throw new UnauthorizedError({ message: "Invalid credentials" }); + } else if (lockout) { + await keyStore.deleteItem(LOCKOUT_KEY); + } + + const { clientSecretTTL, clientSecretNumUses, clientSecretNumUsesLimit } = validClientSecretInfo; + if (Number(clientSecretTTL) > 0) { + const clientSecretCreated = new Date(validClientSecretInfo.createdAt); + const ttlInMilliseconds = Number(clientSecretTTL) * 1000; + const currentDate = new Date(); + const expirationTime = new Date(clientSecretCreated.getTime() + ttlInMilliseconds); + + if (currentDate > expirationTime) { + await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { + isClientSecretRevoked: true + }); + + throw new UnauthorizedError({ + message: "Access denied due to expired client secret" + }); + } + } + + if (clientSecretNumUsesLimit > 0 && clientSecretNumUses === clientSecretNumUsesLimit) { + // number of times client secret can be used for + // a login operation reached await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { isClientSecretRevoked: true }); - throw new UnauthorizedError({ - message: "Access denied due to expired client secret" + message: "Access denied due to client secret usage limit reached" }); } - } - if (clientSecretNumUsesLimit > 0 && clientSecretNumUses === clientSecretNumUsesLimit) { - // number of times client secret can be used for - // a login operation reached - await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { - isClientSecretRevoked: true - }); - throw new UnauthorizedError({ - message: "Access denied due to client secret usage limit reached" - }); - } + const accessTokenTTLParams = + Number(identityUa.accessTokenPeriod) === 0 + ? { + accessTokenTTL: identityUa.accessTokenTTL, + accessTokenMaxTTL: identityUa.accessTokenMaxTTL + } + : { + accessTokenTTL: identityUa.accessTokenPeriod, + // We set a very large Max TTL for periodic tokens to ensure that clients (even outdated ones) can always renew their token + // without them having to update their SDKs, CLIs, etc. This workaround sets it to 30 years to emulate "forever" + accessTokenMaxTTL: 1000000000 + }; - const accessTokenTTLParams = - Number(identityUa.accessTokenPeriod) === 0 - ? { - accessTokenTTL: identityUa.accessTokenTTL, - accessTokenMaxTTL: identityUa.accessTokenMaxTTL - } - : { - accessTokenTTL: identityUa.accessTokenPeriod, - // We set a very large Max TTL for periodic tokens to ensure that clients (even outdated ones) can always renew their token - // without them having to update their SDKs, CLIs, etc. This workaround sets it to 30 years to emulate "forever" - accessTokenMaxTTL: 1000000000 - }; - - const identityAccessToken = await identityUaDAL.transaction(async (tx) => { - const uaClientSecretDoc = await identityUaClientSecretDAL.incrementUsage(validClientSecretInfo!.id, tx); + const uaClientSecretDoc = await identityUaClientSecretDAL.incrementUsage(validClientSecretInfo.id, tx); await identityOrgMembershipDAL.updateById( identityMembershipOrg.id, { @@ -154,33 +206,33 @@ export const identityUaServiceFactory = ({ tx ); - return newToken; + return { newToken, validClientSecretInfo, accessTokenTTLParams }; }); const appCfg = getConfig(); const accessToken = crypto.jwt().sign( { identityId: identityUa.identityId, - clientSecretId: validClientSecretInfo.id, - identityAccessTokenId: identityAccessToken.id, + clientSecretId: identityTx.validClientSecretInfo.id, + identityAccessTokenId: identityTx.newToken.id, authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN } as TIdentityAccessTokenJwtPayload, appCfg.AUTH_SECRET, // akhilmhdh: for non-expiry tokens you should not even set the value, including undefined. Even for undefined jsonwebtoken throws error - Number(identityAccessToken.accessTokenTTL) === 0 + Number(identityTx.newToken.accessTokenTTL) === 0 ? undefined : { - expiresIn: Number(identityAccessToken.accessTokenTTL) + expiresIn: Number(identityTx.newToken.accessTokenTTL) } ); return { accessToken, identityUa, - validClientSecretInfo, - identityAccessToken, + validClientSecretInfo: identityTx.validClientSecretInfo, + identityAccessToken: identityTx.newToken, identityMembershipOrg, - ...accessTokenTTLParams + ...identityTx.accessTokenTTLParams }; }; @@ -196,7 +248,11 @@ export const identityUaServiceFactory = ({ actor, actorOrgId, isActorSuperAdmin, - accessTokenPeriod + accessTokenPeriod, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }: TAttachUaDTO) => { await validateIdentityUpdateForSuperAdminPrivileges(identityId, isActorSuperAdmin); @@ -266,7 +322,11 @@ export const identityUaServiceFactory = ({ accessTokenTTL, accessTokenNumUsesLimit, accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps), - accessTokenPeriod + accessTokenPeriod, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }, tx ); @@ -286,7 +346,11 @@ export const identityUaServiceFactory = ({ actorId, actorAuthMethod, actor, - actorOrgId + actorOrgId, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }: TUpdateUaDTO) => { const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); if (!identityMembershipOrg) throw new NotFoundError({ message: `Failed to find identity with ID ${identityId}` }); @@ -362,7 +426,11 @@ export const identityUaServiceFactory = ({ accessTokenPeriod, accessTokenTrustedIps: reformattedAccessTokenTrustedIps ? JSON.stringify(reformattedAccessTokenTrustedIps) - : undefined + : undefined, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }); return { ...updatedUaAuth, orgId: identityMembershipOrg.orgId }; }; @@ -713,6 +781,38 @@ export const identityUaServiceFactory = ({ return { ...updatedClientSecret, identityId, orgId: identityMembershipOrg.orgId }; }; + const clearUniversalAuthLockouts = async ({ + identityId, + actorId, + actor, + actorOrgId, + actorAuthMethod + }: TClearUaLockoutsDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new NotFoundError({ message: `Failed to find identity with ID ${identityId}` }); + + if (!identityMembershipOrg.identity.authMethods.includes(IdentityAuthMethod.UNIVERSAL_AUTH)) { + throw new BadRequestError({ + message: "The identity does not have universal auth" + }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionIdentityActions.Edit, OrgPermissionSubjects.Identity); + + const deleted = await keyStore.deleteItems({ + pattern: `lockout:identity:${identityId}:${IdentityAuthMethod.UNIVERSAL_AUTH}:*` + }); + + return { deleted, identityId, orgId: identityMembershipOrg.orgId }; + }; + return { login, attachUniversalAuth, @@ -722,6 +822,7 @@ export const identityUaServiceFactory = ({ createUniversalAuthClientSecret, getUniversalAuthClientSecrets, revokeUniversalAuthClientSecret, - getUniversalAuthClientSecretById + getUniversalAuthClientSecretById, + clearUniversalAuthLockouts }; }; diff --git a/backend/src/services/identity-ua/identity-ua-types.ts b/backend/src/services/identity-ua/identity-ua-types.ts index f7938e0f7..9c3cc09c2 100644 --- a/backend/src/services/identity-ua/identity-ua-types.ts +++ b/backend/src/services/identity-ua/identity-ua-types.ts @@ -9,6 +9,10 @@ export type TAttachUaDTO = { clientSecretTrustedIps: { ipAddress: string }[]; accessTokenTrustedIps: { ipAddress: string }[]; isActorSuperAdmin?: boolean; + lockoutEnabled: boolean; + lockoutThreshold: number; + lockoutDuration: number; + lockoutCounterReset: number; } & Omit; export type TUpdateUaDTO = { @@ -19,6 +23,10 @@ export type TUpdateUaDTO = { accessTokenPeriod?: number; clientSecretTrustedIps?: { ipAddress: string }[]; accessTokenTrustedIps?: { ipAddress: string }[]; + lockoutEnabled?: boolean; + lockoutThreshold?: number; + lockoutDuration?: number; + lockoutCounterReset?: number; } & Omit; export type TGetUaDTO = { @@ -45,6 +53,10 @@ export type TRevokeUaClientSecretDTO = { clientSecretId: string; } & Omit; +export type TClearUaLockoutsDTO = { + identityId: string; +} & Omit; + export type TGetUniversalAuthClientSecretByIdDTO = { identityId: string; clientSecretId: string; diff --git a/backend/src/services/identity/identity-service.ts b/backend/src/services/identity/identity-service.ts index 7c76520b3..969d00331 100644 --- a/backend/src/services/identity/identity-service.ts +++ b/backend/src/services/identity/identity-service.ts @@ -8,6 +8,7 @@ import { validatePrivilegeChangeOperation } from "@app/ee/services/permission/permission-fns"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; +import { TKeyStoreFactory } from "@app/keystore/keystore"; import { BadRequestError, NotFoundError, PermissionBoundaryError } from "@app/lib/errors"; import { TIdentityProjectDALFactory } from "@app/services/identity-project/identity-project-dal"; @@ -32,6 +33,7 @@ type TIdentityServiceFactoryDep = { identityProjectDAL: Pick; permissionService: Pick; licenseService: Pick; + keyStore: Pick; }; export type TIdentityServiceFactory = ReturnType; @@ -42,7 +44,8 @@ export const identityServiceFactory = ({ identityOrgMembershipDAL, identityProjectDAL, permissionService, - licenseService + licenseService, + keyStore }: TIdentityServiceFactoryDep) => { const createIdentity = async ({ name, @@ -255,7 +258,20 @@ export const identityServiceFactory = ({ ); ForbiddenError.from(permission).throwUnlessCan(OrgPermissionIdentityActions.Read, OrgPermissionSubjects.Identity); - return identity; + const activeLockouts = await keyStore.getKeysByPattern(`lockout:identity:${id}:*`); + + const activeLockoutAuthMethods = new Set(); + activeLockouts.forEach((key) => { + const parts = key.split(":"); + if (parts.length > 3) { + activeLockoutAuthMethods.add(parts[3]); + } + }); + + return { + ...identity, + identity: { ...identity.identity, activeLockoutAuthMethods: Array.from(activeLockoutAuthMethods) } + }; }; const deleteIdentity = async ({ diff --git a/frontend/src/components/v2/Button/Button.tsx b/frontend/src/components/v2/Button/Button.tsx index 2daa76930..179a55714 100644 --- a/frontend/src/components/v2/Button/Button.tsx +++ b/frontend/src/components/v2/Button/Button.tsx @@ -204,7 +204,7 @@ export const Button = forwardRef( {leftIcon && (
{ accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, - accessTokenTrustedIps + accessTokenTrustedIps, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }) => { const { data: { identityUniversalAuth } @@ -157,7 +162,11 @@ export const useAddIdentityUniversalAuth = () => { accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, - accessTokenTrustedIps + accessTokenTrustedIps, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }); return identityUniversalAuth; }, @@ -183,7 +192,11 @@ export const useUpdateIdentityUniversalAuth = () => { accessTokenMaxTTL, accessTokenNumUsesLimit, accessTokenTrustedIps, - accessTokenPeriod + accessTokenPeriod, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }) => { const { data: { identityUniversalAuth } @@ -193,7 +206,11 @@ export const useUpdateIdentityUniversalAuth = () => { accessTokenMaxTTL, accessTokenNumUsesLimit, accessTokenTrustedIps, - accessTokenPeriod + accessTokenPeriod, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }); return identityUniversalAuth; }, @@ -275,6 +292,25 @@ export const useRevokeIdentityUniversalAuthClientSecret = () => { }); }; +export const useClearIdentityUniversalAuthLockouts = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ identityId }) => { + const { + data: { deleted } + } = await apiRequest.post<{ deleted: number }>( + `/api/v1/auth/universal-auth/identities/${identityId}/clear-lockouts` + ); + return deleted; + }, + onSuccess: (_, { identityId }) => { + queryClient.invalidateQueries({ + queryKey: identitiesKeys.clearIdentityUniversalAuthLockouts(identityId) + }); + } + }); +}; + export const useAddIdentityGcpAuth = () => { const queryClient = useQueryClient(); return useMutation({ diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index cf7f4be87..ba81a97f1 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -49,7 +49,9 @@ export const identitiesKeys = { getIdentityTokensTokenAuth: (identityId: string) => [{ identityId }, "identity-tokens-token-auth"] as const, getIdentityProjectMemberships: (identityId: string) => - [{ identityId }, "identity-project-memberships"] as const + [{ identityId }, "identity-project-memberships"] as const, + clearIdentityUniversalAuthLockouts: (identityId: string) => + [{ identityId }, "clear-identity-universal-auth-lockouts"] as const }; export const useGetIdentityById = (identityId: string) => { diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index 7098ce244..8f5ec2b8e 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -16,6 +16,7 @@ export type Identity = { name: string; hasDeleteProtection: boolean; authMethods: IdentityAuthMethod[]; + activeLockoutAuthMethods: IdentityAuthMethod[]; createdAt: string; updatedAt: string; isInstanceAdmin?: boolean; @@ -113,6 +114,10 @@ export type IdentityUniversalAuth = { accessTokenNumUsesLimit: number; accessTokenTrustedIps: IdentityTrustedIp[]; accessTokenPeriod: number; + lockoutEnabled: boolean; + lockoutThreshold: number; + lockoutDuration: number; + lockoutCounterReset: number; }; export type AddIdentityUniversalAuthDTO = { @@ -128,6 +133,10 @@ export type AddIdentityUniversalAuthDTO = { accessTokenTrustedIps: { ipAddress: string; }[]; + lockoutEnabled: boolean; + lockoutThreshold: number; + lockoutDuration: number; + lockoutCounterReset: number; }; export type UpdateIdentityUniversalAuthDTO = { @@ -143,6 +152,10 @@ export type UpdateIdentityUniversalAuthDTO = { accessTokenTrustedIps?: { ipAddress: string; }[]; + lockoutEnabled?: boolean; + lockoutThreshold?: number; + lockoutDuration?: number; + lockoutCounterReset?: number; }; export type DeleteIdentityUniversalAuthDTO = { @@ -558,6 +571,10 @@ export type DeleteIdentityUniversalAuthClientSecretDTO = { clientSecretId: string; }; +export type ClearIdentityUniversalAuthLockoutsDTO = { + identityId: string; +}; + export type IdentityTokenAuth = { identityId: string; accessTokenTTL: number; diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index e14acd869..cdd65e581 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -11,6 +11,7 @@ import { FormControl, IconButton, Input, + Switch, Tab, TabList, TabPanel, @@ -60,7 +61,26 @@ const schema = z ipAddress: z.string().max(50) }) .array() - .min(1) + .min(1), + lockoutEnabled: z.boolean().default(true), + lockoutThreshold: z + .string() + .refine( + (value) => Number(value) <= 30 && Number(value) >= 1, + "Lockout threshold must be between 1 and 30" + ), + lockoutDuration: z + .string() + .refine( + (value) => Number(value) <= 86400 && Number(value) >= 30, + "Lockout duration must be between 30 seconds and 1 day" + ), + lockoutCounterReset: z + .string() + .refine( + (value) => Number(value) <= 3600 && Number(value) >= 5, + "Lockout counter reset must be between 5 seconds and 1 hour" + ) }) .required(); @@ -107,12 +127,21 @@ export const IdentityUniversalAuthForm = ({ accessTokenNumUsesLimit: "0", clientSecretTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }], accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }], - accessTokenPeriod: "0" + accessTokenPeriod: "0", + lockoutEnabled: true, + lockoutThreshold: "3", + lockoutDuration: "300", + lockoutCounterReset: "30" } }); const accessTokenPeriodValue = Number(watch("accessTokenPeriod")); + const lockoutEnabled = watch("lockoutEnabled"); + const lockoutThreshold = watch("lockoutThreshold"); + const lockoutDuration = watch("lockoutDuration"); + const lockoutCounterReset = watch("lockoutCounterReset"); + const { fields: clientSecretTrustedIpsFields, append: appendClientSecretTrustedIp, @@ -144,7 +173,11 @@ export const IdentityUniversalAuthForm = ({ ipAddress: `${ipAddress}${prefix !== undefined ? `/${prefix}` : ""}` }; } - ) + ), + lockoutEnabled: data.lockoutEnabled, + lockoutThreshold: String(data.lockoutThreshold), + lockoutDuration: String(data.lockoutDuration), + lockoutCounterReset: String(data.lockoutCounterReset) }); } else { reset({ @@ -153,7 +186,11 @@ export const IdentityUniversalAuthForm = ({ accessTokenNumUsesLimit: "0", accessTokenPeriod: "0", clientSecretTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }], - accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] + accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }], + lockoutEnabled: true, + lockoutThreshold: "3", + lockoutDuration: "300", + lockoutCounterReset: "30" }); } }, [data]); @@ -164,7 +201,11 @@ export const IdentityUniversalAuthForm = ({ accessTokenNumUsesLimit, clientSecretTrustedIps, accessTokenTrustedIps, - accessTokenPeriod + accessTokenPeriod, + lockoutEnabled, + lockoutThreshold, + lockoutDuration, + lockoutCounterReset }: FormData) => { try { if (!identityId) return; @@ -179,7 +220,11 @@ export const IdentityUniversalAuthForm = ({ accessTokenMaxTTL: Number(accessTokenMaxTTL), accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), accessTokenTrustedIps, - accessTokenPeriod: Number(accessTokenPeriod) + accessTokenPeriod: Number(accessTokenPeriod), + lockoutEnabled, + lockoutThreshold: Number(lockoutThreshold), + lockoutDuration: Number(lockoutDuration), + lockoutCounterReset: Number(lockoutCounterReset) }); } else { // create new universal auth configuration @@ -192,7 +237,11 @@ export const IdentityUniversalAuthForm = ({ accessTokenMaxTTL: Number(accessTokenMaxTTL), accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), accessTokenTrustedIps, - accessTokenPeriod: Number(accessTokenPeriod) + accessTokenPeriod: Number(accessTokenPeriod), + lockoutEnabled, + lockoutThreshold: Number(lockoutThreshold), + lockoutDuration: Number(lockoutDuration), + lockoutCounterReset: Number(lockoutCounterReset) }); } @@ -220,13 +269,21 @@ export const IdentityUniversalAuthForm = ({ setTabValue( ["accessTokenTrustedIps", "clientSecretTrustedIps"].includes(Object.keys(fields)[0]) ? IdentityFormTab.Advanced - : IdentityFormTab.Configuration + : [ + "lockoutEnabled", + "lockoutThreshold", + "lockoutDuration", + "lockoutCounterReset" + ].includes(Object.keys(fields)[0]) + ? IdentityFormTab.Lockout + : IdentityFormTab.Configuration ); })} > setTabValue(value as IdentityFormTab)}> Configuration + Lockout Advanced @@ -296,6 +353,84 @@ export const IdentityUniversalAuthForm = ({ )} /> + +
+ { + return ( + + + Lockout {value ? "Enabled" : "Disabled"} + + + ); + }} + /> + { + return ( + + + + ); + }} + /> + { + return ( + + + + ); + }} + /> + { + return ( + + + + ); + }} + /> +
+
+ {clientSecretTrustedIpsFields.map(({ id }, index) => (
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/types/index.ts b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/types/index.ts index 56e82f7af..f1c7015c4 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/types/index.ts +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/types/index.ts @@ -1,4 +1,5 @@ export enum IdentityFormTab { Advanced = "advanced", + Lockout = "lockout", Configuration = "configuration" } diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx index d4de5f1c4..1b7cb956b 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx @@ -115,7 +115,8 @@ const Page = () => { handlePopUpToggle("viewAuthMethod", isOpen)} - authMethod={popUp.viewAuthMethod.data} + authMethod={popUp.viewAuthMethod.data?.authMethod} + lockedOut={popUp.viewAuthMethod.data?.lockedOut || false} identityId={identityId} />
diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx index 467fc7dcc..61268070b 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx @@ -1,4 +1,4 @@ -import { faCog, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { faCog, faLock, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { OrgPermissionCan } from "@app/components/permissions"; @@ -28,12 +28,22 @@ export const IdentityAuthenticationSection = ({ identityId, handlePopUpOpen }: P {data.identity.authMethods.map((authMethod) => ( ))}
diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx index ca0a5e6f3..7236d4c27 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx @@ -37,6 +37,7 @@ import { ViewIdentityUniversalAuthContent } from "./ViewIdentityUniversalAuthCon type Props = { identityId: string; authMethod?: IdentityAuthMethod; + lockedOut: boolean; isOpen: boolean; onOpenChange: (isOpen: boolean) => void; onDeleteAuthMethod: () => void; @@ -50,8 +51,9 @@ type TRevokeOptions = { export const Content = ({ identityId, authMethod, + lockedOut, onDeleteAuthMethod -}: Pick) => { +}: Pick) => { const { currentOrg } = useOrganization(); const orgId = currentOrg?.id || ""; @@ -162,6 +164,7 @@ export const Content = ({ popUp={popUp} handlePopUpOpen={handlePopUpOpen} handlePopUpToggle={handlePopUpToggle} + lockedOut={lockedOut} /> ) => { if (!identityId || !authMethod) return null; @@ -194,6 +198,7 @@ export const ViewIdentityAuthModal = ({ onOpenChange(false)} /> diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index ce6415171..7ea5858a7 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -1,9 +1,10 @@ -import { faBan, faCheck, faCopy } from "@fortawesome/free-solid-svg-icons"; +import { faArrowsRotate, faBan, faCheck, faCopy, faFire } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { EmptyState, IconButton, Spinner, Tooltip } from "@app/components/v2"; +import { Button, EmptyState, IconButton, Spinner, Tooltip } from "@app/components/v2"; import { useTimedReset } from "@app/hooks"; import { + useClearIdentityUniversalAuthLockouts, useGetIdentityUniversalAuth, useGetIdentityUniversalAuthClientSecrets } from "@app/hooks/api"; @@ -13,22 +14,42 @@ import { IdentityAuthFieldDisplay } from "./IdentityAuthFieldDisplay"; import { IdentityUniversalAuthClientSecretsTable } from "./IdentityUniversalAuthClientSecretsTable"; import { ViewAuthMethodProps } from "./types"; import { ViewIdentityContentWrapper } from "./ViewIdentityContentWrapper"; +import { OrgPermissionIdentityActions, OrgPermissionSubjects } from "@app/context"; +import { OrgPermissionCan } from "@app/components/permissions"; +import { createNotification } from "@app/components/notifications"; +import { useState } from "react"; export const ViewIdentityUniversalAuthContent = ({ identityId, handlePopUpToggle, handlePopUpOpen, onDelete, - popUp + popUp, + lockedOut }: ViewAuthMethodProps) => { const { data, isPending } = useGetIdentityUniversalAuth(identityId); const { data: clientSecrets = [], isPending: clientSecretsPending } = useGetIdentityUniversalAuthClientSecrets(identityId); + const { mutateAsync: clearLockoutsFn, isPending: isClearLockoutsPending } = + useClearIdentityUniversalAuthLockouts(); + + const [lockedOutState, setLockedOutState] = useState(lockedOut); const [copyTextClientId, isCopyingClientId, setCopyTextClientId] = useTimedReset({ initialState: "Copy Client ID to clipboard" }); + async function clearLockouts() { + const deleted = await clearLockoutsFn({ identityId }); + + createNotification({ + text: `Successfully cleared ${deleted} lockout${deleted === 1 ? "" : "s"}`, + type: "success" + }); + + setLockedOutState(false); + } + if (isPending || clientSecretsPending) { return (
@@ -85,6 +106,40 @@ export const ViewIdentityUniversalAuthContent = ({ {data.clientSecretTrustedIps.map((ip) => ip.ipAddress).join(", ")} +
+ Lockout Options + + {(isAllowed) => ( + + )} + +
+ + {data.lockoutEnabled ? "Enabled" : "Disabled"} + + + {data.lockoutThreshold} + + + {data.lockoutDuration} seconds + + + {data.lockoutCounterReset} seconds +
Client ID diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts index 7673f5d6b..c566040b4 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts @@ -9,4 +9,5 @@ export type ViewAuthMethodProps = { state?: boolean ) => void; popUp: UsePopUpState<["revokeAuthMethod", "upgradePlan", "identityAuthMethod"]>; + lockedOut: boolean; }; From bceddab89f81b7acf1ac94f872a39bfe99967a4c Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 19 Aug 2025 14:01:39 +0800 Subject: [PATCH 02/40] Greptile review fixes --- backend/src/lib/api-docs/constants.ts | 3 +++ .../v1/identity-universal-auth-router.ts | 2 +- .../src/hooks/api/identities/mutations.tsx | 2 +- frontend/src/hooks/api/identities/queries.tsx | 4 +--- .../ViewIdentityUniversalAuthContent.tsx | 22 ++++++++++++------- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/backend/src/lib/api-docs/constants.ts b/backend/src/lib/api-docs/constants.ts index 80a717753..f520d87da 100644 --- a/backend/src/lib/api-docs/constants.ts +++ b/backend/src/lib/api-docs/constants.ts @@ -209,6 +209,9 @@ export const UNIVERSAL_AUTH = { identityId: "The ID of the identity to revoke the client secret from.", clientSecretId: "The ID of the client secret to revoke." }, + CLEAR_CLIENT_LOCKOUTS: { + identityId: "The ID of the identity to clear the client lockouts from." + }, RENEW_ACCESS_TOKEN: { accessToken: "The access token to renew." }, diff --git a/backend/src/server/routes/v1/identity-universal-auth-router.ts b/backend/src/server/routes/v1/identity-universal-auth-router.ts index f0fefb4d8..a3d332e0c 100644 --- a/backend/src/server/routes/v1/identity-universal-auth-router.ts +++ b/backend/src/server/routes/v1/identity-universal-auth-router.ts @@ -638,7 +638,7 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { } ], params: z.object({ - identityId: z.string().describe(UNIVERSAL_AUTH.REVOKE_CLIENT_SECRET.identityId) + identityId: z.string().describe(UNIVERSAL_AUTH.CLEAR_CLIENT_LOCKOUTS.identityId) }), response: { 200: z.object({ diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index f3194a744..ca903bb48 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -305,7 +305,7 @@ export const useClearIdentityUniversalAuthLockouts = () => { }, onSuccess: (_, { identityId }) => { queryClient.invalidateQueries({ - queryKey: identitiesKeys.clearIdentityUniversalAuthLockouts(identityId) + queryKey: identitiesKeys.getIdentityUniversalAuth(identityId) }); } }); diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index ba81a97f1..cf7f4be87 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -49,9 +49,7 @@ export const identitiesKeys = { getIdentityTokensTokenAuth: (identityId: string) => [{ identityId }, "identity-tokens-token-auth"] as const, getIdentityProjectMemberships: (identityId: string) => - [{ identityId }, "identity-project-memberships"] as const, - clearIdentityUniversalAuthLockouts: (identityId: string) => - [{ identityId }, "clear-identity-universal-auth-lockouts"] as const + [{ identityId }, "identity-project-memberships"] as const }; export const useGetIdentityById = (identityId: string) => { diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index 7ea5858a7..c2a1df6b9 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -40,14 +40,20 @@ export const ViewIdentityUniversalAuthContent = ({ }); async function clearLockouts() { - const deleted = await clearLockoutsFn({ identityId }); - - createNotification({ - text: `Successfully cleared ${deleted} lockout${deleted === 1 ? "" : "s"}`, - type: "success" - }); - - setLockedOutState(false); + try { + const deleted = await clearLockoutsFn({ identityId }); + createNotification({ + text: `Successfully cleared ${deleted} lockout${deleted === 1 ? "" : "s"}`, + type: "success" + }); + setLockedOutState(false); + } catch (error) { + console.error(error); + createNotification({ + text: "Failed to clear lockouts. Please try again.", + type: "error" + }); + } } if (isPending || clientSecretsPending) { From 5136dbc5431c19bf1365667ab29680e7f3d72d17 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 19 Aug 2025 14:05:56 +0800 Subject: [PATCH 03/40] Tooltips for inputs --- .../components/IdentitySection/IdentityUniversalAuthForm.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index cdd65e581..05bf47c73 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -390,6 +390,7 @@ export const IdentityUniversalAuthForm = ({ label="Lockout Threshold" isError={Boolean(error)} errorText={error?.message} + tooltipText="The amount of times login must fail before locking the identity auth method" > @@ -406,6 +407,7 @@ export const IdentityUniversalAuthForm = ({ label="Lockout Duration (seconds)" isError={Boolean(error)} errorText={error?.message} + tooltipText="How long an identity auth method lockout lasts" > @@ -422,6 +424,7 @@ export const IdentityUniversalAuthForm = ({ label="Lockout Counter Reset (seconds)" isError={Boolean(error)} errorText={error?.message} + tooltipText="How long to wait from the most recent failed login until resetting the lockout counter" > From ebd3b5c9d1ea1c12b425a52dab4e740126ec7e33 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 19 Aug 2025 15:24:20 +0800 Subject: [PATCH 04/40] UI polish: Add better time inputs and tooltips --- frontend/src/helpers/datetime.ts | 86 +++++ .../IdentityUniversalAuthForm.tsx | 335 +++++++++++++----- .../ViewIdentityUniversalAuthContent.tsx | 8 +- .../OrgSecretShareLimitSection.tsx | 82 +---- 4 files changed, 353 insertions(+), 158 deletions(-) diff --git a/frontend/src/helpers/datetime.ts b/frontend/src/helpers/datetime.ts index 6e0fb8e48..bb258878d 100644 --- a/frontend/src/helpers/datetime.ts +++ b/frontend/src/helpers/datetime.ts @@ -22,3 +22,89 @@ export const formatDateTime = ({ } return format(date, dateFormat); }; + +// Helper function to convert duration to seconds +export const durationToSeconds = ( + value: number, + unit: "s" | "m" | "h" | "d" | "w" | "y" +): number => { + switch (unit) { + case "s": + return value; + case "m": + return value * 60; + case "h": + return value * 60 * 60; + case "d": + return value * 60 * 60 * 24; + case "w": + return value * 60 * 60 * 24 * 7; + case "y": + return value * 60 * 60 * 24 * 365; + default: + return 0; + } +}; + +// Helper function to convert seconds to value and unit +export const getObjectFromSeconds = ( + totalSeconds: number, + activeUnits?: Array<"s" | "m" | "h" | "d" | "w" | "y"> +): { value: number; unit: "s" | "m" | "h" | "d" | "w" | "y" } => { + const SECONDS_IN_MINUTE = 60; + const SECONDS_IN_HOUR = SECONDS_IN_MINUTE * 60; + const SECONDS_IN_DAY = SECONDS_IN_HOUR * 24; + const SECONDS_IN_WEEK = SECONDS_IN_DAY * 7; + const SECONDS_IN_YEAR = SECONDS_IN_DAY * 365; + + const activeUnitsSet = activeUnits ? new Set(activeUnits) : null; + + const isUnitActive = (unit: "s" | "m" | "h" | "d" | "w" | "y"): boolean => { + return activeUnitsSet ? activeUnitsSet.has(unit) : true; + }; + + if ( + isUnitActive("y") && + totalSeconds >= SECONDS_IN_YEAR && + totalSeconds % SECONDS_IN_YEAR === 0 + ) { + return { value: totalSeconds / SECONDS_IN_YEAR, unit: "y" }; + } + + if ( + isUnitActive("w") && + totalSeconds >= SECONDS_IN_WEEK && + totalSeconds % SECONDS_IN_WEEK === 0 + ) { + return { value: totalSeconds / SECONDS_IN_WEEK, unit: "w" }; + } + + if (isUnitActive("d") && totalSeconds >= SECONDS_IN_DAY && totalSeconds % SECONDS_IN_DAY === 0) { + return { value: totalSeconds / SECONDS_IN_DAY, unit: "d" }; + } + + if ( + isUnitActive("h") && + totalSeconds >= SECONDS_IN_HOUR && + totalSeconds % SECONDS_IN_HOUR === 0 + ) { + return { value: totalSeconds / SECONDS_IN_HOUR, unit: "h" }; + } + + if ( + isUnitActive("m") && + totalSeconds >= SECONDS_IN_MINUTE && + totalSeconds % SECONDS_IN_MINUTE === 0 + ) { + return { value: totalSeconds / SECONDS_IN_MINUTE, unit: "m" }; + } + + if (isUnitActive("s") && totalSeconds >= 1) { + return { value: totalSeconds, unit: "s" }; + } + + return { + value: 0, + unit: "s" + }; +}; diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index 05bf47c73..c8d424e47 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -11,6 +11,8 @@ import { FormControl, IconButton, Input, + Select, + SelectItem, Switch, Tab, TabList, @@ -27,6 +29,7 @@ import { IdentityTrustedIp } from "@app/hooks/api/identities/types"; import { UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityFormTab } from "./types"; +import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; const schema = z .object({ @@ -69,20 +72,73 @@ const schema = z (value) => Number(value) <= 30 && Number(value) >= 1, "Lockout threshold must be between 1 and 30" ), - lockoutDuration: z - .string() - .refine( - (value) => Number(value) <= 86400 && Number(value) >= 30, - "Lockout duration must be between 30 seconds and 1 day" - ), - lockoutCounterReset: z - .string() - .refine( - (value) => Number(value) <= 3600 && Number(value) >= 5, - "Lockout counter reset must be between 5 seconds and 1 hour" - ) + lockoutDurationValue: z.string(), + lockoutDurationUnit: z.enum(["s", "m", "h", "d"], { + invalid_type_error: "Please select a valid time unit" + }), + lockoutCounterResetValue: z.string(), + lockoutCounterResetUnit: z.enum(["s", "m", "h"], { + invalid_type_error: "Please select a valid time unit" + }) }) - .required(); + .required() + .superRefine((data, ctx) => { + const { + lockoutDurationValue, + lockoutCounterResetValue, + lockoutDurationUnit, + lockoutCounterResetUnit, + lockoutEnabled + } = data; + + if (!lockoutEnabled) return; + + let isAnyParseError = false; + + const parsedLockoutDuration = parseInt(lockoutDurationValue, 10); + if (isNaN(parsedLockoutDuration)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Lockout duration must be a number", + path: ["lockoutDurationValue"] + }); + isAnyParseError = true; + } + + const parsedLockoutCounterReset = parseInt(lockoutCounterResetValue, 10); + if (isNaN(parsedLockoutCounterReset)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Lockout counter reset must be a number", + path: ["lockoutCounterResetValue"] + }); + isAnyParseError = true; + } + + if (isAnyParseError) return; + + const lockoutDurationInSeconds = durationToSeconds(parsedLockoutDuration, lockoutDurationUnit); + const lockoutCounterResetInSeconds = durationToSeconds( + parsedLockoutCounterReset, + lockoutCounterResetUnit + ); + + if (lockoutDurationInSeconds > 86400 || lockoutDurationInSeconds < 30) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Lockout duration must be between 30 seconds and 1 day", + path: ["lockoutDurationValue"] + }); + } + + if (lockoutCounterResetInSeconds > 3600 || lockoutCounterResetInSeconds < 5) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Lockout counter reset must be between 5 seconds and 1 hour", + path: ["lockoutCounterResetValue"] + }); + } + }); export type FormData = z.infer; @@ -130,8 +186,10 @@ export const IdentityUniversalAuthForm = ({ accessTokenPeriod: "0", lockoutEnabled: true, lockoutThreshold: "3", - lockoutDuration: "300", - lockoutCounterReset: "30" + lockoutDurationValue: "5", + lockoutDurationUnit: "m", + lockoutCounterResetValue: "30", + lockoutCounterResetUnit: "s" } }); @@ -139,8 +197,10 @@ export const IdentityUniversalAuthForm = ({ const lockoutEnabled = watch("lockoutEnabled"); const lockoutThreshold = watch("lockoutThreshold"); - const lockoutDuration = watch("lockoutDuration"); - const lockoutCounterReset = watch("lockoutCounterReset"); + const lockoutDurationValue = watch("lockoutDurationValue"); + const lockoutDurationUnit = watch("lockoutDurationUnit"); + const lockoutCounterResetValue = watch("lockoutCounterResetValue"); + const lockoutCounterResetUnit = watch("lockoutCounterResetUnit"); const { fields: clientSecretTrustedIpsFields, @@ -155,6 +215,9 @@ export const IdentityUniversalAuthForm = ({ useEffect(() => { if (data) { + const lockoutDurationObj = getObjectFromSeconds(data.lockoutDuration); + const lockoutCounterResetObj = getObjectFromSeconds(data.lockoutCounterReset); + reset({ accessTokenTTL: String(data.accessTokenTTL), accessTokenMaxTTL: String(data.accessTokenMaxTTL), @@ -176,8 +239,10 @@ export const IdentityUniversalAuthForm = ({ ), lockoutEnabled: data.lockoutEnabled, lockoutThreshold: String(data.lockoutThreshold), - lockoutDuration: String(data.lockoutDuration), - lockoutCounterReset: String(data.lockoutCounterReset) + lockoutDurationValue: String(lockoutDurationObj.value), + lockoutDurationUnit: lockoutDurationObj.unit as "s" | "m" | "h" | "d", + lockoutCounterResetValue: String(lockoutCounterResetObj.value), + lockoutCounterResetUnit: lockoutCounterResetObj.unit as "s" | "m" | "h" }); } else { reset({ @@ -189,8 +254,10 @@ export const IdentityUniversalAuthForm = ({ accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }], lockoutEnabled: true, lockoutThreshold: "3", - lockoutDuration: "300", - lockoutCounterReset: "30" + lockoutDurationValue: "5", + lockoutDurationUnit: "m", + lockoutCounterResetValue: "30", + lockoutCounterResetUnit: "s" }); } }, [data]); @@ -204,12 +271,20 @@ export const IdentityUniversalAuthForm = ({ accessTokenPeriod, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationValue, + lockoutDurationUnit, + lockoutCounterResetValue, + lockoutCounterResetUnit }: FormData) => { try { if (!identityId) return; + const lockoutDuration = durationToSeconds(Number(lockoutDurationValue), lockoutDurationUnit); + const lockoutCounterReset = durationToSeconds( + Number(lockoutCounterResetValue), + lockoutCounterResetUnit + ); + if (data) { // update universal auth configuration await updateMutateAsync({ @@ -223,8 +298,8 @@ export const IdentityUniversalAuthForm = ({ accessTokenPeriod: Number(accessTokenPeriod), lockoutEnabled, lockoutThreshold: Number(lockoutThreshold), - lockoutDuration: Number(lockoutDuration), - lockoutCounterReset: Number(lockoutCounterReset) + lockoutDuration, + lockoutCounterReset }); } else { // create new universal auth configuration @@ -272,8 +347,10 @@ export const IdentityUniversalAuthForm = ({ : [ "lockoutEnabled", "lockoutThreshold", - "lockoutDuration", - "lockoutCounterReset" + "lockoutDurationValue", + "lockoutDurationUnit", + "lockoutCounterResetValue", + "lockoutCounterResetUnit" ].includes(Object.keys(fields)[0]) ? IdentityFormTab.Lockout : IdentityFormTab.Configuration @@ -362,7 +439,7 @@ export const IdentityUniversalAuthForm = ({ render={({ field: { value, onChange }, fieldState: { error } }) => { return ( @@ -380,57 +457,157 @@ export const IdentityUniversalAuthForm = ({ ); }} /> - { - return ( - - - - ); - }} - /> - { - return ( - - - - ); - }} - /> - { - return ( - - - - ); - }} - /> +
+ { + return ( + + + + ); + }} + /> +
+ { + return ( + + + + ); + }} + /> + ( + + + + )} + /> +
+
+ { + return ( + + + + ); + }} + /> + ( + + + + )} + /> +
+
diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index c2a1df6b9..aac1ee52c 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -120,13 +120,7 @@ export const ViewIdentityUniversalAuthContent = ({ isDisabled={!isAllowed || !lockedOutState || isClearLockoutsPending} size="xs" onClick={clearLockouts} - leftIcon={ - isClearLockoutsPending ? ( - - ) : ( - - ) - } + isLoading={isClearLockoutsPending} colorSchema="secondary" > Clear All Lockouts diff --git a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx index 648ad031c..71d133d2e 100644 --- a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx +++ b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx @@ -8,63 +8,11 @@ import { OrgPermissionCan } from "@app/components/permissions"; import { Button, FormControl, Input, Select, SelectItem } from "@app/components/v2"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; import { useUpdateOrg } from "@app/hooks/api"; +import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; const MAX_SHARED_SECRET_LIFETIME_SECONDS = 30 * 24 * 60 * 60; // 30 days in seconds const MIN_SHARED_SECRET_LIFETIME_SECONDS = 5 * 60; // 5 minutes in seconds -// Helper function to convert duration to seconds -const durationToSeconds = (value: number, unit: "m" | "h" | "d"): number => { - switch (unit) { - case "m": - return value * 60; - case "h": - return value * 60 * 60; - case "d": - return value * 60 * 60 * 24; - default: - return 0; - } -}; - -// Helper function to convert seconds to form lifetime value and unit -const getFormLifetimeFromSeconds = ( - totalSeconds: number | null | undefined -): { maxLifetimeValue: number; maxLifetimeUnit: "m" | "h" | "d" } => { - const DEFAULT_LIFETIME_VALUE = 30; - const DEFAULT_LIFETIME_UNIT = "d" as "m" | "h" | "d"; - - if (totalSeconds == null || totalSeconds <= 0) { - return { - maxLifetimeValue: DEFAULT_LIFETIME_VALUE, - maxLifetimeUnit: DEFAULT_LIFETIME_UNIT - }; - } - - const secondsInDay = 24 * 60 * 60; - const secondsInHour = 60 * 60; - const secondsInMinute = 60; - - if (totalSeconds % secondsInDay === 0) { - const value = totalSeconds / secondsInDay; - if (value >= 1) return { maxLifetimeValue: value, maxLifetimeUnit: "d" }; - } - - if (totalSeconds % secondsInHour === 0) { - const value = totalSeconds / secondsInHour; - if (value >= 1) return { maxLifetimeValue: value, maxLifetimeUnit: "h" }; - } - - if (totalSeconds % secondsInMinute === 0) { - const value = totalSeconds / secondsInMinute; - if (value >= 1) return { maxLifetimeValue: value, maxLifetimeUnit: "m" }; - } - - return { - maxLifetimeValue: DEFAULT_LIFETIME_VALUE, - maxLifetimeUnit: DEFAULT_LIFETIME_UNIT - }; -}; - const formSchema = z .object({ maxLifetimeValue: z.number().min(1, "Value must be at least 1"), @@ -79,32 +27,18 @@ const formSchema = z const durationInSeconds = durationToSeconds(maxLifetimeValue, maxLifetimeUnit); - // Check max limit if (durationInSeconds > MAX_SHARED_SECRET_LIFETIME_SECONDS) { - let message = "Duration exceeds maximum allowed limit"; - - if (maxLifetimeUnit === "m") { - message = `Maximum allowed minutes is ${MAX_SHARED_SECRET_LIFETIME_SECONDS / 60} (30 days)`; - } else if (maxLifetimeUnit === "h") { - message = `Maximum allowed hours is ${MAX_SHARED_SECRET_LIFETIME_SECONDS / (60 * 60)} (30 days)`; - } else if (maxLifetimeUnit === "d") { - message = `Maximum allowed days is ${MAX_SHARED_SECRET_LIFETIME_SECONDS / (24 * 60 * 60)}`; - } - ctx.addIssue({ code: z.ZodIssueCode.custom, - message, + message: "Duration exceeds a maximum of 30 days", path: ["maxLifetimeValue"] }); } - // Check min limit if (durationInSeconds < MIN_SHARED_SECRET_LIFETIME_SECONDS) { - const message = `Duration must be at least ${MIN_SHARED_SECRET_LIFETIME_SECONDS / 60} minutes`; // 5 minutes - ctx.addIssue({ code: z.ZodIssueCode.custom, - message, + message: "Duration must be at least 5 minutes", path: ["maxLifetimeValue"] }); } @@ -122,10 +56,14 @@ export const OrgSecretShareLimitSection = () => { const { currentOrg } = useOrganization(); const getDefaultFormValues = () => { - const initialLifetime = getFormLifetimeFromSeconds(currentOrg?.maxSharedSecretLifetime); + const initialLifetime = getObjectFromSeconds(currentOrg?.maxSharedSecretLifetime, [ + "m", + "h", + "d" + ]); return { - maxLifetimeValue: initialLifetime.maxLifetimeValue, - maxLifetimeUnit: initialLifetime.maxLifetimeUnit, + maxLifetimeValue: initialLifetime.value, + maxLifetimeUnit: initialLifetime.unit as "m" | "h" | "d", maxViewLimit: currentOrg?.maxSharedSecretViewLimit?.toString() || "1", shouldLimitView: Boolean(currentOrg?.maxSharedSecretViewLimit) }; From 15d36386126b465ef2f2920234c249acb0ce355e Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 19 Aug 2025 15:38:07 +0800 Subject: [PATCH 05/40] Type check fixes --- .../IdentitySection/IdentityModal.tsx | 6 +- .../IdentityUniversalAuthForm.tsx | 75 ++++++++++--------- .../ViewIdentityUniversalAuthContent.tsx | 12 +-- .../OrgSecretShareLimitSection.tsx | 2 +- 4 files changed, 52 insertions(+), 43 deletions(-) diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx index 829b55674..1d080be7d 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx @@ -148,7 +148,11 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { accessTokenTTL: 2592000, accessTokenMaxTTL: 2592000, accessTokenNumUsesLimit: 0, - accessTokenPeriod: 0 + accessTokenPeriod: 0, + lockoutEnabled: true, + lockoutThreshold: 3, + lockoutDuration: 300, + lockoutCounterReset: 30 }); handlePopUpToggle("identity", false); diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index c8d424e47..4a2802e08 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -20,6 +20,7 @@ import { Tabs } from "@app/components/v2"; import { useOrganization, useSubscription } from "@app/context"; +import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; import { useAddIdentityUniversalAuth, useGetIdentityUniversalAuth, @@ -29,7 +30,6 @@ import { IdentityTrustedIp } from "@app/hooks/api/identities/types"; import { UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityFormTab } from "./types"; -import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; const schema = z .object({ @@ -96,7 +96,7 @@ const schema = z let isAnyParseError = false; const parsedLockoutDuration = parseInt(lockoutDurationValue, 10); - if (isNaN(parsedLockoutDuration)) { + if (Number.isNaN(parsedLockoutDuration)) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: "Lockout duration must be a number", @@ -106,7 +106,7 @@ const schema = z } const parsedLockoutCounterReset = parseInt(lockoutCounterResetValue, 10); - if (isNaN(parsedLockoutCounterReset)) { + if (Number.isNaN(parsedLockoutCounterReset)) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: "Lockout counter reset must be a number", @@ -195,12 +195,12 @@ export const IdentityUniversalAuthForm = ({ const accessTokenPeriodValue = Number(watch("accessTokenPeriod")); - const lockoutEnabled = watch("lockoutEnabled"); - const lockoutThreshold = watch("lockoutThreshold"); - const lockoutDurationValue = watch("lockoutDurationValue"); - const lockoutDurationUnit = watch("lockoutDurationUnit"); - const lockoutCounterResetValue = watch("lockoutCounterResetValue"); - const lockoutCounterResetUnit = watch("lockoutCounterResetUnit"); + const lockoutEnabledWatch = watch("lockoutEnabled"); + const lockoutThresholdWatch = watch("lockoutThreshold"); + const lockoutDurationValueWatch = watch("lockoutDurationValue"); + const lockoutDurationUnitWatch = watch("lockoutDurationUnit"); + const lockoutCounterResetValueWatch = watch("lockoutCounterResetValue"); + const lockoutCounterResetUnitWatch = watch("lockoutCounterResetUnit"); const { fields: clientSecretTrustedIpsFields, @@ -341,20 +341,25 @@ export const IdentityUniversalAuthForm = ({ return (
{ - setTabValue( - ["accessTokenTrustedIps", "clientSecretTrustedIps"].includes(Object.keys(fields)[0]) - ? IdentityFormTab.Advanced - : [ - "lockoutEnabled", - "lockoutThreshold", - "lockoutDurationValue", - "lockoutDurationUnit", - "lockoutCounterResetValue", - "lockoutCounterResetUnit" - ].includes(Object.keys(fields)[0]) - ? IdentityFormTab.Lockout - : IdentityFormTab.Configuration - ); + const firstErrorField = Object.keys(fields)[0]; + let tab = IdentityFormTab.Configuration; + + if (["accessTokenTrustedIps", "clientSecretTrustedIps"].includes(firstErrorField)) { + tab = IdentityFormTab.Advanced; + } else if ( + [ + "lockoutEnabled", + "lockoutThreshold", + "lockoutDurationValue", + "lockoutDurationUnit", + "lockoutCounterResetValue", + "lockoutCounterResetUnit" + ].includes(firstErrorField) + ) { + tab = IdentityFormTab.Lockout; + } + + setTabValue(tab); })} > setTabValue(value as IdentityFormTab)}> @@ -435,11 +440,11 @@ export const IdentityUniversalAuthForm = ({ { return ( @@ -464,7 +469,7 @@ export const IdentityUniversalAuthForm = ({ render={({ field, fieldState: { error } }) => { return ( ); @@ -486,7 +491,7 @@ export const IdentityUniversalAuthForm = ({ render={({ field, fieldState: { error } }) => { return ( ); @@ -506,12 +511,12 @@ export const IdentityUniversalAuthForm = ({ name="lockoutDurationUnit" render={({ field, fieldState: { error } }) => ( clearLockouts()} isLoading={isClearLockoutsPending} colorSchema="secondary" > diff --git a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx index 71d133d2e..b3e4976f3 100644 --- a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx +++ b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx @@ -7,8 +7,8 @@ import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button, FormControl, Input, Select, SelectItem } from "@app/components/v2"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; -import { useUpdateOrg } from "@app/hooks/api"; import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; +import { useUpdateOrg } from "@app/hooks/api"; const MAX_SHARED_SECRET_LIFETIME_SECONDS = 30 * 24 * 60 * 60; // 30 days in seconds const MIN_SHARED_SECRET_LIFETIME_SECONDS = 5 * 60; // 5 minutes in seconds From 57c667f0b15d35dfae489641da6bee3897091e54 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 19 Aug 2025 15:40:01 +0800 Subject: [PATCH 06/40] Improve getObjectFromSeconds func --- frontend/src/helpers/datetime.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/frontend/src/helpers/datetime.ts b/frontend/src/helpers/datetime.ts index bb258878d..3dd57cf52 100644 --- a/frontend/src/helpers/datetime.ts +++ b/frontend/src/helpers/datetime.ts @@ -99,12 +99,8 @@ export const getObjectFromSeconds = ( return { value: totalSeconds / SECONDS_IN_MINUTE, unit: "m" }; } - if (isUnitActive("s") && totalSeconds >= 1) { - return { value: totalSeconds, unit: "s" }; - } - return { - value: 0, + value: totalSeconds, unit: "s" }; }; From 1b22438c4649cdbed6ee8a7ac9f17813854c1121 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 26 Aug 2025 03:11:10 -0400 Subject: [PATCH 07/40] Fix migration --- .../20250815022242_identity-lockouts.ts | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/backend/src/db/migrations/20250815022242_identity-lockouts.ts b/backend/src/db/migrations/20250815022242_identity-lockouts.ts index 7b27296dd..a0e661d2d 100644 --- a/backend/src/db/migrations/20250815022242_identity-lockouts.ts +++ b/backend/src/db/migrations/20250815022242_identity-lockouts.ts @@ -4,22 +4,48 @@ import { TableName } from "../schemas"; export async function up(knex: Knex): Promise { if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { - await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { - t.boolean("lockoutEnabled").notNullable().defaultTo(true); - t.integer("lockoutThreshold").notNullable().defaultTo(3); - t.integer("lockoutDuration").notNullable().defaultTo(300); // 5 minutes (in seconds) - t.integer("lockoutCounterReset").notNullable().defaultTo(30); // 30 seconds + const hasLockoutEnabled = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutEnabled"); + const hasLockoutThreshold = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutThreshold"); + const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDuration"); + const hasLockoutCounterReset = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutCounterReset"); + + await knex.schema.alterTable(TableName.IdentityUniversalAuth, async (t) => { + if (!hasLockoutEnabled) { + t.boolean("lockoutEnabled").notNullable().defaultTo(true); + } + if (!hasLockoutThreshold) { + t.integer("lockoutThreshold").notNullable().defaultTo(3); + } + if (!hasLockoutDuration) { + t.integer("lockoutDuration").notNullable().defaultTo(300); // 5 minutes (in seconds) + } + if (!hasLockoutCounterReset) { + t.integer("lockoutCounterReset").notNullable().defaultTo(30); // 30 seconds + } }); } } export async function down(knex: Knex): Promise { if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { + const hasLockoutEnabled = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutEnabled"); + const hasLockoutThreshold = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutThreshold"); + const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDuration"); + const hasLockoutCounterReset = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutCounterReset"); + await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { - t.dropColumn("lockoutEnabled"); - t.dropColumn("lockoutThreshold"); - t.dropColumn("lockoutDuration"); - t.dropColumn("lockoutCounterReset"); + if (hasLockoutEnabled) { + t.dropColumn("lockoutEnabled"); + } + if (hasLockoutThreshold) { + t.dropColumn("lockoutThreshold"); + } + if (hasLockoutDuration) { + t.dropColumn("lockoutDuration"); + } + if (hasLockoutCounterReset) { + t.dropColumn("lockoutCounterReset"); + } }); } } From 8945bc0dc10060411efbe638bd8ad33cae8de529 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 26 Aug 2025 20:40:16 -0400 Subject: [PATCH 08/40] Review fixes --- .../20250815022242_identity-lockouts.ts | 22 +++++++++----- .../db/schemas/identity-universal-auths.ts | 4 +-- .../ee/services/audit-log/audit-log-types.ts | 8 ++--- backend/src/lib/api-docs/constants.ts | 10 ++++--- .../v1/identity-universal-auth-router.ts | 30 ++++++++++++------- .../identity-ua/identity-ua-service.ts | 18 +++++------ .../services/identity-ua/identity-ua-types.ts | 8 ++--- .../src/hooks/api/identities/mutations.tsx | 16 +++++----- frontend/src/hooks/api/identities/types.ts | 12 ++++---- .../IdentitySection/IdentityModal.tsx | 4 +-- .../IdentityUniversalAuthForm.tsx | 19 +++++++----- .../ViewIdentityUniversalAuthContent.tsx | 5 ++-- 12 files changed, 89 insertions(+), 67 deletions(-) diff --git a/backend/src/db/migrations/20250815022242_identity-lockouts.ts b/backend/src/db/migrations/20250815022242_identity-lockouts.ts index a0e661d2d..e6a20f02c 100644 --- a/backend/src/db/migrations/20250815022242_identity-lockouts.ts +++ b/backend/src/db/migrations/20250815022242_identity-lockouts.ts @@ -6,8 +6,11 @@ export async function up(knex: Knex): Promise { if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { const hasLockoutEnabled = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutEnabled"); const hasLockoutThreshold = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutThreshold"); - const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDuration"); - const hasLockoutCounterReset = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutCounterReset"); + const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDurationSeconds"); + const hasLockoutCounterReset = await knex.schema.hasColumn( + TableName.IdentityUniversalAuth, + "lockoutCounterResetSeconds" + ); await knex.schema.alterTable(TableName.IdentityUniversalAuth, async (t) => { if (!hasLockoutEnabled) { @@ -17,10 +20,10 @@ export async function up(knex: Knex): Promise { t.integer("lockoutThreshold").notNullable().defaultTo(3); } if (!hasLockoutDuration) { - t.integer("lockoutDuration").notNullable().defaultTo(300); // 5 minutes (in seconds) + t.integer("lockoutDurationSeconds").notNullable().defaultTo(300); // 5 minutes } if (!hasLockoutCounterReset) { - t.integer("lockoutCounterReset").notNullable().defaultTo(30); // 30 seconds + t.integer("lockoutCounterResetSeconds").notNullable().defaultTo(30); // 30 seconds } }); } @@ -30,8 +33,11 @@ export async function down(knex: Knex): Promise { if (await knex.schema.hasTable(TableName.IdentityUniversalAuth)) { const hasLockoutEnabled = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutEnabled"); const hasLockoutThreshold = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutThreshold"); - const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDuration"); - const hasLockoutCounterReset = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutCounterReset"); + const hasLockoutDuration = await knex.schema.hasColumn(TableName.IdentityUniversalAuth, "lockoutDurationSeconds"); + const hasLockoutCounterReset = await knex.schema.hasColumn( + TableName.IdentityUniversalAuth, + "lockoutCounterResetSeconds" + ); await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { if (hasLockoutEnabled) { @@ -41,10 +47,10 @@ export async function down(knex: Knex): Promise { t.dropColumn("lockoutThreshold"); } if (hasLockoutDuration) { - t.dropColumn("lockoutDuration"); + t.dropColumn("lockoutDurationSeconds"); } if (hasLockoutCounterReset) { - t.dropColumn("lockoutCounterReset"); + t.dropColumn("lockoutCounterResetSeconds"); } }); } diff --git a/backend/src/db/schemas/identity-universal-auths.ts b/backend/src/db/schemas/identity-universal-auths.ts index e42c886c6..29e8314aa 100644 --- a/backend/src/db/schemas/identity-universal-auths.ts +++ b/backend/src/db/schemas/identity-universal-auths.ts @@ -21,8 +21,8 @@ export const IdentityUniversalAuthsSchema = z.object({ accessTokenPeriod: z.coerce.number().default(0), lockoutEnabled: z.boolean().default(true), lockoutThreshold: z.number().default(3), - lockoutDuration: z.number().default(300), - lockoutCounterReset: z.number().default(30) + lockoutDurationSeconds: z.number().default(300), + lockoutCounterResetSeconds: z.number().default(30) }); export type TIdentityUniversalAuths = z.infer; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 622bac031..f96468bc7 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -869,8 +869,8 @@ interface AddIdentityUniversalAuthEvent { accessTokenTrustedIps: Array; lockoutEnabled: boolean; lockoutThreshold: number; - lockoutDuration: number; - lockoutCounterReset: number; + lockoutDurationSeconds: number; + lockoutCounterResetSeconds: number; }; } @@ -885,8 +885,8 @@ interface UpdateIdentityUniversalAuthEvent { accessTokenTrustedIps?: Array; lockoutEnabled?: boolean; lockoutThreshold?: number; - lockoutDuration?: number; - lockoutCounterReset?: number; + lockoutDurationSeconds?: number; + lockoutCounterResetSeconds?: number; }; } diff --git a/backend/src/lib/api-docs/constants.ts b/backend/src/lib/api-docs/constants.ts index f520d87da..7ecaeff77 100644 --- a/backend/src/lib/api-docs/constants.ts +++ b/backend/src/lib/api-docs/constants.ts @@ -169,8 +169,9 @@ export const UNIVERSAL_AUTH = { "The period for an access token in seconds. This value will be referenced at renewal time. Default value is 0.", lockoutEnabled: "Whether the lockout feature is enabled.", lockoutThreshold: "The amount of times login must fail before locking the identity auth method.", - lockoutDuration: "How long an identity auth method lockout lasts.", - lockoutCounterReset: "How long to wait from the most recent failed login until resetting the lockout counter." + lockoutDurationSeconds: "How long an identity auth method lockout lasts.", + lockoutCounterResetSeconds: + "How long to wait from the most recent failed login until resetting the lockout counter." }, RETRIEVE: { identityId: "The ID of the identity to retrieve the auth method for." @@ -188,8 +189,9 @@ export const UNIVERSAL_AUTH = { accessTokenPeriod: "The new period for an access token in seconds.", lockoutEnabled: "Whether the lockout feature is enabled.", lockoutThreshold: "The amount of times login must fail before locking the identity auth method.", - lockoutDuration: "How long an identity auth method lockout lasts.", - lockoutCounterReset: "How long to wait from the most recent failed login until resetting the lockout counter." + lockoutDurationSeconds: "How long an identity auth method lockout lasts.", + lockoutCounterResetSeconds: + "How long to wait from the most recent failed login until resetting the lockout counter." }, CREATE_CLIENT_SECRET: { identityId: "The ID of the identity to create a client secret for.", diff --git a/backend/src/server/routes/v1/identity-universal-auth-router.ts b/backend/src/server/routes/v1/identity-universal-auth-router.ts index a3d332e0c..6d911a88e 100644 --- a/backend/src/server/routes/v1/identity-universal-auth-router.ts +++ b/backend/src/server/routes/v1/identity-universal-auth-router.ts @@ -140,13 +140,18 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { accessTokenPeriod: z.number().int().min(0).default(0).describe(UNIVERSAL_AUTH.ATTACH.accessTokenPeriod), lockoutEnabled: z.boolean().default(true).describe(UNIVERSAL_AUTH.ATTACH.lockoutEnabled), lockoutThreshold: z.number().min(1).max(30).default(3).describe(UNIVERSAL_AUTH.ATTACH.lockoutThreshold), - lockoutDuration: z.number().min(30).max(86400).default(300).describe(UNIVERSAL_AUTH.ATTACH.lockoutDuration), - lockoutCounterReset: z + lockoutDurationSeconds: z + .number() + .min(30) + .max(86400) + .default(300) + .describe(UNIVERSAL_AUTH.ATTACH.lockoutDurationSeconds), + lockoutCounterResetSeconds: z .number() .min(5) .max(3600) .default(30) - .describe(UNIVERSAL_AUTH.ATTACH.lockoutCounterReset) + .describe(UNIVERSAL_AUTH.ATTACH.lockoutCounterResetSeconds) }) .refine( (val) => val.accessTokenTTL <= val.accessTokenMaxTTL, @@ -183,8 +188,8 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit, lockoutEnabled: identityUniversalAuth.lockoutEnabled, lockoutThreshold: identityUniversalAuth.lockoutThreshold, - lockoutDuration: identityUniversalAuth.lockoutDuration, - lockoutCounterReset: identityUniversalAuth.lockoutCounterReset + lockoutDurationSeconds: identityUniversalAuth.lockoutDurationSeconds, + lockoutCounterResetSeconds: identityUniversalAuth.lockoutCounterResetSeconds } } }); @@ -259,13 +264,18 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { .describe(UNIVERSAL_AUTH.UPDATE.accessTokenPeriod), lockoutEnabled: z.boolean().optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutEnabled), lockoutThreshold: z.number().min(1).max(30).optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutThreshold), - lockoutDuration: z.number().min(30).max(86400).optional().describe(UNIVERSAL_AUTH.UPDATE.lockoutDuration), - lockoutCounterReset: z + lockoutDurationSeconds: z + .number() + .min(30) + .max(86400) + .optional() + .describe(UNIVERSAL_AUTH.UPDATE.lockoutDurationSeconds), + lockoutCounterResetSeconds: z .number() .min(5) .max(3600) .optional() - .describe(UNIVERSAL_AUTH.UPDATE.lockoutCounterReset) + .describe(UNIVERSAL_AUTH.UPDATE.lockoutCounterResetSeconds) }) .refine( (val) => (val.accessTokenMaxTTL && val.accessTokenTTL ? val.accessTokenTTL <= val.accessTokenMaxTTL : true), @@ -301,8 +311,8 @@ export const registerIdentityUaRouter = async (server: FastifyZodProvider) => { accessTokenNumUsesLimit: identityUniversalAuth.accessTokenNumUsesLimit, lockoutEnabled: identityUniversalAuth.lockoutEnabled, lockoutThreshold: identityUniversalAuth.lockoutThreshold, - lockoutDuration: identityUniversalAuth.lockoutDuration, - lockoutCounterReset: identityUniversalAuth.lockoutCounterReset + lockoutDurationSeconds: identityUniversalAuth.lockoutDurationSeconds, + lockoutCounterResetSeconds: identityUniversalAuth.lockoutCounterResetSeconds } } }); diff --git a/backend/src/services/identity-ua/identity-ua-service.ts b/backend/src/services/identity-ua/identity-ua-service.ts index 02594c22f..3aeb5e83c 100644 --- a/backend/src/services/identity-ua/identity-ua-service.ts +++ b/backend/src/services/identity-ua/identity-ua-service.ts @@ -131,7 +131,7 @@ export const identityUaServiceFactory = ({ await keyStore.setItemWithExpiry( LOCKOUT_KEY, - lockout.lockedOut ? identityUa.lockoutDuration : identityUa.lockoutCounterReset, + lockout.lockedOut ? identityUa.lockoutDurationSeconds : identityUa.lockoutCounterResetSeconds, JSON.stringify(lockout) ); } @@ -251,8 +251,8 @@ export const identityUaServiceFactory = ({ accessTokenPeriod, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }: TAttachUaDTO) => { await validateIdentityUpdateForSuperAdminPrivileges(identityId, isActorSuperAdmin); @@ -325,8 +325,8 @@ export const identityUaServiceFactory = ({ accessTokenPeriod, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }, tx ); @@ -349,8 +349,8 @@ export const identityUaServiceFactory = ({ actorOrgId, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }: TUpdateUaDTO) => { const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); if (!identityMembershipOrg) throw new NotFoundError({ message: `Failed to find identity with ID ${identityId}` }); @@ -429,8 +429,8 @@ export const identityUaServiceFactory = ({ : undefined, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }); return { ...updatedUaAuth, orgId: identityMembershipOrg.orgId }; }; diff --git a/backend/src/services/identity-ua/identity-ua-types.ts b/backend/src/services/identity-ua/identity-ua-types.ts index 9c3cc09c2..8e7644b58 100644 --- a/backend/src/services/identity-ua/identity-ua-types.ts +++ b/backend/src/services/identity-ua/identity-ua-types.ts @@ -11,8 +11,8 @@ export type TAttachUaDTO = { isActorSuperAdmin?: boolean; lockoutEnabled: boolean; lockoutThreshold: number; - lockoutDuration: number; - lockoutCounterReset: number; + lockoutDurationSeconds: number; + lockoutCounterResetSeconds: number; } & Omit; export type TUpdateUaDTO = { @@ -25,8 +25,8 @@ export type TUpdateUaDTO = { accessTokenTrustedIps?: { ipAddress: string }[]; lockoutEnabled?: boolean; lockoutThreshold?: number; - lockoutDuration?: number; - lockoutCounterReset?: number; + lockoutDurationSeconds?: number; + lockoutCounterResetSeconds?: number; } & Omit; export type TGetUaDTO = { diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index ca903bb48..5189f187c 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -152,8 +152,8 @@ export const useAddIdentityUniversalAuth = () => { accessTokenTrustedIps, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }) => { const { data: { identityUniversalAuth } @@ -165,8 +165,8 @@ export const useAddIdentityUniversalAuth = () => { accessTokenTrustedIps, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }); return identityUniversalAuth; }, @@ -195,8 +195,8 @@ export const useUpdateIdentityUniversalAuth = () => { accessTokenPeriod, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }) => { const { data: { identityUniversalAuth } @@ -209,8 +209,8 @@ export const useUpdateIdentityUniversalAuth = () => { accessTokenPeriod, lockoutEnabled, lockoutThreshold, - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }); return identityUniversalAuth; }, diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index 8f5ec2b8e..36f9eae4e 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -116,8 +116,8 @@ export type IdentityUniversalAuth = { accessTokenPeriod: number; lockoutEnabled: boolean; lockoutThreshold: number; - lockoutDuration: number; - lockoutCounterReset: number; + lockoutDurationSeconds: number; + lockoutCounterResetSeconds: number; }; export type AddIdentityUniversalAuthDTO = { @@ -135,8 +135,8 @@ export type AddIdentityUniversalAuthDTO = { }[]; lockoutEnabled: boolean; lockoutThreshold: number; - lockoutDuration: number; - lockoutCounterReset: number; + lockoutDurationSeconds: number; + lockoutCounterResetSeconds: number; }; export type UpdateIdentityUniversalAuthDTO = { @@ -154,8 +154,8 @@ export type UpdateIdentityUniversalAuthDTO = { }[]; lockoutEnabled?: boolean; lockoutThreshold?: number; - lockoutDuration?: number; - lockoutCounterReset?: number; + lockoutDurationSeconds?: number; + lockoutCounterResetSeconds?: number; }; export type DeleteIdentityUniversalAuthDTO = { diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx index 1d080be7d..4c7fd69cc 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx @@ -151,8 +151,8 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { accessTokenPeriod: 0, lockoutEnabled: true, lockoutThreshold: 3, - lockoutDuration: 300, - lockoutCounterReset: 30 + lockoutDurationSeconds: 300, + lockoutCounterResetSeconds: 30 }); handlePopUpToggle("identity", false); diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index 4a2802e08..9681461e6 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -215,8 +215,8 @@ export const IdentityUniversalAuthForm = ({ useEffect(() => { if (data) { - const lockoutDurationObj = getObjectFromSeconds(data.lockoutDuration); - const lockoutCounterResetObj = getObjectFromSeconds(data.lockoutCounterReset); + const lockoutDurationObj = getObjectFromSeconds(data.lockoutDurationSeconds); + const lockoutCounterResetObj = getObjectFromSeconds(data.lockoutCounterResetSeconds); reset({ accessTokenTTL: String(data.accessTokenTTL), @@ -279,8 +279,11 @@ export const IdentityUniversalAuthForm = ({ try { if (!identityId) return; - const lockoutDuration = durationToSeconds(Number(lockoutDurationValue), lockoutDurationUnit); - const lockoutCounterReset = durationToSeconds( + const lockoutDurationSeconds = durationToSeconds( + Number(lockoutDurationValue), + lockoutDurationUnit + ); + const lockoutCounterResetSeconds = durationToSeconds( Number(lockoutCounterResetValue), lockoutCounterResetUnit ); @@ -298,8 +301,8 @@ export const IdentityUniversalAuthForm = ({ accessTokenPeriod: Number(accessTokenPeriod), lockoutEnabled, lockoutThreshold: Number(lockoutThreshold), - lockoutDuration, - lockoutCounterReset + lockoutDurationSeconds, + lockoutCounterResetSeconds }); } else { // create new universal auth configuration @@ -315,8 +318,8 @@ export const IdentityUniversalAuthForm = ({ accessTokenPeriod: Number(accessTokenPeriod), lockoutEnabled, lockoutThreshold: Number(lockoutThreshold), - lockoutDuration: Number(lockoutDuration), - lockoutCounterReset: Number(lockoutCounterReset) + lockoutDurationSeconds: Number(lockoutDurationSeconds), + lockoutCounterResetSeconds: Number(lockoutCounterResetSeconds) }); } diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index f31e59cd8..70f7e6948 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { faBan, faCheck, faCopy } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import ms from "ms"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; @@ -135,10 +136,10 @@ export const ViewIdentityUniversalAuthContent = ({ {data.lockoutThreshold} - {data.lockoutDuration} seconds + {ms(data.lockoutDurationSeconds * 1000, { long: true })} - {data.lockoutCounterReset} seconds + {ms(data.lockoutCounterResetSeconds * 1000, { long: true })}
From 8d5b6a17b1cfd16f4a7afb192f0d94717a2a2d77 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 26 Aug 2025 20:44:23 -0400 Subject: [PATCH 09/40] Remove async from migration --- backend/src/db/migrations/20250815022242_identity-lockouts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/db/migrations/20250815022242_identity-lockouts.ts b/backend/src/db/migrations/20250815022242_identity-lockouts.ts index e6a20f02c..d25ee4f47 100644 --- a/backend/src/db/migrations/20250815022242_identity-lockouts.ts +++ b/backend/src/db/migrations/20250815022242_identity-lockouts.ts @@ -12,7 +12,7 @@ export async function up(knex: Knex): Promise { "lockoutCounterResetSeconds" ); - await knex.schema.alterTable(TableName.IdentityUniversalAuth, async (t) => { + await knex.schema.alterTable(TableName.IdentityUniversalAuth, (t) => { if (!hasLockoutEnabled) { t.boolean("lockoutEnabled").notNullable().defaultTo(true); } From 8d6461b01d4afbbd39ba9adadbcd0f532381fe1f Mon Sep 17 00:00:00 2001 From: x032205 Date: Wed, 27 Aug 2025 04:47:21 -0400 Subject: [PATCH 10/40] - Swap to using ms in some frontend areas - Rename button from "Clear All Lockouts" to "Reset All Lockouts" - Add a tooltip to the red lock icon on auth row - Make the red lock icon go away after resetting all lockouts --- frontend/src/helpers/datetime.ts | 23 ------------------- .../IdentityUniversalAuthForm.tsx | 22 +++++++----------- .../IdentityDetailsByIDPage.tsx | 1 + .../IdentityAuthenticationSection.tsx | 11 +++++---- .../ViewIdentityAuthModal.tsx | 14 ++++++++--- .../ViewIdentityUniversalAuthContent.tsx | 6 +++-- .../ViewIdentityAuthModal/types/index.ts | 1 + .../OrgSecretShareLimitSection.tsx | 11 ++++----- 8 files changed, 37 insertions(+), 52 deletions(-) diff --git a/frontend/src/helpers/datetime.ts b/frontend/src/helpers/datetime.ts index 3dd57cf52..d8a5e90c6 100644 --- a/frontend/src/helpers/datetime.ts +++ b/frontend/src/helpers/datetime.ts @@ -23,29 +23,6 @@ export const formatDateTime = ({ return format(date, dateFormat); }; -// Helper function to convert duration to seconds -export const durationToSeconds = ( - value: number, - unit: "s" | "m" | "h" | "d" | "w" | "y" -): number => { - switch (unit) { - case "s": - return value; - case "m": - return value * 60; - case "h": - return value * 60 * 60; - case "d": - return value * 60 * 60 * 24; - case "w": - return value * 60 * 60 * 24 * 7; - case "y": - return value * 60 * 60 * 24 * 365; - default: - return 0; - } -}; - // Helper function to convert seconds to value and unit export const getObjectFromSeconds = ( totalSeconds: number, diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index 9681461e6..3fb7a3acc 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -3,6 +3,7 @@ import { Controller, useFieldArray, useForm } from "react-hook-form"; import { faPlus, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; +import ms from "ms"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -20,7 +21,7 @@ import { Tabs } from "@app/components/v2"; import { useOrganization, useSubscription } from "@app/context"; -import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; +import { getObjectFromSeconds } from "@app/helpers/datetime"; import { useAddIdentityUniversalAuth, useGetIdentityUniversalAuth, @@ -117,11 +118,9 @@ const schema = z if (isAnyParseError) return; - const lockoutDurationInSeconds = durationToSeconds(parsedLockoutDuration, lockoutDurationUnit); - const lockoutCounterResetInSeconds = durationToSeconds( - parsedLockoutCounterReset, - lockoutCounterResetUnit - ); + const lockoutDurationInSeconds = ms(`${parsedLockoutDuration}${lockoutDurationUnit}`) / 1000; + const lockoutCounterResetInSeconds = + ms(`${parsedLockoutCounterReset}${lockoutCounterResetUnit}`) / 1000; if (lockoutDurationInSeconds > 86400 || lockoutDurationInSeconds < 30) { ctx.addIssue({ @@ -279,14 +278,9 @@ export const IdentityUniversalAuthForm = ({ try { if (!identityId) return; - const lockoutDurationSeconds = durationToSeconds( - Number(lockoutDurationValue), - lockoutDurationUnit - ); - const lockoutCounterResetSeconds = durationToSeconds( - Number(lockoutCounterResetValue), - lockoutCounterResetUnit - ); + const lockoutDurationSeconds = ms(`${lockoutDurationValue}${lockoutDurationUnit}`) / 1000; + const lockoutCounterResetSeconds = + ms(`${lockoutCounterResetValue}${lockoutCounterResetUnit}`) / 1000; if (data) { // update universal auth configuration diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx index 1b7cb956b..446e54885 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx @@ -118,6 +118,7 @@ const Page = () => { authMethod={popUp.viewAuthMethod.data?.authMethod} lockedOut={popUp.viewAuthMethod.data?.lockedOut || false} identityId={identityId} + onResetAllLockouts={popUp.viewAuthMethod.data?.refetchIdentity} />
); diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx index 61268070b..a1051afb8 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/IdentityAuthenticationSection/IdentityAuthenticationSection.tsx @@ -2,7 +2,7 @@ import { faCog, faLock, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { OrgPermissionCan } from "@app/components/permissions"; -import { Button } from "@app/components/v2"; +import { Button, Tooltip } from "@app/components/v2"; import { OrgPermissionIdentityActions, OrgPermissionSubjects } from "@app/context"; import { IdentityAuthMethod, identityAuthToNameMap, useGetIdentityById } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; @@ -16,7 +16,7 @@ type Props = { }; export const IdentityAuthenticationSection = ({ identityId, handlePopUpOpen }: Props) => { - const { data } = useGetIdentityById(identityId); + const { data, refetch } = useGetIdentityById(identityId); return data ? (
@@ -31,7 +31,8 @@ export const IdentityAuthenticationSection = ({ identityId, handlePopUpOpen }: P onClick={() => handlePopUpOpen("viewAuthMethod", { authMethod, - lockedOut: data.identity.activeLockoutAuthMethods.includes(authMethod) + lockedOut: data.identity.activeLockoutAuthMethods.includes(authMethod), + refetchIdentity: refetch }) } type="button" @@ -40,7 +41,9 @@ export const IdentityAuthenticationSection = ({ identityId, handlePopUpOpen }: P {identityAuthToNameMap[authMethod]}
{data.identity.activeLockoutAuthMethods.includes(authMethod) && ( - + + + )}
diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx index 7236d4c27..f95a20789 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityAuthModal.tsx @@ -41,6 +41,7 @@ type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; onDeleteAuthMethod: () => void; + onResetAllLockouts: () => void; }; type TRevokeOptions = { @@ -52,8 +53,12 @@ export const Content = ({ identityId, authMethod, lockedOut, - onDeleteAuthMethod -}: Pick) => { + onDeleteAuthMethod, + onResetAllLockouts +}: Pick< + Props, + "authMethod" | "lockedOut" | "identityId" | "onDeleteAuthMethod" | "onResetAllLockouts" +>) => { const { currentOrg } = useOrganization(); const orgId = currentOrg?.id || ""; @@ -161,6 +166,7 @@ export const Content = ({ ) => { if (!identityId || !authMethod) return null; @@ -200,6 +207,7 @@ export const ViewIdentityAuthModal = ({ authMethod={authMethod} lockedOut={lockedOut} onDeleteAuthMethod={() => onOpenChange(false)} + onResetAllLockouts={() => onResetAllLockouts()} /> diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index 70f7e6948..a9cb5a1d1 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -26,7 +26,8 @@ export const ViewIdentityUniversalAuthContent = ({ handlePopUpOpen, onDelete, popUp, - lockedOut + lockedOut, + onResetAllLockouts }: ViewAuthMethodProps) => { const { data, isPending } = useGetIdentityUniversalAuth(identityId); const { data: clientSecrets = [], isPending: clientSecretsPending } = @@ -48,6 +49,7 @@ export const ViewIdentityUniversalAuthContent = ({ type: "success" }); setLockedOutState(false); + onResetAllLockouts(); } catch (error) { console.error(error); createNotification({ @@ -124,7 +126,7 @@ export const ViewIdentityUniversalAuthContent = ({ isLoading={isClearLockoutsPending} colorSchema="secondary" > - Clear All Lockouts + Reset All Lockouts )} diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts index c566040b4..da31a233c 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/types/index.ts @@ -10,4 +10,5 @@ export type ViewAuthMethodProps = { ) => void; popUp: UsePopUpState<["revokeAuthMethod", "upgradePlan", "identityAuthMethod"]>; lockedOut: boolean; + onResetAllLockouts: () => void; }; diff --git a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx index b3e4976f3..cc90cd43f 100644 --- a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx +++ b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx @@ -1,13 +1,14 @@ import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; +import ms from "ms"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button, FormControl, Input, Select, SelectItem } from "@app/components/v2"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context"; -import { durationToSeconds, getObjectFromSeconds } from "@app/helpers/datetime"; +import { getObjectFromSeconds } from "@app/helpers/datetime"; import { useUpdateOrg } from "@app/hooks/api"; const MAX_SHARED_SECRET_LIFETIME_SECONDS = 30 * 24 * 60 * 60; // 30 days in seconds @@ -25,7 +26,7 @@ const formSchema = z .superRefine((data, ctx) => { const { maxLifetimeValue, maxLifetimeUnit } = data; - const durationInSeconds = durationToSeconds(maxLifetimeValue, maxLifetimeUnit); + const durationInSeconds = ms(`${maxLifetimeValue}${maxLifetimeUnit}`) / 1000; if (durationInSeconds > MAX_SHARED_SECRET_LIFETIME_SECONDS) { ctx.addIssue({ @@ -90,10 +91,8 @@ export const OrgSecretShareLimitSection = () => { const handleFormSubmit = async (formData: TForm) => { try { - const maxSharedSecretLifetimeSeconds = durationToSeconds( - formData.maxLifetimeValue, - formData.maxLifetimeUnit - ); + const maxSharedSecretLifetimeSeconds = + ms(`${formData.maxLifetimeValue}${formData.maxLifetimeUnit}`) / 1000; await mutateAsync({ orgId: currentOrg.id, From c99d5c210c026df2e79097b9cdd7a096a4b76c56 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 27 Aug 2025 16:51:15 -0700 Subject: [PATCH 11/40] improvement: remove overview page and re-vamp secret dashboard --- .../components/projects/NewProjectModal.tsx | 2 +- .../components/v2/EmptyState/EmptyState.tsx | 6 +- .../v2/FilterableSelect/FilterableSelect.tsx | 2 +- frontend/src/helpers/project.ts | 7 +- frontend/src/hooks/api/workspace/queries.tsx | 19 +- .../AssumePrivilegeModeBanner.tsx | 5 +- .../ProjectSelect/ProjectSelect.tsx | 4 +- .../SecretManagerLayout.tsx | 11 +- .../components/AllProjectView.tsx | 16 +- .../ProjectsPage/components/MyProjectView.tsx | 4 +- .../GroupMembersSection/GroupMembersTable.tsx | 2 +- .../IdentityDetailsByIDPage.tsx | 2 +- .../MemberDetailsByIDPage.tsx | 2 +- .../OverviewPage/OverviewPage.tsx | 1730 +---------------- .../SecretDashboardPage.tsx | 15 +- .../CompareEnvironments.tsx | 589 ++++++ .../DynamicSecretRow/DynamicSecretRow.tsx | 41 + .../components/DynamicSecretRow/index.tsx | 1 + .../components/FolderRow/FolderRow.tsx | 41 + .../components/FolderRow/index.tsx | 1 + .../SecretRotationRow/SecretRotationRow.tsx | 174 ++ .../components/SecretRotationRow/index.tsx | 1 + .../SecretRow/EnvironmentSecretRow.tsx | 49 + .../SecretRow/SecretNoAccessRow.tsx | 44 + .../components/SecretRow/SecretRow.tsx | 226 +++ .../components/SecretRow/index.tsx | 2 + .../shared/EnvironmentStatusCell.tsx | 75 + .../components/shared/ResourceNameCell.tsx | 47 + .../components/shared/index.ts | 2 + .../components/CompareEnvironments/index.tsx | 1 + .../EnvironmentTabs/EnvironmentTabs.tsx | 242 +++ .../components/EnvironmentTabs/index.tsx | 1 + .../AddEnvironmentModal.tsx | 134 +- .../EnvironmentSection/EnvironmentSection.tsx | 5 +- 34 files changed, 1725 insertions(+), 1778 deletions(-) create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/CompareEnvironments.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/DynamicSecretRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/index.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/FolderRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/index.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/SecretRotationRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/index.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/EnvironmentSecretRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretNoAccessRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretRow.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/index.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/EnvironmentStatusCell.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/ResourceNameCell.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/index.ts create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/index.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/index.tsx diff --git a/frontend/src/components/projects/NewProjectModal.tsx b/frontend/src/components/projects/NewProjectModal.tsx index fa3ae2c70..1bbe9f6f1 100644 --- a/frontend/src/components/projects/NewProjectModal.tsx +++ b/frontend/src/components/projects/NewProjectModal.tsx @@ -153,7 +153,7 @@ const NewProjectForm = ({ onOpenChange }: NewProjectFormProps) => { reset(); onOpenChange(false); navigate({ - to: getProjectHomePage(project.type), + to: getProjectHomePage(project.type, project.environments), params: { projectId: project.id } }); } catch (err) { diff --git a/frontend/src/components/v2/EmptyState/EmptyState.tsx b/frontend/src/components/v2/EmptyState/EmptyState.tsx index 9816a3fe2..f6b926953 100644 --- a/frontend/src/components/v2/EmptyState/EmptyState.tsx +++ b/frontend/src/components/v2/EmptyState/EmptyState.tsx @@ -10,6 +10,7 @@ type Props = { children?: ReactNode; icon?: IconDefinition; iconSize?: SizeProp; + titleClassName?: string; }; export const EmptyState = ({ @@ -17,7 +18,8 @@ export const EmptyState = ({ className, children, icon = faCubesStacked, - iconSize = "2x" + iconSize = "2x", + titleClassName }: Props) => (
-
{title}
+
{title}
{children}
diff --git a/frontend/src/components/v2/FilterableSelect/FilterableSelect.tsx b/frontend/src/components/v2/FilterableSelect/FilterableSelect.tsx index 47a5acd56..7ab8b0f3c 100644 --- a/frontend/src/components/v2/FilterableSelect/FilterableSelect.tsx +++ b/frontend/src/components/v2/FilterableSelect/FilterableSelect.tsx @@ -67,7 +67,7 @@ export const FilterableSelect = ({ }), menuPortal: (provided) => ({ ...provided, - zIndex: 9999 + zIndex: 99999 }) }} tabSelectsValue={tabSelectsValue} diff --git a/frontend/src/helpers/project.ts b/frontend/src/helpers/project.ts index 3b04b263d..787ff453d 100644 --- a/frontend/src/helpers/project.ts +++ b/frontend/src/helpers/project.ts @@ -1,6 +1,6 @@ import { apiRequest } from "@app/config/request"; import { createWorkspace } from "@app/hooks/api/workspace/queries"; -import { ProjectType } from "@app/hooks/api/workspace/types"; +import { ProjectType, WorkspaceEnv } from "@app/hooks/api/workspace/types"; const secretsToBeAdded = [ { @@ -72,9 +72,12 @@ export const getProjectBaseURL = (type: ProjectType) => { } }; -export const getProjectHomePage = (type: ProjectType) => { +export const getProjectHomePage = (type: ProjectType, environments: WorkspaceEnv[]) => { switch (type) { case ProjectType.SecretManager: + if (environments.length > 0) + return `/projects/secret-management/$projectId/secrets/${environments[0].slug}`; + return "/projects/secret-management/$projectId/overview"; case ProjectType.CertificateManager: return "/projects/cert-management/$projectId/subscribers"; diff --git a/frontend/src/hooks/api/workspace/queries.tsx b/frontend/src/hooks/api/workspace/queries.tsx index 7a0e3d2e2..3c7a6d30c 100644 --- a/frontend/src/hooks/api/workspace/queries.tsx +++ b/frontend/src/hooks/api/workspace/queries.tsx @@ -47,7 +47,8 @@ import { UpdateEnvironmentDTO, UpdatePitVersionLimitDTO, UpdateProjectDTO, - Workspace + Workspace, + WorkspaceEnv } from "./types"; export const fetchWorkspaceById = async (workspaceId: string) => { @@ -396,12 +397,16 @@ export const useDeleteWorkspace = () => { export const useCreateWsEnvironment = () => { const queryClient = useQueryClient(); - return useMutation({ - mutationFn: ({ workspaceId, name, slug }) => { - return apiRequest.post(`/api/v1/workspace/${workspaceId}/environments`, { - name, - slug - }); + return useMutation({ + mutationFn: async ({ workspaceId, name, slug }) => { + const { data } = await apiRequest.post<{ environment: WorkspaceEnv }>( + `/api/v1/workspace/${workspaceId}/environments`, + { + name, + slug + } + ); + return data.environment; }, onSuccess: () => { queryClient.invalidateQueries({ diff --git a/frontend/src/layouts/ProjectLayout/components/AssumePrivilegeModeBanner/AssumePrivilegeModeBanner.tsx b/frontend/src/layouts/ProjectLayout/components/AssumePrivilegeModeBanner/AssumePrivilegeModeBanner.tsx index 2b4fcff80..995083ee7 100644 --- a/frontend/src/layouts/ProjectLayout/components/AssumePrivilegeModeBanner/AssumePrivilegeModeBanner.tsx +++ b/frontend/src/layouts/ProjectLayout/components/AssumePrivilegeModeBanner/AssumePrivilegeModeBanner.tsx @@ -36,7 +36,10 @@ export const AssumePrivilegeModeBanner = () => { }, { onSuccess: () => { - const url = getProjectHomePage(currentWorkspace.type); + const url = getProjectHomePage( + currentWorkspace.type, + currentWorkspace.environments + ); window.location.href = url.replace("$projectId", currentWorkspace.id); } } diff --git a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx index b66717a5c..ebc28a227 100644 --- a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx +++ b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx @@ -101,7 +101,7 @@ export const ProjectSelect = () => {
{ // to reproduce change this back to router.push and switch between two projects with different env count // look into this on dashboard revamp const url = linkOptions({ - to: getProjectHomePage(workspace.type), + to: getProjectHomePage(workspace.type, workspace.environments), params: { projectId: workspace.id } diff --git a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx index ad31d9017..8cc9f4b4a 100644 --- a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx +++ b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx @@ -71,9 +71,16 @@ export const SecretManagerLayout = () => { {({ isActive }) => ( diff --git a/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx b/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx index 6b1edaf1f..00890557f 100644 --- a/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx +++ b/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx @@ -48,7 +48,7 @@ import { useRequestProjectAccess, useSearchProjects } from "@app/hooks/api"; -import { ProjectType, Workspace } from "@app/hooks/api/workspace/types"; +import { ProjectType, Workspace, WorkspaceEnv } from "@app/hooks/api/workspace/types"; type Props = { onAddNewProject: () => void; @@ -144,13 +144,17 @@ export const AllProjectView = ({ type: projectTypeFilter }); - const handleAccessProject = async (type: ProjectType, projectId: string) => { + const handleAccessProject = async ( + type: ProjectType, + projectId: string, + environments: WorkspaceEnv[] + ) => { try { await orgAdminAccessProject.mutateAsync({ projectId }); await navigate({ - to: getProjectHomePage(type), + to: getProjectHomePage(type, environments), params: { projectId } @@ -307,7 +311,7 @@ export const AllProjectView = ({ onKeyDown={(evt) => { if (evt.key === "Enter" && workspace.isMember) { navigate({ - to: getProjectHomePage(workspace.type), + to: getProjectHomePage(workspace.type, workspace.environments), params: { projectId: workspace.id } @@ -317,7 +321,7 @@ export const AllProjectView = ({ onClick={() => { if (workspace.isMember) { navigate({ - to: getProjectHomePage(workspace.type), + to: getProjectHomePage(workspace.type, workspace.environments), params: { projectId: workspace.id } @@ -363,7 +367,7 @@ export const AllProjectView = ({ onClick={(e) => { e.stopPropagation(); e.preventDefault(); - handleAccessProject(workspace.type, workspace.id); + handleAccessProject(workspace.type, workspace.id, workspace.environments); }} disabled={ orgAdminAccessProject.variables?.projectId === workspace.id && diff --git a/frontend/src/pages/organization/ProjectsPage/components/MyProjectView.tsx b/frontend/src/pages/organization/ProjectsPage/components/MyProjectView.tsx index ea0d1d2ff..35d583897 100644 --- a/frontend/src/pages/organization/ProjectsPage/components/MyProjectView.tsx +++ b/frontend/src/pages/organization/ProjectsPage/components/MyProjectView.tsx @@ -185,7 +185,7 @@ export const MyProjectView = ({
{ navigate({ - to: getProjectHomePage(workspace.type), + to: getProjectHomePage(workspace.type, workspace.environments), params: { projectId: workspace.id } @@ -239,7 +239,7 @@ export const MyProjectView = ({
{ navigate({ - to: getProjectHomePage(workspace.type), + to: getProjectHomePage(workspace.type, workspace.environments), params: { projectId: workspace.id } diff --git a/frontend/src/pages/project/GroupDetailsByIDPage/components/GroupMembersSection/GroupMembersTable.tsx b/frontend/src/pages/project/GroupDetailsByIDPage/components/GroupMembersSection/GroupMembersTable.tsx index bcffb428f..7d155ba43 100644 --- a/frontend/src/pages/project/GroupDetailsByIDPage/components/GroupMembersSection/GroupMembersTable.tsx +++ b/frontend/src/pages/project/GroupDetailsByIDPage/components/GroupMembersSection/GroupMembersTable.tsx @@ -136,7 +136,7 @@ export const GroupMembersTable = ({ groupMembership }: Props) => { text: "User privilege assumption has started" }); - const url = getProjectHomePage(currentWorkspace.type); + const url = getProjectHomePage(currentWorkspace.type, currentWorkspace.environments); window.location.href = url.replace("$projectId", currentWorkspace.id); } } diff --git a/frontend/src/pages/project/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx b/frontend/src/pages/project/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx index 19d6c4acc..e1da4edab 100644 --- a/frontend/src/pages/project/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx +++ b/frontend/src/pages/project/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx @@ -67,7 +67,7 @@ const Page = () => { type: "success", text: "Identity privilege assumption has started" }); - const url = getProjectHomePage(currentWorkspace.type); + const url = getProjectHomePage(currentWorkspace.type, currentWorkspace.environments); window.location.href = url.replace("$projectId", currentWorkspace.id); } } diff --git a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx index 7bac32f75..7fadf2cb9 100644 --- a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx +++ b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx @@ -72,7 +72,7 @@ export const Page = () => { text: "User privilege assumption has started" }); - const url = getProjectHomePage(currentWorkspace.type); + const url = getProjectHomePage(currentWorkspace.type, currentWorkspace.environments); window.location.href = url.replace("$projectId", currentWorkspace.id); } } diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 910e07eac..2de6d12f3 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -1,908 +1,35 @@ -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { Helmet } from "react-helmet"; -import { useTranslation } from "react-i18next"; -import { subject } from "@casl/ability"; -import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; -import { - faAngleDown, - faArrowDown, - faArrowLeft, - faArrowRight, - faArrowRightToBracket, - faArrowUp, - faFilter, - faFingerprint, - faFolder, - faFolderBlank, - faFolderPlus, - faKey, - faPlus, - faRotate -} from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Link, useNavigate, useRouter, useSearch } from "@tanstack/react-router"; -import { twMerge } from "tailwind-merge"; +import { useEffect } from "react"; +import { faLayerGroup } from "@fortawesome/free-solid-svg-icons"; +import { useQueryClient } from "@tanstack/react-query"; +import { useNavigate } from "@tanstack/react-router"; -import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; -import { createNotification } from "@app/components/notifications"; -import { ProjectPermissionCan } from "@app/components/permissions"; -import { CreateSecretRotationV2Modal } from "@app/components/secret-rotations-v2"; -import { DeleteSecretRotationV2Modal } from "@app/components/secret-rotations-v2/DeleteSecretRotationV2Modal"; -import { EditSecretRotationV2Modal } from "@app/components/secret-rotations-v2/EditSecretRotationV2Modal"; -import { RotateSecretRotationV2Modal } from "@app/components/secret-rotations-v2/RotateSecretRotationV2Modal"; -import { ViewSecretRotationV2GeneratedCredentialsModal } from "@app/components/secret-rotations-v2/ViewSecretRotationV2GeneratedCredentials"; -import { - Button, - Checkbox, - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuTrigger, - EmptyState, - IconButton, - Lottie, - Modal, - ModalContent, - PageHeader, - Pagination, - Table, - TableContainer, - TableSkeleton, - TBody, - Td, - TFoot, - Th, - THead, - Tooltip, - Tr -} from "@app/components/v2"; -import { HeaderResizer } from "@app/components/v2/HeaderResizer/HeaderResizer"; -import { ROUTE_PATHS } from "@app/const/routes"; -import { - ProjectPermissionActions, - ProjectPermissionDynamicSecretActions, - ProjectPermissionSub, - useProjectPermission, - useSubscription, - useWorkspace -} from "@app/context"; -import { ProjectPermissionSecretRotationActions } from "@app/context/ProjectPermissionContext/types"; -import { - getUserTablePreference, - PreferenceKey, - setUserTablePreference -} from "@app/helpers/userTablePreferences"; -import { - useDebounce, - usePagination, - usePopUp, - useResetPageHelper, - useResizableHeaderHeight, - useToggle -} from "@app/hooks"; -import { - useCreateFolder, - useCreateSecretV3, - useDeleteSecretV3, - useGetImportedSecretsAllEnvs, - useGetWsTags, - useUpdateSecretV3 -} from "@app/hooks/api"; -import { useGetProjectSecretsOverview } from "@app/hooks/api/dashboard/queries"; -import { DashboardSecretsOrderBy, ProjectSecretsImportedBy } from "@app/hooks/api/dashboard/types"; -import { OrderByDirection } from "@app/hooks/api/generic/types"; -import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries"; -import { TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types"; -import { TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2"; -import { - SecretType, - SecretV3RawSanitized, - TSecretFolder, - WorkspaceEnv -} from "@app/hooks/api/types"; +import { Button, ContentLoader, EmptyState } from "@app/components/v2"; +import { useWorkspace } from "@app/context"; +import { getProjectHomePage } from "@app/helpers/project"; +import { usePopUp } from "@app/hooks"; +import { workspaceKeys } from "@app/hooks/api"; import { ProjectVersion } from "@app/hooks/api/workspace/types"; -import { - useDynamicSecretOverview, - useFolderOverview, - useSecretOverview, - useSecretRotationOverview -} from "@app/hooks/utils"; -import { SecretOverviewSecretRotationRow } from "@app/pages/secret-manager/OverviewPage/components/SecretOverviewSecretRotationRow"; -import { getHeaderStyle } from "@app/pages/secret-manager/OverviewPage/components/utils"; +import { AddEnvironmentModal } from "@app/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal"; -import { CreateDynamicSecretForm } from "../SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm"; -import { FolderForm } from "../SecretDashboardPage/components/ActionBar/FolderForm"; -import { - HIDDEN_SECRET_VALUE, - HIDDEN_SECRET_VALUE_API_MASK -} from "../SecretDashboardPage/components/SecretListView/SecretItem"; -import { CreateSecretForm } from "./components/CreateSecretForm"; -import { FolderBreadCrumbs } from "./components/FolderBreadCrumbs"; -import { SecretOverviewDynamicSecretRow } from "./components/SecretOverviewDynamicSecretRow"; -import { SecretOverviewFolderRow } from "./components/SecretOverviewFolderRow"; -import { - SecretNoAccessOverviewTableRow, - SecretOverviewTableRow -} from "./components/SecretOverviewTableRow"; -import { SecretSearchInput } from "./components/SecretSearchInput"; -import { SecretTableResourceCount } from "./components/SecretTableResourceCount"; import { SecretV2MigrationSection } from "./components/SecretV2MigrationSection"; -import { SelectionPanel } from "./components/SelectionPanel/SelectionPanel"; - -export enum EntryType { - FOLDER = "folder", - SECRET = "secret" -} - -enum RowType { - Folder = "folder", - DynamicSecret = "dynamic", - Secret = "secret", - SecretRotation = "rotation" -} - -type Filter = { - [key in RowType]: boolean; -}; - -const DEFAULT_FILTER_STATE = { - [RowType.Folder]: false, - [RowType.DynamicSecret]: false, - [RowType.Secret]: false, - [RowType.SecretRotation]: false -}; - -const DEFAULT_COLLAPSED_HEADER_HEIGHT = 120; export const OverviewPage = () => { - const { t } = useTranslation(); - - const router = useRouter(); - const navigate = useNavigate({ - from: ROUTE_PATHS.SecretManager.OverviewPage.path - }); - const routerSearch = useSearch({ - from: ROUTE_PATHS.SecretManager.OverviewPage.id, - select: (el) => ({ - secretPath: el.secretPath, - search: el.search - }) - }); - const [scrollOffset, setScrollOffset] = useState(0); - const [debouncedScrollOffset] = useDebounce(scrollOffset); - const { permission } = useProjectPermission(); - const tableRef = useRef(null); const { currentWorkspace } = useWorkspace(); const isProjectV3 = currentWorkspace?.version === ProjectVersion.V3; - const workspaceId = currentWorkspace?.id as string; - const projectSlug = currentWorkspace?.slug as string; - const [searchFilter, setSearchFilter] = useState(""); - const [debouncedSearchFilter, setDebouncedSearchFilter] = useDebounce(searchFilter); - const secretPath = (routerSearch?.secretPath as string) || "/"; - const { subscription } = useSubscription(); - const [collapseEnvironments, setCollapseEnvironments] = useToggle( - Boolean(localStorage.getItem("overview-collapse-environments")) - ); - - const handleToggleNarrowHeader = () => { - setCollapseEnvironments.toggle(); - if (collapseEnvironments) { - localStorage.removeItem("overview-collapse-environments"); - } else { - localStorage.setItem("overview-collapse-environments", "true"); - } - }; - - const [filter, setFilter] = useState(DEFAULT_FILTER_STATE); - const [filterHistory, setFilterHistory] = useState< - Map - >(new Map()); - - const [selectedEntries, setSelectedEntries] = useState<{ - // selectedEntries[name/key][envSlug][resource] - [EntryType.FOLDER]: Record>; - [EntryType.SECRET]: Record>; - }>({ - [EntryType.FOLDER]: {}, - [EntryType.SECRET]: {} - }); - - const { - offset, - limit, - orderDirection, - setOrderDirection, - setPage, - perPage, - page, - setPerPage, - orderBy - } = usePagination(DashboardSecretsOrderBy.Name, { - initPerPage: getUserTablePreference("secretOverviewTable", PreferenceKey.PerPage, 100) - }); - - const handlePerPageChange = (newPerPage: number) => { - setPerPage(newPerPage); - setUserTablePreference("secretOverviewTable", PreferenceKey.PerPage, newPerPage); - }; - - const resetSelectedEntries = useCallback(() => { - setSelectedEntries({ - [EntryType.FOLDER]: {}, - [EntryType.SECRET]: {} - }); - }, []); + const queryClient = useQueryClient(); + const navigate = useNavigate(); + const { popUp, handlePopUpToggle, handlePopUpOpen } = usePopUp(["addEnvironment"] as const); useEffect(() => { - const onRouteChangeStart = () => { - resetSelectedEntries(); - }; - - const unsubscribeRouterEvent = router.subscribe("onLoad", onRouteChangeStart); - - return () => { - unsubscribeRouterEvent(); - }; - }, []); - - const userAvailableEnvs = currentWorkspace?.environments || []; - const userAvailableDynamicSecretEnvs = userAvailableEnvs.filter((env) => - permission.can( - ProjectPermissionDynamicSecretActions.CreateRootCredential, - subject(ProjectPermissionSub.DynamicSecrets, { - environment: env.slug, - secretPath, - metadata: ["*"] - }) - ) - ); - const userAvailableSecretRotationEnvs = userAvailableEnvs.filter((env) => - permission.can( - ProjectPermissionSecretRotationActions.Create, - subject(ProjectPermissionSub.SecretRotation, { - environment: env.slug, - secretPath - }) - ) - ); - - const [filteredEnvs, setFilteredEnvs] = useState([]); - const visibleEnvs = filteredEnvs.length ? filteredEnvs : userAvailableEnvs; - - const { - secretImports, - isImportedSecretPresentInEnv, - getImportedSecretByKey, - getEnvImportedSecretKeyCount - } = useGetImportedSecretsAllEnvs({ - projectId: workspaceId, - path: secretPath, - environments: (userAvailableEnvs || []).map(({ slug }) => slug) - }); - - const isFilteredByResources = Object.values(filter).some(Boolean); - const { isPending: isOverviewLoading, data: overview } = useGetProjectSecretsOverview( - { - projectId: workspaceId, - environments: visibleEnvs.map((env) => env.slug), - secretPath, - orderDirection, - orderBy, - includeFolders: isFilteredByResources ? filter.folder : true, - includeDynamicSecrets: isFilteredByResources ? filter.dynamic : true, - includeSecrets: isFilteredByResources ? filter.secret : true, - includeImports: true, - includeSecretRotations: isFilteredByResources ? filter.rotation : true, - search: debouncedSearchFilter, - limit, - offset - }, - { enabled: isProjectV3 } - ); - - const { - secrets, - folders, - dynamicSecrets, - secretRotations, - totalFolderCount, - totalSecretCount, - totalDynamicSecretCount, - totalSecretRotationCount, - totalImportCount, - totalCount = 0, - totalUniqueFoldersInPage, - totalUniqueSecretsInPage, - totalUniqueSecretImportsInPage, - totalUniqueDynamicSecretsInPage, - totalUniqueSecretRotationsInPage, - importedByEnvs, - usedBySecretSyncs - } = overview ?? {}; - - const secretImportsShaped = secretImports - ?.flatMap(({ data }) => data) - .filter(Boolean) - .flatMap((item) => item?.secrets || []); - - const handleIsImportedSecretPresentInEnv = (envSlug: string, secretName: string) => { - if (secrets?.some((s) => s.key === secretName && s.env === envSlug)) { - return false; - } - if (secretImportsShaped.some((s) => s.key === secretName && s.sourceEnv === envSlug)) { - return true; - } - return isImportedSecretPresentInEnv(envSlug, secretName); - }; - - useResetPageHelper({ - totalCount, - offset, - setPage - }); - - const { folderNamesAndDescriptions, getFolderByNameAndEnv, isFolderPresentInEnv } = - useFolderOverview(folders); - - const { dynamicSecretNames, isDynamicSecretPresentInEnv } = - useDynamicSecretOverview(dynamicSecrets); - - const { - secretRotationNames, - isSecretRotationPresentInEnv, - getSecretRotationByName, - getSecretRotationStatusesByName - } = useSecretRotationOverview(secretRotations); - - const { secKeys, getEnvSecretKeyCount } = useSecretOverview( - secrets?.concat(secretImportsShaped) || [] - ); - - const getSecretByKey = useCallback( - (env: string, key: string) => { - const sec = secrets?.find((s) => s.env === env && s.key === key); - return sec; - }, - [secrets] - ); - - const { data: tags } = useGetWsTags( - permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags) ? workspaceId : "" - ); - - const { mutateAsync: createSecretV3 } = useCreateSecretV3(); - const { mutateAsync: updateSecretV3 } = useUpdateSecretV3(); - const { mutateAsync: deleteSecretV3 } = useDeleteSecretV3(); - const { mutateAsync: createFolder } = useCreateFolder(); - const { mutateAsync: updateFolderBatch } = useUpdateFolderBatch(); - - const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([ - "addSecretsInAllEnvs", - "addFolder", - "misc", - "updateFolder", - "addDynamicSecret", - "addSecretRotation", - "editSecretRotation", - "rotateSecretRotation", - "viewSecretRotationGeneratedCredentials", - "deleteSecretRotation", - "upgradePlan" - ] as const); - - const handleFolderCreate = async (folderName: string, description: string | null) => { - const promises = userAvailableEnvs.map((env) => { - const environment = env.slug; - return createFolder({ - name: folderName, - path: secretPath, - environment, - projectId: workspaceId, - description - }); - }); - - const results = await Promise.allSettled(promises); - const isFoldersAdded = results.some((result) => result.status === "fulfilled"); - - if (isFoldersAdded) { - handlePopUpClose("addFolder"); - createNotification({ - type: "success", - text: "Successfully created folder" - }); - } else { - createNotification({ - type: "error", - text: "Failed to create folder" - }); - } - }; - - const handleFolderUpdate = async (newFolderName: string, description: string | null) => { - const { name: oldFolderName } = popUp.updateFolder.data as TSecretFolder; - - const updatedFolders: TUpdateFolderBatchDTO["folders"] = []; - userAvailableEnvs.forEach((env) => { - if ( - permission.can( - ProjectPermissionActions.Edit, - subject(ProjectPermissionSub.SecretFolders, { environment: env.slug, secretPath }) - ) - ) { - const folder = getFolderByNameAndEnv(oldFolderName, env.slug); - if (folder) { - updatedFolders.push({ - environment: env.slug, - name: newFolderName, - id: folder.id, - path: secretPath, - description - }); - } - } - }); - - if (updatedFolders.length === 0) { - createNotification({ - type: "info", - text: "You don't have access to rename selected folder" - }); - - handlePopUpClose("updateFolder"); - return; - } - - try { - await updateFolderBatch({ - projectSlug, - folders: updatedFolders, - projectId: workspaceId - }); - createNotification({ - type: "success", - text: "Successfully renamed folder across environments" - }); - } catch { - createNotification({ - type: "error", - text: "Failed to rename folder across environments" - }); - } finally { - handlePopUpClose("updateFolder"); - } - }; - - const handleSecretCreate = async (env: string, key: string, value: string) => { - try { - // create folder if not existing - if (secretPath !== "/") { - // /hello/world -> [hello","world"] - const pathSegment = secretPath.split("/").filter(Boolean); - const parentPath = `/${pathSegment.slice(0, -1).join("/")}`; - const folderName = pathSegment.at(-1); - const canCreateFolder = permission.can( - ProjectPermissionActions.Create, - subject(ProjectPermissionSub.SecretFolders, { - environment: env, - secretPath: parentPath - }) - ); - if (folderName && parentPath && canCreateFolder) { - await createFolder({ - projectId: workspaceId, - path: parentPath, - environment: env, - name: folderName - }); - } - } - const result = await createSecretV3({ - environment: env, - workspaceId, - secretPath, - secretKey: key, - secretValue: value, - secretComment: "", - type: SecretType.Shared - }); - - if ("approval" in result) { - createNotification({ - type: "info", - text: "Requested change has been sent for review" - }); - } else { - createNotification({ - type: "success", - text: "Successfully created secret" - }); - } - } catch (error) { - console.log(error); - createNotification({ - type: "error", - text: "Failed to create secret" - }); - } - }; - - const handleEnvSelect = (envId: string) => { - if (filteredEnvs.map((env) => env.id).includes(envId)) { - setFilteredEnvs(filteredEnvs.filter((env) => env.id !== envId)); - } else { - setFilteredEnvs(filteredEnvs.concat(userAvailableEnvs.filter((env) => env.id === envId))); - } - }; - - const handleSecretUpdate = async ( - env: string, - key: string, - value: string, - secretValueHidden: boolean, - type = SecretType.Shared - ) => { - let secretValue: string | undefined = value; - - if ( - secretValueHidden && - (value === HIDDEN_SECRET_VALUE_API_MASK || value === HIDDEN_SECRET_VALUE) - ) { - secretValue = undefined; - } - - try { - const result = await updateSecretV3({ - environment: env, - workspaceId, - secretPath, - secretKey: key, - secretValue, - type - }); - - if ("approval" in result) { - createNotification({ - type: "info", - text: "Requested change has been sent for review" - }); - } else { - createNotification({ - type: "success", - text: "Successfully updated secret" - }); - } - } catch (error) { - console.log(error); - createNotification({ - type: "error", - text: "Failed to update secret" - }); - } - }; - - const handleSecretDelete = async (env: string, key: string, secretId?: string) => { - try { - const result = await deleteSecretV3({ - environment: env, - workspaceId, - secretPath, - secretKey: key, - secretId, - type: SecretType.Shared - }); - - if ("approval" in result) { - createNotification({ - type: "info", - text: "Requested change has been sent for review" - }); - } else { - createNotification({ - type: "success", - text: "Successfully deleted secret" - }); - } - } catch (error) { - console.log(error); - createNotification({ - type: "error", - text: "Failed to delete secret" - }); - } - }; - - const handleResetSearch = (path: string) => { - const restore = filterHistory.get(path); - setFilter(restore?.filter ?? DEFAULT_FILTER_STATE); - const el = restore?.searchFilter ?? ""; - setSearchFilter(el); - setDebouncedSearchFilter(el); - }; - - const handleFolderClick = (path: string) => { - // store for breadcrumb nav to restore previously used filters - setFilterHistory((prev) => { - const curr = new Map(prev); - curr.set(secretPath, { filter, searchFilter }); - return curr; - }); - - navigate({ - search: (prev) => ({ - ...prev, - secretPath: `${routerSearch.secretPath === "/" ? "" : routerSearch.secretPath}/${path}` - }) - }).then(() => { - setFilter(DEFAULT_FILTER_STATE); - setSearchFilter(""); - setDebouncedSearchFilter(""); - }); - }; - - const handleExploreEnvClick = async (slug: string) => { - if (secretPath !== "/") { - const pathSegment = secretPath.split("/").filter(Boolean); - const parentPath = `/${pathSegment.slice(0, -1).join("/")}`; - const folderName = pathSegment.at(-1); - const canCreateFolder = permission.can( - ProjectPermissionActions.Create, - subject(ProjectPermissionSub.SecretFolders, { - environment: slug, - secretPath: parentPath - }) - ); - if (folderName && parentPath && canCreateFolder) { - await createFolder({ - projectId: workspaceId, - environment: slug, - path: parentPath, - name: folderName - }); - } - } - - const query: Record = { ...routerSearch, search: searchFilter }; - const envIndex = visibleEnvs.findIndex((el) => slug === el.slug); - if (envIndex !== -1) { + if (currentWorkspace.environments.length) { navigate({ - to: "/projects/secret-management/$projectId/secrets/$envSlug", + to: getProjectHomePage(currentWorkspace.type, currentWorkspace.environments), params: { - projectId: workspaceId, - envSlug: slug - }, - search: query - }); - } - }; - - const handleToggleRowType = useCallback( - (rowType: RowType) => - setFilter((state) => { - return { - ...state, - [rowType]: !state[rowType] - }; - }), - [] - ); - - const allRowsSelectedOnPage = useMemo(() => { - if (!secrets?.length && !folders?.length) return { isChecked: false, isIndeterminate: false }; - - if ( - (!secrets?.length || - secrets?.every((secret) => selectedEntries[EntryType.SECRET][secret.key])) && - (!folders?.length || - folders?.every((folder) => selectedEntries[EntryType.FOLDER][folder.name])) - ) - return { isChecked: true, isIndeterminate: false }; - - if ( - secrets?.some((secret) => selectedEntries[EntryType.SECRET][secret.key]) || - folders?.some((folder) => selectedEntries[EntryType.FOLDER][folder.name]) - ) - return { isChecked: true, isIndeterminate: true }; - - return { isChecked: false, isIndeterminate: false }; - }, [selectedEntries, secrets, folders]); - - const toggleSelectedEntry = useCallback( - (type: EntryType, key: string) => { - const isChecked = Boolean(selectedEntries[type]?.[key]); - const newChecks = { ...selectedEntries }; - - // remove selection if its present else add it - if (isChecked) { - delete newChecks[type][key]; - } else { - newChecks[type][key] = {}; - userAvailableEnvs.forEach((env) => { - const resource = - type === EntryType.SECRET - ? getSecretByKey(env.slug, key) - : getFolderByNameAndEnv(key, env.slug); - - if (resource) newChecks[type][key][env.slug] = resource; - }); - } - - setSelectedEntries(newChecks); - }, - [selectedEntries, getFolderByNameAndEnv, getSecretByKey] - ); - - const toggleSelectAllRows = () => { - const newChecks = { ...selectedEntries }; - - userAvailableEnvs.forEach((env) => { - secrets?.forEach((secret) => { - if (allRowsSelectedOnPage.isChecked) { - delete newChecks[EntryType.SECRET][secret.key]; - } else { - if (!newChecks[EntryType.SECRET][secret.key]) - newChecks[EntryType.SECRET][secret.key] = {}; - - const resource = getSecretByKey(env.slug, secret.key); - - if (resource) newChecks[EntryType.SECRET][secret.key][env.slug] = resource; + projectId: currentWorkspace.id } }); - - folders?.forEach((folder) => { - if (allRowsSelectedOnPage.isChecked) { - delete newChecks[EntryType.FOLDER][folder.name]; - } else { - if (!newChecks[EntryType.FOLDER][folder.name]) - newChecks[EntryType.FOLDER][folder.name] = {}; - - const resource = getFolderByNameAndEnv(folder.name, env.slug); - - if (resource) newChecks[EntryType.FOLDER][folder.name][env.slug] = resource; - } - }); - }); - - setSelectedEntries(newChecks); - }; - - useEffect(() => { - if (routerSearch.search) { - const { search, ...query } = routerSearch; - // temp workaround until we transition state to query params - navigate({ - search: query - }); - setFilter(DEFAULT_FILTER_STATE); - setSearchFilter(routerSearch.search as string); - setDebouncedSearchFilter(routerSearch.search as string); } - }, [routerSearch.search]); - - const selectedKeysCount = Object.keys(selectedEntries.secret).length; - - const secretsToDeleteKeys = useMemo(() => { - return Object.values(selectedEntries.secret).flatMap((entries) => - Object.values(entries).map((secret) => secret.key) - ); - }, [selectedEntries]); - - const filterAndMergeEnvironments = ( - envNames: string[], - envs: { environment: string; importedBy: ProjectSecretsImportedBy[] }[] - ): ProjectSecretsImportedBy[] => { - const environments = envs.filter((env) => envNames.includes(env.environment)); - - if (environments.length === 0) return []; - - const allImportedBy = environments.flatMap((env) => env.importedBy); - const groupedBySlug: Record = {}; - - allImportedBy.forEach((item) => { - const { slug } = item.environment; - if (!groupedBySlug[slug]) groupedBySlug[slug] = []; - groupedBySlug[slug].push(item); - }); - - const mergedImportedBy = Object.values(groupedBySlug).map((group) => { - const { environment } = group[0]; - const allFolders = group.flatMap((item) => item.folders); - - const foldersByName: Record = {}; - allFolders.forEach((folder) => { - if (!foldersByName[folder.name]) foldersByName[folder.name] = []; - foldersByName[folder.name].push(folder); - }); - - const mergedFolders = Object.entries(foldersByName).map(([name, foldersData]) => { - const isImported = foldersData.some((folder) => folder.isImported); - const allSecrets = foldersData.flatMap((folder) => folder.secrets || []); - - const uniqueSecrets: { - secretId: string; - referencedSecretKey: string; - referencedSecretEnv: string; - }[] = []; - const secretIds = new Set(); - - allSecrets - .filter( - (secret) => - !secretsToDeleteKeys || - secretsToDeleteKeys.length === 0 || - secretsToDeleteKeys.includes(secret.referencedSecretKey) - ) - .forEach((secret) => { - if (!secretIds.has(secret.secretId)) { - secretIds.add(secret.secretId); - uniqueSecrets.push(secret); - } - }); - - return { - name, - isImported, - ...(uniqueSecrets.length > 0 ? { secrets: uniqueSecrets } : {}) - }; - }); - - return { - environment, - folders: mergedFolders.filter( - (folder) => folder.isImported || (folder.secrets && folder.secrets.length > 0) - ) - }; - }); - - return mergedImportedBy; - }; - - const importedBy = useMemo(() => { - if (!importedByEnvs) return []; - if (selectedKeysCount === 0) { - return filterAndMergeEnvironments( - visibleEnvs.map(({ slug }) => slug), - importedByEnvs - ); - } - return filterAndMergeEnvironments( - Object.values(selectedEntries.secret).flatMap((entries) => Object.keys(entries)), - importedByEnvs - ); - }, [importedByEnvs, selectedEntries, selectedKeysCount]); - - const storedHeight = Number.parseInt( - localStorage.getItem("overview-header-height") ?? DEFAULT_COLLAPSED_HEADER_HEIGHT.toString(), - 10 - ); - const { headerHeight, handleMouseDown, isResizing } = useResizableHeaderHeight({ - initialHeight: Number.isNaN(storedHeight) ? DEFAULT_COLLAPSED_HEADER_HEIGHT : storedHeight, - minHeight: DEFAULT_COLLAPSED_HEADER_HEIGHT, - maxHeight: 288 - }); - - const debouncedHeaderHeight = useDebounce(headerHeight); - - useEffect(() => { - localStorage.setItem("overview-header-height", debouncedHeaderHeight.toString()); - }, [debouncedHeaderHeight]); - - if (isProjectV3 && visibleEnvs.length > 0 && isOverviewLoading) { - return ( -
- -
- ); - } - - const canViewOverviewPage = Boolean(userAvailableEnvs.length); - // This is needed to also show imports from other paths – right now those are missing. - // const combinedKeys = [...secKeys, ...secretImports.map((impSecrets) => impSecrets?.data?.map((impSec) => impSec.secrets?.map((impSecKey) => impSecKey.key))).flat().flat()]; - - const isTableEmpty = totalCount === 0; - - const isTableFiltered = isFilteredByResources || filteredEnvs.length > 0; + }, []); if (!isProjectV3) return ( @@ -910,797 +37,46 @@ export const OverviewPage = () => {
); + + if (currentWorkspace.environments.length) { + return ; + } + return ( -
- - {t("common.head-title", { title: t("dashboard.title") })} - - - -
-
- - Inject your secrets using - - Infisical CLI - - , - - Infisical API - - , - - Infisical SDKs - - , and - - more - - . Click the Explore button to view the secret details section. -

+
+ handlePopUpToggle("addEnvironment", isOpen)} + onComplete={async (env) => { + await queryClient.refetchQueries({ + queryKey: workspaceKeys.getWorkspaceById(currentWorkspace.id) + }); + + navigate({ + to: getProjectHomePage(currentWorkspace.type, [env]), + params: { + projectId: currentWorkspace.id } - /> -
-
- -
- {isTableFiltered && ( - - )} - {userAvailableEnvs.length > 0 && ( - - - - - - {/* - - */} - Filter by Resource - - { - e.preventDefault(); - handleToggleRowType(RowType.Folder); - }} - icon={filter[RowType.Folder] && } - iconPos="right" - > -
- - Folders -
-
- { - e.preventDefault(); - handleToggleRowType(RowType.DynamicSecret); - }} - icon={filter[RowType.DynamicSecret] && } - iconPos="right" - > -
- - Dynamic Secrets -
-
- { - e.preventDefault(); - handleToggleRowType(RowType.SecretRotation); - }} - icon={ - filter[RowType.SecretRotation] && - } - iconPos="right" - > -
- - Secret Rotations -
-
- { - e.preventDefault(); - handleToggleRowType(RowType.Secret); - }} - icon={filter[RowType.Secret] && } - iconPos="right" - > -
- - Secrets -
-
- Filter by Environment - {userAvailableEnvs.map((availableEnv) => { - const { id: envId, name } = availableEnv; - - const isEnvSelected = filteredEnvs.map((env) => env.id).includes(envId); - return ( - { - e.preventDefault(); - handleEnvSelect(envId); - }} - key={envId} - icon={isEnvSelected && } - iconPos="right" - > -
{name}
-
- ); - })} -
-
- )} - - {userAvailableEnvs.length > 0 && ( -
- - handlePopUpToggle("misc", isOpen)} - > - - - - - - -
- - {(isAllowed) => ( - - )} - - - - - - - -
-
-
-
- )} -
-
- -
- setScrollOffset(e.currentTarget.scrollLeft)} - className="thin-scrollbar max-h-[66vh] overflow-y-auto rounded-b-none" + }); + }} + /> + +
+ Create an environment to get started +
-
- handlePopUpToggle("addSecretsInAllEnvs", isOpen)} - > - e.preventDefault()} - > - handlePopUpClose("addSecretsInAllEnvs")} - /> - - - handlePopUpToggle("addFolder", isOpen)} - > - - - - - handlePopUpToggle("updateFolder", isOpen)} - > - - )?.name} - defaultDescription={ - (popUp.updateFolder?.data as Pick)?.description - } - onUpdateFolder={handleFolderUpdate} - showDescriptionOverwriteWarning - /> - - - handlePopUpToggle("addDynamicSecret", isOpen)} - projectSlug={projectSlug} - environments={userAvailableDynamicSecretEnvs} - secretPath={secretPath} - /> - {subscription && ( - handlePopUpToggle("upgradePlan", isOpen)} - text={ - subscription.slug === null - ? "You can perform this action under an Enterprise license" - : "You can perform this action if you switch to Infisical's Team plan" - } - /> - )} - handlePopUpToggle("addSecretRotation", isOpen)} - /> - handlePopUpToggle("editSecretRotation", isOpen)} - /> - handlePopUpToggle("rotateSecretRotation", isOpen)} - /> - - handlePopUpToggle("viewSecretRotationGeneratedCredentials", isOpen) - } - /> - handlePopUpToggle("deleteSecretRotation", isOpen)} - /> +
); }; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx index 9241c2c6f..1307fcee5 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx @@ -52,6 +52,7 @@ import { OrderByDirection } from "@app/hooks/api/generic/types"; import { PendingAction } from "@app/hooks/api/secretFolders/types"; import { useCreateCommit } from "@app/hooks/api/secrets/mutations"; import { SecretV3RawSanitized } from "@app/hooks/api/types"; +import { ProjectVersion } from "@app/hooks/api/workspace/types"; import { usePathAccessPolicies } from "@app/hooks/usePathAccessPolicies"; import { useResizableColWidth } from "@app/hooks/useResizableColWidth"; import { hasSecretReadValueOrDescribePermission } from "@app/lib/fn/permission"; @@ -64,6 +65,7 @@ import { ActionBar } from "./components/ActionBar"; import { CommitForm } from "./components/CommitForm"; import { CreateSecretForm } from "./components/CreateSecretForm"; import { DynamicSecretListView } from "./components/DynamicSecretListView"; +import { EnvironmentTabs } from "./components/EnvironmentTabs"; import { FolderListView } from "./components/FolderListView"; import { PitDrawer } from "./components/PitDrawer"; import { SecretDropzone } from "./components/SecretDropzone"; @@ -710,12 +712,18 @@ const Page = () => { const mergedSecrets = getMergedSecretsWithPending(); const mergedFolders = getMergedFoldersWithPending(); + + if (!(currentWorkspace?.version === ProjectVersion.V3)) + return ( +
+ +
+ ); + return (
env.slug === environment)?.name ?? environment - } + title="Secrets Management" description={

Inject your secrets using @@ -759,6 +767,7 @@ const Page = () => { } /> + {!isRollbackMode ? ( <> { + const { currentWorkspace } = useWorkspace(); + const compareEnvironmentsKey = `compare-environments-${currentWorkspace.id}`; + + const [selectedEnvironments, setSelectedEnvironments] = useState(() => { + try { + const storedEnvironments = JSON.parse(localStorage.getItem(compareEnvironmentsKey) ?? "[]"); + + if (Array.isArray(storedEnvironments) && storedEnvironments.length > 0) { + const potentialEnvs: string[] = []; + storedEnvironments.forEach((env) => { + if (typeof env === "string") { + potentialEnvs.push(env); + } + }); + + return currentWorkspace.environments.filter((env) => potentialEnvs.includes(env.id)); + } + } catch { + // do nothing and proceed + } + return currentWorkspace.environments.slice(0, 2); + }); + + const [filter, setFilter] = useState(DEFAULT_FILTER_STATE); + + const { + offset, + limit, + orderDirection, + setOrderDirection, + setPage, + perPage, + page, + setPerPage, + orderBy + } = usePagination(DashboardSecretsOrderBy.Name, { + initPerPage: getUserTablePreference("secretCompareTable", PreferenceKey.PerPage, 50) + }); + + const handlePerPageChange = (newPerPage: number) => { + setPerPage(newPerPage); + setUserTablePreference("secretCompareTable", PreferenceKey.PerPage, newPerPage); + }; + + const workspaceId = currentWorkspace.id; + const [searchFilter, setSearchFilter] = useState(""); + const [debouncedSearchFilter] = useDebounce(searchFilter); + const [debouncedSelectedEnvironments] = useDebounce(selectedEnvironments); + + useEffect(() => { + localStorage.setItem( + compareEnvironmentsKey, + JSON.stringify(selectedEnvironments.map((env) => env.id)) + ); + }, [debouncedSelectedEnvironments]); + + const { + secretImports, + isImportedSecretPresentInEnv, + getImportedSecretByKey, + getEnvImportedSecretKeyCount + } = useGetImportedSecretsAllEnvs({ + projectId: workspaceId, + path: secretPath, + environments: (currentWorkspace.environments || []).map(({ slug }) => slug) + }); + + const compareEnvironments = selectedEnvironments.length + ? selectedEnvironments + : currentWorkspace.environments; + + const isFilteredByResources = Object.values(filter).some(Boolean); + const { isPending: isOverviewLoading, data: overview } = useGetProjectSecretsOverview( + { + projectId: workspaceId, + environments: compareEnvironments.map((env) => env.slug), + secretPath, + orderDirection, + orderBy, + includeFolders: isFilteredByResources ? filter.folder : true, + includeDynamicSecrets: isFilteredByResources ? filter.dynamic : true, + includeSecrets: isFilteredByResources ? filter.secret : true, + includeImports: true, + includeSecretRotations: isFilteredByResources ? filter.rotation : true, + search: debouncedSearchFilter, + limit, + offset + }, + { enabled: Boolean(compareEnvironments.length) } + ); + + const { + secrets, + folders, + dynamicSecrets, + secretRotations, + totalFolderCount, + totalSecretCount, + totalDynamicSecretCount, + totalSecretRotationCount, + totalImportCount, + totalCount = 0, + totalUniqueFoldersInPage, + totalUniqueSecretsInPage, + totalUniqueSecretImportsInPage, + totalUniqueDynamicSecretsInPage, + totalUniqueSecretRotationsInPage + } = overview ?? {}; + + const secretImportsShaped = secretImports + ?.flatMap(({ data }) => data) + .filter(Boolean) + .flatMap((item) => item?.secrets || []); + + const handleIsImportedSecretPresentInEnv = (envSlug: string, secretName: string) => { + if (secrets?.some((s) => s.key === secretName && s.env === envSlug)) { + return false; + } + if (secretImportsShaped.some((s) => s.key === secretName && s.sourceEnv === envSlug)) { + return true; + } + return isImportedSecretPresentInEnv(envSlug, secretName); + }; + + useResetPageHelper({ + totalCount, + offset, + setPage + }); + + const { folderNamesAndDescriptions, isFolderPresentInEnv } = useFolderOverview(folders); + + const { dynamicSecretNames, isDynamicSecretPresentInEnv } = + useDynamicSecretOverview(dynamicSecrets); + + const { secretRotationNames, isSecretRotationPresentInEnv, getSecretRotationByName } = + useSecretRotationOverview(secretRotations); + + const { secKeys, getEnvSecretKeyCount } = useSecretOverview( + secrets?.concat(secretImportsShaped) || [] + ); + + const getSecretByKey = useCallback( + (env: string, key: string) => { + const sec = secrets?.find((s) => s.env === env && s.key === key); + return sec; + }, + [secrets] + ); + + const [tableWidth, setTableWidth] = useState(0); + + const tableRef = useRef(null); + + const { handleMouseDown, isResizing, colWidth } = useResizableColWidth({ + initialWidth: 320, + minWidth: 160, + maxWidth: tableRef.current + ? tableRef.current.clientWidth - COL_WIDTH_OFFSET // ensure value column can't collapse completely + : 800 + }); + + const handleToggleRowType = useCallback( + (rowType: RowType) => + setFilter((state) => { + return { + ...state, + [rowType]: !state[rowType] + }; + }), + [] + ); + + const isTableEmpty = totalCount === 0; + + const isTableFiltered = isFilteredByResources; + + useEffect(() => { + const resizeObserver = new ResizeObserver((entries) => { + // eslint-disable-next-line no-restricted-syntax + for (const entry of entries) { + setTableWidth(entry.contentRect.width - TABLE_WIDTH_OFFSET); + } + }); + + if (tableRef.current) { + resizeObserver.observe(tableRef.current); + } + + return () => resizeObserver.disconnect(); + }, []); + + return ( + // scott: this is reverse to fix z-indexing bug of dropdown with sticky table cols; couldn't resolve with flex-col +

+ {!isOverviewLoading && totalCount > 0 && ( + + } + className="rounded-b-lg border border-solid border-mineshaft-500 bg-mineshaft-700" + count={totalCount} + page={page} + perPage={perPage} + onChangePage={(newPage) => setPage(newPage)} + onChangePerPage={handlePerPageChange} + /> + )} +
+ + {/* eslint-disable-next-line no-nested-ternary */} + {isOverviewLoading ? ( +
+ +
+ ) : isTableEmpty ? ( + + ) : ( + + + + + {compareEnvironments?.map(({ name, slug }, index) => { + const envSecKeyCount = getEnvSecretKeyCount(slug); + const importedSecKeyCount = getEnvImportedSecretKeyCount(slug); + const missingKeyCount = secKeys.length - envSecKeyCount - importedSecKeyCount; + + return ( + + ); + })} + + + + {folderNamesAndDescriptions.map(({ name: folderName }, index) => ( + + ))} + {dynamicSecretNames.map((dynamicSecretName, index) => ( + + ))} + {secretRotationNames.map((secretRotationName, index) => ( + + ))} + {secKeys.map((key, index) => ( + + ))} + totalCount ? totalCount % perPage : perPage) - + (totalUniqueFoldersInPage || 0) - + (totalUniqueDynamicSecretsInPage || 0) - + (totalUniqueSecretsInPage || 0) - + (totalUniqueSecretImportsInPage || 0) - + (totalUniqueSecretRotationsInPage || 0), + 0 + )} + /> + +
+
+
+
+
+
+
+ Name + + setOrderDirection((prev) => + prev === OrderByDirection.ASC + ? OrderByDirection.DESC + : OrderByDirection.ASC + ) + } + > + + +
+
+
+
+ {name} + {missingKeyCount > 0 && ( + + + + {missingKeyCount} + + + )} +
+
+ )} +
+
+
+ setSearchFilter(e.target.value)} + className="h-full flex-1" + placeholder="Search by resource name..." + leftIcon={} + containerClassName="h-10" + /> + {isTableFiltered && ( + + )} + {compareEnvironments.length > 0 && ( + + + + + + Filter by Resource + { + e.preventDefault(); + handleToggleRowType(RowType.Folder); + }} + icon={filter[RowType.Folder] && } + iconPos="right" + > +
+ + Folders +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.DynamicSecret); + }} + icon={filter[RowType.DynamicSecret] && } + iconPos="right" + > +
+ + Dynamic Secrets +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.SecretRotation); + }} + icon={filter[RowType.SecretRotation] && } + iconPos="right" + > +
+ + Secret Rotations +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.Secret); + }} + icon={filter[RowType.Secret] && } + iconPos="right" + > +
+ + Secrets +
+
+
+
+ )} +
+
+ + { + const selected = value as MultiValue; + + setSelectedEnvironments((selected as WorkspaceEnv[]) ?? []); + }} + placeholder="Leave blank to compare all environments" + options={currentWorkspace.environments} + getOptionValue={(option) => option.slug} + getOptionLabel={(option) => option.name} + isMulti + /> +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/DynamicSecretRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/DynamicSecretRow.tsx new file mode 100644 index 000000000..16de6533b --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/DynamicSecretRow.tsx @@ -0,0 +1,41 @@ +import { faFingerprint } from "@fortawesome/free-solid-svg-icons"; + +import { Tr } from "@app/components/v2"; + +import { EnvironmentStatusCell, ResourceNameCell } from "../shared"; + +type Props = { + dynamicSecretName: string; + environments: { name: string; slug: string }[]; + isDynamicSecretInEnv: (name: string, env: string) => boolean; + colWidth: number; +}; + +export const DynamicSecretRow = ({ + dynamicSecretName, + environments = [], + isDynamicSecretInEnv, + colWidth +}: Props) => { + return ( + + + {environments.map(({ slug }, i) => { + const isPresent = isDynamicSecretInEnv(dynamicSecretName, slug); + + return ( + + ); + })} + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/index.tsx new file mode 100644 index 000000000..5c7bf445a --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/DynamicSecretRow/index.tsx @@ -0,0 +1 @@ +export { DynamicSecretRow } from "./DynamicSecretRow"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/FolderRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/FolderRow.tsx new file mode 100644 index 000000000..a3d672e13 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/FolderRow.tsx @@ -0,0 +1,41 @@ +import { faFolder } from "@fortawesome/free-solid-svg-icons"; + +import { Tr } from "@app/components/v2"; + +import { EnvironmentStatusCell, ResourceNameCell } from "../shared"; + +type Props = { + folderName: string; + environments: { name: string; slug: string }[]; + isFolderPresentInEnv: (name: string, env: string) => boolean; + colWidth: number; +}; + +export const FolderRow = ({ + folderName, + environments = [], + isFolderPresentInEnv, + colWidth +}: Props) => { + return ( + + + {environments.map(({ slug }, i) => { + const isPresent = isFolderPresentInEnv(folderName, slug); + + return ( + + ); + })} + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/index.tsx new file mode 100644 index 000000000..171b2e596 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/FolderRow/index.tsx @@ -0,0 +1 @@ +export { FolderRow } from "./FolderRow"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/SecretRotationRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/SecretRotationRow.tsx new file mode 100644 index 000000000..d7bfc9bb8 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/SecretRotationRow.tsx @@ -0,0 +1,174 @@ +import { faEye, faEyeSlash, faInfoCircle, faRotate } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { twMerge } from "tailwind-merge"; + +import { Button, TableContainer, Tag, Td, Tooltip, Tr } from "@app/components/v2"; +import { Blur } from "@app/components/v2/Blur"; +import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput"; +import { SECRET_ROTATION_MAP } from "@app/helpers/secretRotationsV2"; +import { useToggle } from "@app/hooks"; +import { TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2"; + +import { EnvironmentStatusCell, ResourceNameCell } from "../shared"; + +type Props = { + secretRotationName: string; + environments: { name: string; slug: string }[]; + isSecretRotationInEnv: (name: string, env: string) => boolean; + getSecretRotationByName: (slug: string, name: string) => TSecretRotationV2 | undefined; + colWidth: number; + tableWidth: number; +}; + +export const SecretRotationRow = ({ + secretRotationName, + environments = [], + isSecretRotationInEnv, + colWidth, + getSecretRotationByName, + tableWidth +}: Props) => { + const [isExpanded, setIsExpanded] = useToggle(false); + const [isSecretVisible, setIsSecretVisible] = useToggle(); + + const totalCols = environments.length + 1; // secret key row + + return ( + <> + + + {environments.map(({ slug }, i) => { + const isPresent = isSecretRotationInEnv(secretRotationName, slug); + + return ( + + ); + })} + + {isExpanded && + environments.map(({ name: envName, slug }) => { + const secretRotation = getSecretRotationByName(slug, secretRotationName); + + if (!secretRotation) return null; + + const { type, secrets, description } = secretRotation; + + const { name: rotationType, image } = SECRET_ROTATION_MAP[type]; + + return ( + + +
+
+
+
+ {envName} + + {`${rotationType} + {rotationType} + + {description && ( + + + + )} +
+
+ +
+ + + + {secrets.map((secret, index) => { + return ( + + + + + + + ); + })} + +
+
+ + {secret?.key ?? "********"} + +
+
+ {/* eslint-disable-next-line no-nested-ternary */} + {!secret ? ( +
********
+ ) : secret.secretValueHidden ? ( + + ) : ( + {}} + /> + )} +
+
+
+ + + ); + })} + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/index.tsx new file mode 100644 index 000000000..a0b2fcfa7 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRotationRow/index.tsx @@ -0,0 +1 @@ +export { SecretRotationRow } from "./SecretRotationRow"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/EnvironmentSecretRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/EnvironmentSecretRow.tsx new file mode 100644 index 000000000..87db191f6 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/EnvironmentSecretRow.tsx @@ -0,0 +1,49 @@ +import { faEyeSlash } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { Tooltip } from "@app/components/v2"; +import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput"; + +type Props = { + defaultValue?: string | null; + isOverride?: boolean; + isVisible?: boolean; + isImportedSecret: boolean; + environment: string; + secretValueHidden: boolean; + secretPath: string; +}; + +export const EnvironmentSecretRow = ({ + defaultValue, + isOverride, + isImportedSecret, + secretValueHidden, + environment, + secretPath, + isVisible +}: Props) => { + return ( +
+ {secretValueHidden && !isOverride && ( + + + + )} +
+ {}} + isReadOnly + value={defaultValue as string} + key="secret-input" + isVisible={isVisible && !secretValueHidden} + secretPath={secretPath} + environment={environment} + isImport={isImportedSecret} + defaultValue={secretValueHidden ? "" : undefined} + canEditButNotView={secretValueHidden && !isOverride} + /> +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretNoAccessRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretNoAccessRow.tsx new file mode 100644 index 000000000..075726d1b --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretNoAccessRow.tsx @@ -0,0 +1,44 @@ +import { faLock } from "@fortawesome/free-solid-svg-icons"; + +import { Tr } from "@app/components/v2"; +import { Blur } from "@app/components/v2/Blur"; + +import { EnvironmentStatusCell, ResourceNameCell } from "../shared"; + +type Props = { + environments: { name: string; slug: string }[]; + count: number; + colWidth: number; +}; + +export const SecretNoAccessRow = ({ environments = [], count, colWidth }: Props) => { + return ( + <> + {Array.from(Array(count)).map((_, j) => ( + + } + iconClassName="text-bunker-400" + icon={faLock} + colWidth={colWidth} + tooltipContent="You do not have permission to view this secret" + /> + {environments.map(({ slug }, i) => { + return ( + + ); + })} + + ))} + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretRow.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretRow.tsx new file mode 100644 index 000000000..08a8d0fc4 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/SecretRow.tsx @@ -0,0 +1,226 @@ +import { subject } from "@casl/ability"; +import { + faCodeBranch, + faEye, + faEyeSlash, + faFileImport, + faKey, + faRotate +} from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { Button, TableContainer, Td, Tooltip, Tr } from "@app/components/v2"; +import { useProjectPermission } from "@app/context"; +import { + ProjectPermissionSecretActions, + ProjectPermissionSub +} from "@app/context/ProjectPermissionContext/types"; +import { useToggle } from "@app/hooks"; +import { SecretV3RawSanitized } from "@app/hooks/api/secrets/types"; +import { WorkspaceEnv } from "@app/hooks/api/types"; +import { HIDDEN_SECRET_VALUE } from "@app/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem"; + +import { EnvironmentStatus, EnvironmentStatusCell, ResourceNameCell } from "../shared"; +import { EnvironmentSecretRow } from "./EnvironmentSecretRow"; + +type Props = { + secretKey: string; + secretPath: string; + environments: { name: string; slug: string }[]; + getSecretByKey: (slug: string, key: string) => SecretV3RawSanitized | undefined; + isImportedSecretPresentInEnv: (env: string, secretName: string) => boolean; + getImportedSecretByKey: ( + env: string, + secretName: string + ) => { secret?: SecretV3RawSanitized; environmentInfo?: WorkspaceEnv } | undefined; + colWidth: number; + tableWidth: number; +}; + +export const SecretRow = ({ + secretKey, + environments = [], + secretPath, + getSecretByKey, + isImportedSecretPresentInEnv, + getImportedSecretByKey, + colWidth, + tableWidth +}: Props) => { + const [isFormExpanded, setIsFormExpanded] = useToggle(); + const totalCols = environments.length + 1; // secret key row + const [isSecretVisible, setIsSecretVisible] = useToggle(); + + const { permission } = useProjectPermission(); + + const getDefaultValue = ( + secret: SecretV3RawSanitized | undefined, + importedSecret: { secret?: SecretV3RawSanitized } | undefined + ) => { + const canEditSecretValue = permission.can( + ProjectPermissionSecretActions.Edit, + subject(ProjectPermissionSub.Secrets, { + environment: secret?.env || "", + secretPath: secret?.path || "", + secretName: secret?.key || "", + secretTags: ["*"] + }) + ); + + if (secret?.secretValueHidden && !secret?.valueOverride) { + return canEditSecretValue ? HIDDEN_SECRET_VALUE : ""; + } + return secret?.valueOverride || secret?.value || importedSecret?.secret?.value || ""; + }; + + return ( + <> + setIsFormExpanded.toggle()} + className="group border-mineshaft-500" + > + + {environments.map(({ slug }, i) => { + const secret = getSecretByKey(slug, secretKey); + + const isSecretImported = isImportedSecretPresentInEnv(slug, secretKey); + + const isSecretPresent = Boolean(secret); + const isSecretEmpty = secret?.value === ""; + + let status: EnvironmentStatus; + + if (isSecretEmpty) { + status = "empty"; + } else if (isSecretPresent) { + status = "present"; + } else if (isSecretImported) { + status = "imported"; + } else { + status = "missing"; + } + + return ( + + ); + })} + + {isFormExpanded && ( + + +
+ + + + + + +
+ +
+ + + + {environments.map(({ name, slug }) => { + const secret = getSecretByKey(slug, secretKey); + + const isImportedSecret = isImportedSecretPresentInEnv(slug, secretKey); + const importedSecret = getImportedSecretByKey(slug, secretKey); + + return ( + + + + + ); + })} + +
+ Environment + + Value +
+
+ {name} + {isImportedSecret && ( + + + + )} + {secret?.isRotatedSecret && ( + + + + )} + {secret?.valueOverride && ( + + + + )} +
+
+ +
+
+
+ + + )} + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/index.tsx new file mode 100644 index 000000000..a1e4a3d51 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/SecretRow/index.tsx @@ -0,0 +1,2 @@ +export { SecretNoAccessRow } from "./SecretNoAccessRow"; +export { SecretRow } from "./SecretRow"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/EnvironmentStatusCell.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/EnvironmentStatusCell.tsx new file mode 100644 index 000000000..fa5d2f8bb --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/EnvironmentStatusCell.tsx @@ -0,0 +1,75 @@ +import { IconDefinition } from "@fortawesome/free-brands-svg-icons"; +import { faCircle } from "@fortawesome/free-regular-svg-icons"; +import { faBan, faCheck, faFileImport, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { twMerge } from "tailwind-merge"; + +import { Td, Tooltip } from "@app/components/v2"; + +export type EnvironmentStatus = "present" | "missing" | "empty" | "imported" | "no-access"; + +type Props = { + isLast: boolean; + status: EnvironmentStatus; +}; + +export const EnvironmentStatusCell = ({ isLast, status }: Props) => { + let tooltipContent: string; + let icon: IconDefinition; + let iconClassName: string; + + switch (status) { + case "present": + tooltipContent = "Present in environment"; + icon = faCheck; + iconClassName = "h-3 w-3"; + break; + case "missing": + tooltipContent = "Missing from environment"; + icon = faXmark; + iconClassName = "h-3.5 w-3.5"; + break; + case "empty": + tooltipContent = "Empty value in environment"; + icon = faCircle; + iconClassName = "h-3 w-3"; + break; + case "imported": + tooltipContent = "Imported into environment"; + icon = faFileImport; + iconClassName = "h-3 w-3"; + break; + case "no-access": + tooltipContent = "You do not have permission to view this secret"; + icon = faBan; + iconClassName = "h-3 w-3"; + break; + default: + throw new Error(`Unhandled environment status: ${status as string}`); + } + + return ( + +
+
+ + + +
+
+ + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/ResourceNameCell.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/ResourceNameCell.tsx new file mode 100644 index 000000000..079b563d5 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/ResourceNameCell.tsx @@ -0,0 +1,47 @@ +import { ReactElement } from "react"; +import { IconDefinition } from "@fortawesome/free-brands-svg-icons"; +import { faAngleDown } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { Td, Tooltip } from "@app/components/v2"; + +type Props = { + isRowExpanded?: boolean; + label: ReactElement | string; + icon: IconDefinition; + iconClassName?: string; + colWidth: number; + tooltipContent?: string; +}; + +export const ResourceNameCell = ({ + isRowExpanded, + label, + icon, + iconClassName, + colWidth, + tooltipContent +}: Props) => { + return ( + + +
+
+ +
+ {typeof label === "string" ? {label} : label} +
+
+ + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/index.ts b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/index.ts new file mode 100644 index 000000000..c8bd53cbe --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/components/shared/index.ts @@ -0,0 +1,2 @@ +export * from "./EnvironmentStatusCell"; +export * from "./ResourceNameCell"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/index.tsx new file mode 100644 index 000000000..f5c997972 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/index.tsx @@ -0,0 +1 @@ +export * from "./CompareEnvironments"; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx new file mode 100644 index 000000000..f42eafbc7 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx @@ -0,0 +1,242 @@ +import { useState } from "react"; +import { faArrowRightArrowLeft, faEllipsisH, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useQueryClient } from "@tanstack/react-query"; +import { useNavigate, useParams } from "@tanstack/react-router"; + +import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { + Button, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuTrigger, + Modal, + ModalContent, + Tab, + TabList, + Tabs, + Tooltip +} from "@app/components/v2"; +import { ROUTE_PATHS } from "@app/const/routes"; +import { + ProjectPermissionActions, + ProjectPermissionSub, + useSubscription, + useWorkspace +} from "@app/context"; +import { usePopUp } from "@app/hooks"; +import { workspaceKeys } from "@app/hooks/api"; +import { WorkspaceEnv } from "@app/hooks/api/workspace/types"; +import { AddEnvironmentModal } from "@app/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal"; + +import { CompareEnvironments } from "../CompareEnvironments"; + +const COMPARE_ENVIRONMENT_TAB = "__COMPARE_ENVIRONMENT_TAB__"; +const ADD_ENVIRONMENT_TAB = "__ADD_ENVIRONMENT_TAB__"; +const VIEW_MORE_ENVIRONMENT_TAB = "__VIEW_MORE_ENVIRONMENT_TAB__"; + +type Props = { + secretPath: string; +}; + +const TABS_TO_SHOW = 5; + +export const EnvironmentTabs = ({ secretPath }: Props) => { + const { currentWorkspace } = useWorkspace(); + const currentEnv = useParams({ + from: ROUTE_PATHS.SecretManager.SecretDashboardPage.id, + select: (el) => el.envSlug + }); + + const { subscription } = useSubscription(); + + const isMoreEnvironmentsAllowed = + subscription?.environmentLimit && currentWorkspace?.environments + ? currentWorkspace.environments.length < subscription.environmentLimit + : true; + + const [isNavigating, setIsNavigating] = useState(false); + + const navigate = useNavigate(); + + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ + "compareEnvironments", + "createEnvironment", + "upgradePlan" + ] as const); + + const selectedIndex = currentWorkspace.environments.findIndex((env) => env.slug === currentEnv); + + let tabEnvironments: WorkspaceEnv[]; + let dropdownEnvironments: WorkspaceEnv[]; + + if (selectedIndex < TABS_TO_SHOW) { + tabEnvironments = currentWorkspace.environments.slice(0, TABS_TO_SHOW); + dropdownEnvironments = currentWorkspace.environments.slice(TABS_TO_SHOW); + } else { + tabEnvironments = [ + ...currentWorkspace.environments.slice(0, TABS_TO_SHOW - 1), + currentWorkspace.environments[selectedIndex] + ]; + dropdownEnvironments = currentWorkspace.environments + .slice(TABS_TO_SHOW - 1) + .filter((env) => env.slug !== currentEnv); + } + + const queryClient = useQueryClient(); + + const handleSelect = async (envSlug: string) => { + if (isNavigating) return; + + setIsNavigating(true); + await navigate({ + to: ROUTE_PATHS.SecretManager.SecretDashboardPage.path, + params: { + envSlug, + projectId: currentWorkspace.id + }, + search: (prev) => prev + }); + setIsNavigating(false); + }; + + const handleAddEnvironment = () => { + if (isMoreEnvironmentsAllowed) { + handlePopUpOpen("createEnvironment"); + } else { + handlePopUpOpen("upgradePlan"); + } + }; + + return ( + <> + { + if (value === COMPARE_ENVIRONMENT_TAB) { + handlePopUpOpen("compareEnvironments"); + return; + } + + if (value === ADD_ENVIRONMENT_TAB) { + handleAddEnvironment(); + return; + } + + handleSelect(value); + }} + defaultValue="environment-tabs" + > + + {tabEnvironments.map((environment) => ( + +

{environment.name}

+
+ ))} + {dropdownEnvironments.length ? ( + + + + +
+ +
+
+
+
+ + Environments +
+ {dropdownEnvironments.map((environment) => ( + { + e.stopPropagation(); + handleSelect(environment.slug); + }} + > + {environment.name} + + ))} +
+
+ + {(isAllowed) => ( + + + + )} + + + + ) : ( + + +
+ +
+
+
+ )} + {currentWorkspace.environments.length > 1 && ( + +
+ + Compare Environments +
+
+ )} + + + handlePopUpToggle("compareEnvironments", isOpen)} + > + + + + + handlePopUpToggle("upgradePlan", isOpen)} + text="You can add custom environments if you switch to Infisical's Team plan." + /> + handlePopUpToggle("createEnvironment", isOpen)} + onComplete={async (env) => { + await queryClient.refetchQueries({ + queryKey: workspaceKeys.getWorkspaceById(currentWorkspace.id) + }); + handleSelect(env.slug); + }} + /> + + ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/index.tsx new file mode 100644 index 000000000..76be6609b --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/index.tsx @@ -0,0 +1 @@ +export * from "./EnvironmentTabs"; diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal.tsx index 61841165b..0832dfe9d 100644 --- a/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal.tsx +++ b/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal.tsx @@ -3,16 +3,16 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; -import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; +import { Button, FormControl, Input, Modal, ModalClose, ModalContent } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useCreateWsEnvironment } from "@app/hooks/api"; -import { UsePopUpState } from "@app/hooks/usePopUp"; +import { WorkspaceEnv } from "@app/hooks/api/workspace/types"; import { slugSchema } from "@app/lib/schemas"; type Props = { - popUp: UsePopUpState<["createEnv"]>; - handlePopUpClose: (popUpName: keyof UsePopUpState<["createEnv"]>) => void; - handlePopUpToggle: (popUpName: keyof UsePopUpState<["createEnv"]>, state?: boolean) => void; + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + onComplete?: (environment: WorkspaceEnv) => void; }; const schema = z.object({ @@ -24,10 +24,14 @@ const schema = z.object({ export type FormData = z.infer; -export const AddEnvironmentModal = ({ popUp, handlePopUpClose, handlePopUpToggle }: Props) => { +type ContentProps = { + onComplete: (environment: WorkspaceEnv) => void; +}; + +const Content = ({ onComplete }: ContentProps) => { const { currentWorkspace } = useWorkspace(); const { mutateAsync, isPending } = useCreateWsEnvironment(); - const { control, handleSubmit, reset } = useForm({ + const { control, handleSubmit } = useForm({ resolver: zodResolver(schema) }); @@ -35,7 +39,7 @@ export const AddEnvironmentModal = ({ popUp, handlePopUpClose, handlePopUpToggle try { if (!currentWorkspace?.id) return; - await mutateAsync({ + const env = await mutateAsync({ workspaceId: currentWorkspace.id, name: environmentName, slug: environmentSlug @@ -46,7 +50,7 @@ export const AddEnvironmentModal = ({ popUp, handlePopUpClose, handlePopUpToggle type: "success" }); - handlePopUpClose("createEnv"); + onComplete(env); } catch (err) { console.error(err); createNotification({ @@ -57,64 +61,62 @@ export const AddEnvironmentModal = ({ popUp, handlePopUpClose, handlePopUpToggle }; return ( - { - handlePopUpToggle("createEnv", isOpen); - reset(); - }} - > - - - ( - - - - )} - /> - ( - - - - )} - /> -
- + + ( + + + + )} + /> + ( + + + + )} + /> +
+ + + + +
+ + ); +}; - -
- +export const AddEnvironmentModal = ({ onComplete, ...props }: Props) => { + return ( + + + { + if (onComplete) onComplete(env); + props.onOpenChange(false); + }} + /> ); diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/EnvironmentSection.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/EnvironmentSection.tsx index 323fe2640..34acf0c7b 100644 --- a/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/EnvironmentSection.tsx +++ b/frontend/src/pages/secret-manager/SettingsPage/components/EnvironmentSection/EnvironmentSection.tsx @@ -103,9 +103,8 @@ export const EnvironmentSection = () => { )} handlePopUpToggle("createEnv", isOpen)} /> Date: Wed, 27 Aug 2025 17:00:26 -0700 Subject: [PATCH 12/40] improvement: add missing key prop --- .../components/EnvironmentTabs/EnvironmentTabs.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx index f42eafbc7..c5ff81c3d 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx @@ -132,7 +132,7 @@ export const EnvironmentTabs = ({ secretPath }: Props) => { > {tabEnvironments.map((environment) => ( - +

{environment.name}

))} From 43dd45de296c6b987eb5eda4fb78457eae95b0c8 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 27 Aug 2025 18:20:01 -0700 Subject: [PATCH 13/40] improvement: used fix length mask for secrets when unfocused to prevent inference attacks --- frontend/src/components/v2/SecretInput/SecretInput.tsx | 10 +--------- .../components/SecretListView/SecretItem.tsx | 2 +- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/v2/SecretInput/SecretInput.tsx b/frontend/src/components/v2/SecretInput/SecretInput.tsx index 6f3f4283a..747af73d5 100644 --- a/frontend/src/components/v2/SecretInput/SecretInput.tsx +++ b/frontend/src/components/v2/SecretInput/SecretInput.tsx @@ -6,20 +6,12 @@ import { useToggle } from "@app/hooks"; import { HIDDEN_SECRET_VALUE } from "@app/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem"; const REGEX = /(\${([a-zA-Z0-9-_.]+)})/g; -const replaceContentWithDot = (str: string) => { - let finalStr = ""; - for (let i = 0; i < str.length; i += 1) { - const char = str.at(i); - finalStr += char === "\n" ? "\n" : "*"; - } - return finalStr; -}; const syntaxHighlight = (content?: string | null, isVisible?: boolean, isImport?: boolean) => { if (isImport && !content) return "IMPORTED"; if (content === "") return "EMPTY"; if (!content) return "EMPTY"; - if (!isVisible) return replaceContentWithDot(content); + if (!isVisible) return HIDDEN_SECRET_VALUE; let skipNext = false; const formattedContent = content.split(REGEX).flatMap((el, i) => { diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx index 77bec882c..2a4f54c82 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx @@ -56,7 +56,7 @@ import { import { CollapsibleSecretImports } from "./CollapsibleSecretImports"; import { useBatchModeActions } from "../../SecretMainPage.store"; -export const HIDDEN_SECRET_VALUE = "******"; +export const HIDDEN_SECRET_VALUE = "*****************************"; export const HIDDEN_SECRET_VALUE_API_MASK = ""; type Props = { From e7138f1be93c112280c39c372437ac426c4218e6 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 28 Aug 2025 15:10:28 -0700 Subject: [PATCH 14/40] improvements: address feedback and additional bugs --- frontend/src/components/v2/Table/Table.tsx | 32 ++++++------ frontend/src/hooks/api/dashboard/queries.tsx | 7 +++ frontend/src/hooks/api/dashboard/types.ts | 2 +- frontend/src/hooks/useResizableColWidth.tsx | 27 +++++++++- frontend/src/hooks/utils/secrets-overview.tsx | 6 ++- .../SecretManagerLayout.tsx | 12 ++++- .../SecretDashboardPage.tsx | 22 ++++++-- .../CompareEnvironments.tsx | 50 ++++++++++-------- .../SecretRotationRow/SecretRotationRow.tsx | 31 ++++++----- .../components/SecretRow/SecretRow.tsx | 31 ++++++----- .../EnvironmentTabs/EnvironmentTabs.tsx | 2 +- .../FolderBreadCrumbs/FolderBreadCrumbs.tsx | 52 +++++++++++++++++++ .../components/FolderBreadCrumbs/index.tsx | 1 + 13 files changed, 200 insertions(+), 75 deletions(-) create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/FolderBreadCrumbs.tsx create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/index.tsx diff --git a/frontend/src/components/v2/Table/Table.tsx b/frontend/src/components/v2/Table/Table.tsx index cc180ffb6..b8ca27dc1 100644 --- a/frontend/src/components/v2/Table/Table.tsx +++ b/frontend/src/components/v2/Table/Table.tsx @@ -1,4 +1,4 @@ -import { DetailedHTMLProps, HTMLAttributes, ReactNode, TdHTMLAttributes } from "react"; +import { DetailedHTMLProps, forwardRef, HTMLAttributes, ReactNode, TdHTMLAttributes } from "react"; import { twMerge } from "tailwind-merge"; import { Skeleton } from "../Skeleton"; @@ -9,22 +9,20 @@ export type TableContainerProps = { className?: string; } & DetailedHTMLProps, HTMLDivElement>; -export const TableContainer = ({ - children, - className, - isRounded = true, - ...props -}: TableContainerProps): JSX.Element => ( -
- {children} -
+export const TableContainer = forwardRef( + ({ children, className, isRounded = true, ...props }, ref): JSX.Element => ( +
+ {children} +
+ ) ); // main parent table diff --git a/frontend/src/hooks/api/dashboard/queries.tsx b/frontend/src/hooks/api/dashboard/queries.tsx index e748e3e5b..fde3a5ee3 100644 --- a/frontend/src/hooks/api/dashboard/queries.tsx +++ b/frontend/src/hooks/api/dashboard/queries.tsx @@ -1,5 +1,6 @@ import { useCallback } from "react"; import { useQuery, UseQueryOptions } from "@tanstack/react-query"; +import { AxiosError } from "axios"; import { apiRequest } from "@app/config/request"; import { @@ -273,6 +274,12 @@ export const useGetProjectSecretsDetails = ( ...options, // wait for all values to be available enabled: Boolean(projectId) && (options?.enabled ?? true), + retry: (count, error) => { + // don't retry 404s + if (error instanceof AxiosError && error.status === 404) return false; + + return count <= 5; + }, queryKey: dashboardKeys.getProjectSecretsDetails({ secretPath, search, diff --git a/frontend/src/hooks/api/dashboard/types.ts b/frontend/src/hooks/api/dashboard/types.ts index 78c56394f..fbd5107cd 100644 --- a/frontend/src/hooks/api/dashboard/types.ts +++ b/frontend/src/hooks/api/dashboard/types.ts @@ -72,7 +72,7 @@ export type DashboardProjectSecretsOverview = Omit< DashboardProjectSecretsOverviewResponse, "secrets" | "secretRotations" > & { - secrets?: SecretV3RawSanitized[]; + secrets?: (SecretV3RawSanitized & { sourceEnv?: string })[]; secretRotations?: (TSecretRotationV2 & { secrets: (SecretV3RawSanitized | null)[]; })[]; diff --git a/frontend/src/hooks/useResizableColWidth.tsx b/frontend/src/hooks/useResizableColWidth.tsx index f2ad80625..6af269217 100644 --- a/frontend/src/hooks/useResizableColWidth.tsx +++ b/frontend/src/hooks/useResizableColWidth.tsx @@ -1,12 +1,13 @@ -import { MouseEvent, useCallback, useEffect, useRef, useState } from "react"; +import { MouseEvent, RefObject, useCallback, useEffect, useRef, useState } from "react"; type Params = { minWidth: number; maxWidth: number; initialWidth: number; + ref: RefObject; }; -export const useResizableColWidth = ({ minWidth, maxWidth, initialWidth }: Params) => { +export const useResizableColWidth = ({ minWidth, maxWidth, initialWidth, ref }: Params) => { const [colWidth, setColWidth] = useState(initialWidth); const [isResizing, setIsResizing] = useState(false); const startX = useRef(0); @@ -63,6 +64,28 @@ export const useResizableColWidth = ({ minWidth, maxWidth, initialWidth }: Param }; }, [isResizing, handleMouseMove, handleMouseUp]); + useEffect(() => { + const element = ref?.current; + if (!element) return; + + const handleResize = () => { + if (colWidth > maxWidth) { + setColWidth(Math.max(maxWidth, minWidth)); + } else if (ref.current?.clientWidth && colWidth > ref.current.clientWidth * 0.9) { + // this else is a fallback to ensure col is always visible + setColWidth(initialWidth); + } + }; + + const resizeObserver = new ResizeObserver(handleResize); + resizeObserver.observe(element); + + // eslint-disable-next-line consistent-return + return () => { + resizeObserver.disconnect(); + }; + }, [ref, maxWidth, colWidth]); + return { colWidth, handleMouseDown, diff --git a/frontend/src/hooks/utils/secrets-overview.tsx b/frontend/src/hooks/utils/secrets-overview.tsx index e136df3f2..d77b41f5f 100644 --- a/frontend/src/hooks/utils/secrets-overview.tsx +++ b/frontend/src/hooks/utils/secrets-overview.tsx @@ -130,7 +130,11 @@ export const useSecretOverview = (secrets: DashboardProjectSecretsOverview["secr const getEnvSecretKeyCount = useCallback( (env: string) => { - return secrets?.filter((secret) => secret.env === env).length ?? 0; + return ( + secrets?.filter((secret) => + secret.sourceEnv ? secret.sourceEnv === env : secret.env === env + ).length ?? 0 + ); }, [secrets] ); diff --git a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx index 8cc9f4b4a..a11107a41 100644 --- a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx +++ b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx @@ -11,7 +11,7 @@ import { faVault } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Link, Outlet } from "@tanstack/react-router"; +import { Link, Outlet, useLocation } from "@tanstack/react-router"; import { motion } from "framer-motion"; import { Badge, Lottie, Menu, MenuGroup, MenuItem } from "@app/components/v2"; @@ -31,6 +31,7 @@ export const SecretManagerLayout = () => { const { t } = useTranslation(); const workspaceId = currentWorkspace?.id || ""; const projectSlug = currentWorkspace?.slug || ""; + const location = useLocation(); const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ workspaceId @@ -84,7 +85,14 @@ export const SecretManagerLayout = () => { }} > {({ isActive }) => ( - +
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx index 1307fcee5..16986058e 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx @@ -66,6 +66,7 @@ import { CommitForm } from "./components/CommitForm"; import { CreateSecretForm } from "./components/CreateSecretForm"; import { DynamicSecretListView } from "./components/DynamicSecretListView"; import { EnvironmentTabs } from "./components/EnvironmentTabs"; +import { FolderBreadCrumbs } from "./components/FolderBreadCrumbs"; import { FolderListView } from "./components/FolderListView"; import { PitDrawer } from "./components/PitDrawer"; import { SecretDropzone } from "./components/SecretDropzone"; @@ -107,7 +108,7 @@ const Page = () => { const { permission } = useProjectPermission(); const { mutateAsync: createCommit } = useCreateCommit(); - const tableRef = useRef(null); + const tableRef = useRef(null); const [isVisible, setIsVisible] = useState(false); const { isBatchMode, pendingChanges } = useBatchMode(); @@ -251,7 +252,8 @@ const Page = () => { const { data, isPending: isDetailsLoading, - isFetching: isDetailsFetching + isFetching: isDetailsFetching, + isFetched } = useGetProjectSecretsDetails({ environment, projectId: workspaceId, @@ -272,6 +274,18 @@ const Page = () => { tags: filter.tags }); + useEffect(() => { + // if switching tabs in a folder path that doesn't exist in a separate env we navigate to the root + if (!data && isFetched) { + navigate({ + search: (prev) => ({ + ...prev, + secretPath: "/" + }) + }); + } + }, [data, isFetched]); + const { imports, folders, @@ -493,7 +507,8 @@ const Page = () => { minWidth: 100, maxWidth: tableRef.current ? tableRef.current.clientWidth - 148 // ensure value column can't collapse completely - : 800 + : 800, + ref: tableRef }); useEffect(() => { @@ -767,6 +782,7 @@ const Page = () => { } /> + {!isRollbackMode ? ( <> diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/CompareEnvironments.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/CompareEnvironments.tsx index b2797fd39..c3570bf5a 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/CompareEnvironments.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CompareEnvironments/CompareEnvironments.tsx @@ -86,7 +86,6 @@ const DEFAULT_FILTER_STATE = { [RowType.SecretRotation]: false }; -const TABLE_WIDTH_OFFSET = 17; const COL_WIDTH_OFFSET = 220; export const CompareEnvironments = ({ secretPath }: Props) => { @@ -190,7 +189,6 @@ export const CompareEnvironments = ({ secretPath }: Props) => { totalSecretCount, totalDynamicSecretCount, totalSecretRotationCount, - totalImportCount, totalCount = 0, totalUniqueFoldersInPage, totalUniqueSecretsInPage, @@ -241,15 +239,15 @@ export const CompareEnvironments = ({ secretPath }: Props) => { ); const [tableWidth, setTableWidth] = useState(0); - - const tableRef = useRef(null); + const tableRef = useRef(null); const { handleMouseDown, isResizing, colWidth } = useResizableColWidth({ initialWidth: 320, minWidth: 160, maxWidth: tableRef.current ? tableRef.current.clientWidth - COL_WIDTH_OFFSET // ensure value column can't collapse completely - : 800 + : 800, + ref: tableRef }); const handleToggleRowType = useCallback( @@ -268,19 +266,21 @@ export const CompareEnvironments = ({ secretPath }: Props) => { const isTableFiltered = isFilteredByResources; useEffect(() => { - const resizeObserver = new ResizeObserver((entries) => { - // eslint-disable-next-line no-restricted-syntax - for (const entry of entries) { - setTableWidth(entry.contentRect.width - TABLE_WIDTH_OFFSET); - } - }); + const element = tableRef.current; + if (!element) return; - if (tableRef.current) { - resizeObserver.observe(tableRef.current); - } + const handleResize = () => { + setTableWidth(element.clientWidth - 1); + }; - return () => resizeObserver.disconnect(); - }, []); + const resizeObserver = new ResizeObserver(handleResize); + resizeObserver.observe(element); + + // eslint-disable-next-line consistent-return + return () => { + resizeObserver.disconnect(); + }; + }, [tableRef]); return ( // scott: this is reverse to fix z-indexing bug of dropdown with sticky table cols; couldn't resolve with flex-col @@ -292,7 +292,6 @@ export const CompareEnvironments = ({ secretPath }: Props) => { dynamicSecretCount={totalDynamicSecretCount} secretCount={totalSecretCount} folderCount={totalFolderCount} - importCount={totalImportCount} secretRotationCount={totalSecretRotationCount} /> } @@ -304,8 +303,9 @@ export const CompareEnvironments = ({ secretPath }: Props) => { onChangePerPage={handlePerPageChange} /> )} -
+
{
-
+
Name setOrderDirection((prev) => @@ -362,6 +362,7 @@ export const CompareEnvironments = ({ secretPath }: Props) => { } > @@ -380,7 +381,7 @@ export const CompareEnvironments = ({ secretPath }: Props) => { >
@@ -388,7 +389,12 @@ export const CompareEnvironments = ({ secretPath }: Props) => { {missingKeyCount > 0 && ( + {missingKeyCount} secret{missingKeyCount > 1 ? "s" : ""} missing + compared to other environments on this page + + } >
-
+
{envName} @@ -95,17 +95,22 @@ export const SecretRotationRow = ({ )}
- + setIsSecretVisible.toggle()} + > + + +
- +
{secrets.map((secret, index) => { return ( @@ -119,7 +124,7 @@ export const SecretRotationRow = ({ // eslint-disable-next-line react/no-array-index-key key={`rotation-secret-${secretRotation.id}-${index}`} > - +
- +
- + -
- + setIsSecretVisible.toggle()} + > + + +
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx index c5ff81c3d..66fd3a878 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx @@ -150,7 +150,7 @@ export const EnvironmentTabs = ({ secretPath }: Props) => { Environments
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/FolderBreadCrumbs.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/FolderBreadCrumbs.tsx new file mode 100644 index 000000000..a2169fa5a --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/FolderBreadCrumbs.tsx @@ -0,0 +1,52 @@ +import { faFolderOpen } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useNavigate } from "@tanstack/react-router"; + +type Props = { + secretPath: string; +}; + +export const FolderBreadCrumbs = ({ secretPath = "/" }: Props) => { + const navigate = useNavigate({ + from: "/projects/secret-management/$projectId/secrets/$envSlug" + }); + + const onFolderCrumbClick = (index: number) => { + const newSecPath = `/${secretPath.split("/").filter(Boolean).slice(0, index).join("/")}`; + if (secretPath === newSecPath) return; + navigate({ + search: (prev) => ({ ...prev, secretPath: newSecPath }) + }); + }; + + return ( +
+
onFolderCrumbClick(0)} + onKeyDown={() => null} + role="button" + tabIndex={0} + > + +
+ {(secretPath || "") + .split("/") + .filter(Boolean) + .map((path, index, arr) => ( +
onFolderCrumbClick(index + 1)} + onKeyDown={() => null} + role="button" + tabIndex={0} + > + {path} +
+ ))} +
+ ); +}; diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/index.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/index.tsx new file mode 100644 index 000000000..8224cdb25 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderBreadCrumbs/index.tsx @@ -0,0 +1 @@ +export { FolderBreadCrumbs } from "./FolderBreadCrumbs"; From 20287973b1375582184032d00d62078c8bf9a9a2 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Thu, 28 Aug 2025 20:33:59 -0300 Subject: [PATCH 15/40] Improve Audit Logs permissions --- .../services/audit-log/audit-log-service.ts | 14 +- .../ee/services/permission/default-roles.ts | 5 +- .../ee/services/permission/org-permission.ts | 17 +- .../services/permission/project-permission.ts | 8 +- .../context/OrgPermissionContext/index.tsx | 1 + .../src/context/OrgPermissionContext/types.ts | 6 +- .../ProjectPermissionContext/index.tsx | 1 + .../context/ProjectPermissionContext/types.ts | 6 +- frontend/src/context/index.tsx | 2 + .../AuditLogsPage/components/LogsSection.tsx | 316 ++++++++++-------- .../components/OrgRoleModifySection.utils.ts | 9 +- .../OrgPermissionAuditLogsRow.tsx | 164 +++++++++ .../RolePermissionRow.tsx | 1 + .../RolePermissionsSection.tsx | 10 +- .../ProjectRoleModifySection.utils.tsx | 16 +- .../IntegrationAuditLogsSection.tsx | 4 +- .../components/SecretSyncAuditLogsSection.tsx | 4 +- 17 files changed, 407 insertions(+), 177 deletions(-) create mode 100644 frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx diff --git a/backend/src/ee/services/audit-log/audit-log-service.ts b/backend/src/ee/services/audit-log/audit-log-service.ts index 06186d54b..ece5edaf9 100644 --- a/backend/src/ee/services/audit-log/audit-log-service.ts +++ b/backend/src/ee/services/audit-log/audit-log-service.ts @@ -6,9 +6,9 @@ import { getConfig } from "@app/lib/config/env"; import { BadRequestError } from "@app/lib/errors"; import { ActorType } from "@app/services/auth/auth-type"; -import { OrgPermissionActions, OrgPermissionSubjects } from "../permission/org-permission"; +import { OrgPermissionAuditLogsActions, OrgPermissionSubjects } from "../permission/org-permission"; import { TPermissionServiceFactory } from "../permission/permission-service-types"; -import { ProjectPermissionActions, ProjectPermissionSub } from "../permission/project-permission"; +import { ProjectPermissionAuditLogsActions, ProjectPermissionSub } from "../permission/project-permission"; import { TAuditLogDALFactory } from "./audit-log-dal"; import { TAuditLogQueueServiceFactory } from "./audit-log-queue"; import { EventType, TAuditLogServiceFactory } from "./audit-log-types"; @@ -41,7 +41,10 @@ export const auditLogServiceFactory = ({ actorOrgId, actionProjectType: ActionProjectType.Any }); - ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Read, ProjectPermissionSub.AuditLogs); + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionAuditLogsActions.Read, + ProjectPermissionSub.AuditLogs + ); } else { // Organization-wide logs const { permission } = await permissionService.getOrgPermission( @@ -52,7 +55,10 @@ export const auditLogServiceFactory = ({ actorOrgId ); - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.AuditLogs); + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionAuditLogsActions.Read, + OrgPermissionSubjects.AuditLogs + ); } // If project ID is not provided, then we need to return all the audit logs for the organization itself. diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index 349130d8e..9329c3c7f 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -2,6 +2,7 @@ import { AbilityBuilder, createMongoAbility, MongoAbility } from "@casl/ability" import { ProjectPermissionActions, + ProjectPermissionAuditLogsActions, ProjectPermissionCertificateActions, ProjectPermissionCmekActions, ProjectPermissionCommitsActions, @@ -394,7 +395,7 @@ const buildMemberPermissionRules = () => { ); can([ProjectPermissionActions.Read], ProjectPermissionSub.Role); - can([ProjectPermissionActions.Read], ProjectPermissionSub.AuditLogs); + can([ProjectPermissionAuditLogsActions.Read], ProjectPermissionSub.AuditLogs); can([ProjectPermissionActions.Read], ProjectPermissionSub.IpAllowList); // double check if all CRUD are needed for CA and Certificates @@ -502,7 +503,7 @@ const buildViewerPermissionRules = () => { can(ProjectPermissionActions.Read, ProjectPermissionSub.Settings); can(ProjectPermissionActions.Read, ProjectPermissionSub.Environments); can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags); - can(ProjectPermissionActions.Read, ProjectPermissionSub.AuditLogs); + can(ProjectPermissionAuditLogsActions.Read, ProjectPermissionSub.AuditLogs); can(ProjectPermissionActions.Read, ProjectPermissionSub.IpAllowList); can(ProjectPermissionActions.Read, ProjectPermissionSub.CertificateAuthorities); can(ProjectPermissionCertificateActions.Read, ProjectPermissionSub.Certificates); diff --git a/backend/src/ee/services/permission/org-permission.ts b/backend/src/ee/services/permission/org-permission.ts index 2436dae2a..d0b1ca3dd 100644 --- a/backend/src/ee/services/permission/org-permission.ts +++ b/backend/src/ee/services/permission/org-permission.ts @@ -23,6 +23,10 @@ export enum OrgPermissionAppConnectionActions { Connect = "connect" } +export enum OrgPermissionAuditLogsActions { + Read = "read" +} + export enum OrgPermissionKmipActions { Proxy = "proxy", Setup = "setup" @@ -125,7 +129,7 @@ export type OrgPermissionSet = | [OrgPermissionBillingActions, OrgPermissionSubjects.Billing] | [OrgPermissionIdentityActions, OrgPermissionSubjects.Identity] | [OrgPermissionActions, OrgPermissionSubjects.Kms] - | [OrgPermissionActions, OrgPermissionSubjects.AuditLogs] + | [OrgPermissionAuditLogsActions, OrgPermissionSubjects.AuditLogs] | [OrgPermissionActions, OrgPermissionSubjects.ProjectTemplates] | [OrgPermissionGatewayActions, OrgPermissionSubjects.Gateway] | [ @@ -214,7 +218,9 @@ export const OrgPermissionSchema = z.discriminatedUnion("subject", [ }), z.object({ subject: z.literal(OrgPermissionSubjects.AuditLogs).describe("The entity this permission pertains to."), - action: CASL_ACTION_SCHEMA_NATIVE_ENUM(OrgPermissionActions).describe("Describe what action an entity can take.") + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(OrgPermissionAuditLogsActions).describe( + "Describe what action an entity can take." + ) }), z.object({ subject: z.literal(OrgPermissionSubjects.ProjectTemplates).describe("The entity this permission pertains to."), @@ -340,10 +346,7 @@ const buildAdminPermission = () => { can(OrgPermissionActions.Edit, OrgPermissionSubjects.Kms); can(OrgPermissionActions.Delete, OrgPermissionSubjects.Kms); - can(OrgPermissionActions.Read, OrgPermissionSubjects.AuditLogs); - can(OrgPermissionActions.Create, OrgPermissionSubjects.AuditLogs); - can(OrgPermissionActions.Edit, OrgPermissionSubjects.AuditLogs); - can(OrgPermissionActions.Delete, OrgPermissionSubjects.AuditLogs); + can(OrgPermissionAuditLogsActions.Read, OrgPermissionSubjects.AuditLogs); can(OrgPermissionActions.Read, OrgPermissionSubjects.ProjectTemplates); can(OrgPermissionActions.Create, OrgPermissionSubjects.ProjectTemplates); @@ -416,7 +419,7 @@ const buildMemberPermission = () => { can(OrgPermissionIdentityActions.Edit, OrgPermissionSubjects.Identity); can(OrgPermissionIdentityActions.Delete, OrgPermissionSubjects.Identity); - can(OrgPermissionActions.Read, OrgPermissionSubjects.AuditLogs); + can(OrgPermissionAuditLogsActions.Read, OrgPermissionSubjects.AuditLogs); can(OrgPermissionAppConnectionActions.Connect, OrgPermissionSubjects.AppConnections); can(OrgPermissionGatewayActions.ListGateways, OrgPermissionSubjects.Gateway); diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index ab8fea5df..20b4344d3 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -164,6 +164,10 @@ export enum ProjectPermissionSecretEventActions { SubscribeImportMutations = "subscribe-on-import-mutations" } +export enum ProjectPermissionAuditLogsActions { + Read = "read" +} + export enum ProjectPermissionSub { Role = "role", Member = "member", @@ -304,7 +308,7 @@ export type ProjectPermissionSet = | [ProjectPermissionGroupActions, ProjectPermissionSub.Groups] | [ProjectPermissionActions, ProjectPermissionSub.Integrations] | [ProjectPermissionActions, ProjectPermissionSub.Webhooks] - | [ProjectPermissionActions, ProjectPermissionSub.AuditLogs] + | [ProjectPermissionAuditLogsActions, ProjectPermissionSub.AuditLogs] | [ProjectPermissionActions, ProjectPermissionSub.Environments] | [ProjectPermissionActions, ProjectPermissionSub.IpAllowList] | [ProjectPermissionActions, ProjectPermissionSub.Settings] @@ -645,7 +649,7 @@ const GeneralPermissionSchema = [ }), z.object({ subject: z.literal(ProjectPermissionSub.AuditLogs).describe("The entity this permission pertains to."), - action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionAuditLogsActions).describe( "Describe what action an entity can take." ) }), diff --git a/frontend/src/context/OrgPermissionContext/index.tsx b/frontend/src/context/OrgPermissionContext/index.tsx index fccd53935..f3bc0195d 100644 --- a/frontend/src/context/OrgPermissionContext/index.tsx +++ b/frontend/src/context/OrgPermissionContext/index.tsx @@ -2,6 +2,7 @@ export { useOrgPermission } from "./OrgPermissionContext"; export type { TOrgPermission } from "./types"; export { OrgPermissionActions, + OrgPermissionAuditLogsActions, OrgPermissionBillingActions, OrgPermissionGroupActions, OrgPermissionIdentityActions, diff --git a/frontend/src/context/OrgPermissionContext/types.ts b/frontend/src/context/OrgPermissionContext/types.ts index 50e147aa0..74d5293e6 100644 --- a/frontend/src/context/OrgPermissionContext/types.ts +++ b/frontend/src/context/OrgPermissionContext/types.ts @@ -71,6 +71,10 @@ export enum OrgPermissionAppConnectionActions { Connect = "connect" } +export enum OrgPermissionAuditLogsActions { + Read = "read" +} + export enum OrgPermissionKmipActions { Proxy = "proxy", Setup = "setup" @@ -118,7 +122,7 @@ export type OrgPermissionSet = | [OrgPermissionBillingActions, OrgPermissionSubjects.Billing] | [OrgPermissionActions, OrgPermissionSubjects.Kms] | [OrgPermissionAdminConsoleAction, OrgPermissionSubjects.AdminConsole] - | [OrgPermissionActions, OrgPermissionSubjects.AuditLogs] + | [OrgPermissionAuditLogsActions, OrgPermissionSubjects.AuditLogs] | [OrgPermissionActions, OrgPermissionSubjects.ProjectTemplates] | [OrgPermissionAppConnectionActions, OrgPermissionSubjects.AppConnections] | [OrgPermissionIdentityActions, OrgPermissionSubjects.Identity] diff --git a/frontend/src/context/ProjectPermissionContext/index.tsx b/frontend/src/context/ProjectPermissionContext/index.tsx index f564ac74e..a1669e18f 100644 --- a/frontend/src/context/ProjectPermissionContext/index.tsx +++ b/frontend/src/context/ProjectPermissionContext/index.tsx @@ -2,6 +2,7 @@ export { useProjectPermission } from "./ProjectPermissionContext"; export type { ProjectPermissionSet, TProjectPermission } from "./types"; export { ProjectPermissionActions, + ProjectPermissionAuditLogsActions, ProjectPermissionCertificateActions, ProjectPermissionCmekActions, ProjectPermissionDynamicSecretActions, diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index dad72cada..acfab612f 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -150,6 +150,10 @@ export enum ProjectPermissionSecretEventActions { SubscribeImportMutations = "subscribe-on-import-mutations" } +export enum ProjectPermissionAuditLogsActions { + Read = "read" +} + export enum PermissionConditionOperators { $IN = "$in", $ALL = "$all", @@ -365,7 +369,7 @@ export type ProjectPermissionSet = | [ProjectPermissionActions, ProjectPermissionSub.Groups] | [ProjectPermissionActions, ProjectPermissionSub.Integrations] | [ProjectPermissionActions, ProjectPermissionSub.Webhooks] - | [ProjectPermissionActions, ProjectPermissionSub.AuditLogs] + | [ProjectPermissionAuditLogsActions, ProjectPermissionSub.AuditLogs] | [ProjectPermissionActions, ProjectPermissionSub.Environments] | [ProjectPermissionActions, ProjectPermissionSub.IpAllowList] | [ProjectPermissionActions, ProjectPermissionSub.Settings] diff --git a/frontend/src/context/index.tsx b/frontend/src/context/index.tsx index 833956d77..bfb504664 100644 --- a/frontend/src/context/index.tsx +++ b/frontend/src/context/index.tsx @@ -2,6 +2,7 @@ export { useOrganization } from "./OrganizationContext"; export type { TOrgPermission } from "./OrgPermissionContext"; export { OrgPermissionActions, + OrgPermissionAuditLogsActions, OrgPermissionBillingActions, OrgPermissionGroupActions, OrgPermissionIdentityActions, @@ -11,6 +12,7 @@ export { export type { TProjectPermission } from "./ProjectPermissionContext"; export { ProjectPermissionActions, + ProjectPermissionAuditLogsActions, ProjectPermissionCertificateActions, ProjectPermissionCmekActions, ProjectPermissionDynamicSecretActions, diff --git a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx index e938aed7d..5bbb42d32 100644 --- a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx +++ b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx @@ -4,9 +4,15 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import ms from "ms"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; -import { OrgPermissionActions, OrgPermissionSubjects, useSubscription } from "@app/context"; +import { + OrgPermissionAuditLogsActions, + OrgPermissionSubjects, + ProjectPermissionAuditLogsActions, + ProjectPermissionSub, + useSubscription +} from "@app/context"; import { Timezone } from "@app/helpers/datetime"; -import { withPermission } from "@app/hoc"; +import { withPermission, withProjectPermission } from "@app/hoc"; import { Workspace } from "@app/hooks/api/workspace/types"; import { usePopUp } from "@app/hooks/usePopUp"; @@ -28,153 +34,173 @@ type Props = { project?: Workspace; }; -export const LogsSection = withPermission( - ({ presets, refetchInterval, showFilters = true, pageView = false, project }: Props) => { - const { subscription } = useSubscription(); +const LogsSectionComponent = ({ + presets, + refetchInterval, + showFilters = true, + pageView = false, + project +}: Props) => { + const { subscription } = useSubscription(); + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); + const [logFilter, setLogFilter] = useState({ + eventType: presets?.eventType || [], + actor: presets?.actorId, + eventMetadata: presets?.eventMetadata + }); + const [timezone, setTimezone] = useState(Timezone.Local); - const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); - const [logFilter, setLogFilter] = useState({ - eventType: presets?.eventType || [], - actor: presets?.actorId, - eventMetadata: presets?.eventMetadata - }); - const [timezone, setTimezone] = useState(Timezone.Local); + const [dateFilter, setDateFilter] = useState( + presets?.endDate || presets?.startDate + ? { + type: AuditLogDateFilterType.Absolute, + startDate: presets?.startDate || new Date(Number(new Date()) - ms("1h")), + endDate: presets?.endDate || new Date() + } + : { + startDate: new Date(Number(new Date()) - ms("1h")), + endDate: new Date(), + type: AuditLogDateFilterType.Relative, + relativeModeValue: "1h" + } + ); - const [dateFilter, setDateFilter] = useState( - presets?.endDate || presets?.startDate - ? { - type: AuditLogDateFilterType.Absolute, - startDate: presets?.startDate || new Date(Number(new Date()) - ms("1h")), - endDate: presets?.endDate || new Date() - } - : { - startDate: new Date(Number(new Date()) - ms("1h")), - endDate: new Date(), - type: AuditLogDateFilterType.Relative, - relativeModeValue: "1h" - } - ); - - useEffect(() => { - if (subscription && !subscription.auditLogs) { - handlePopUpOpen("upgradePlan"); - } - }, [subscription]); - - if (pageView) - return ( -
-
-
-
-

Audit History

- -
- - Docs - -
-
-
-
-
- {showFilters && ( - - )} - {showFilters && ( - - )} -
-
-
- - { - handlePopUpToggle("upgradePlan", isOpen); - }} - text="You can use audit logs if you switch to a paid Infisical plan." - /> -
-
- ); + useEffect(() => { + if (subscription && !subscription.auditLogs) { + handlePopUpOpen("upgradePlan"); + } + }, [subscription]); + if (pageView) return ( -
-
- {showFilters && ( - - )} - {showFilters && ( - - )} +
+
+
+
+

Audit History

+ +
+ + Docs + +
+
+
+
+
+ {showFilters && ( + + )} + {showFilters && ( + + )} +
+
+
+ + { + handlePopUpToggle("upgradePlan", isOpen); + }} + text="You can use audit logs if you switch to a paid Infisical plan." + />
- - { - handlePopUpToggle("upgradePlan", isOpen); - }} - text="You can use audit logs if you switch to a paid Infisical plan." - />
); - }, - { action: OrgPermissionActions.Read, subject: OrgPermissionSubjects.AuditLogs } -); + + return ( +
+
+ {showFilters && ( + + )} + {showFilters && ( + + )} +
+ + { + handlePopUpToggle("upgradePlan", isOpen); + }} + text="You can use audit logs if you switch to a paid Infisical plan." + /> +
+ ); +}; + +export const LogsSection = (props: Props) => { + const { project } = props; + + if (project) { + const ProjectLogsSectionWithPermission = withProjectPermission(LogsSectionComponent, { + action: ProjectPermissionAuditLogsActions.Read, + subject: ProjectPermissionSub.AuditLogs + }); + return ; + } + + const OrgLogsSectionWithPermission = withPermission(LogsSectionComponent, { + action: OrgPermissionAuditLogsActions.Read, + subject: OrgPermissionSubjects.AuditLogs + }); + return ; +}; diff --git a/frontend/src/pages/organization/RoleByIDPage/components/OrgRoleModifySection.utils.ts b/frontend/src/pages/organization/RoleByIDPage/components/OrgRoleModifySection.utils.ts index 275b73fd0..03b86f2ab 100644 --- a/frontend/src/pages/organization/RoleByIDPage/components/OrgRoleModifySection.utils.ts +++ b/frontend/src/pages/organization/RoleByIDPage/components/OrgRoleModifySection.utils.ts @@ -5,6 +5,7 @@ import { OrgPermissionSubjects } from "@app/context"; import { OrgGatewayPermissionActions, OrgPermissionAppConnectionActions, + OrgPermissionAuditLogsActions, OrgPermissionBillingActions, OrgPermissionGroupActions, OrgPermissionIdentityActions, @@ -23,6 +24,12 @@ const generalPermissionSchema = z }) .optional(); +const auditLogsPermissionSchema = z + .object({ + [OrgPermissionAuditLogsActions.Read]: z.boolean().optional() + }) + .optional(); + const billingPermissionSchema = z .object({ [OrgPermissionBillingActions.Read]: z.boolean().optional(), @@ -121,7 +128,7 @@ export const formSchema = z.object({ }) .optional(), - "audit-logs": generalPermissionSchema, + "audit-logs": auditLogsPermissionSchema, member: generalPermissionSchema, groups: groupPermissionSchema, role: generalPermissionSchema, diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx new file mode 100644 index 000000000..82c4966b9 --- /dev/null +++ b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx @@ -0,0 +1,164 @@ +import { useEffect, useMemo } from "react"; +import { Control, Controller, UseFormSetValue, useWatch } from "react-hook-form"; +import { faChevronDown, faChevronRight } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { createNotification } from "@app/components/notifications"; +import { Checkbox, Select, SelectItem, Td, Tr } from "@app/components/v2"; +import { OrgPermissionAuditLogsActions } from "@app/context/OrgPermissionContext/types"; +import { useToggle } from "@app/hooks"; + +import { TFormSchema } from "../OrgRoleModifySection.utils"; + +type Props = { + isEditable: boolean; + setValue: UseFormSetValue; + control: Control; +}; + +enum Permission { + NoAccess = "no-access", + ReadOnly = "read-only", + FullAccess = "full-access", + Custom = "custom" +} + +const PERMISSION_ACTIONS = [ + { + action: OrgPermissionAuditLogsActions.Read, + label: "View" + } +] as const; + +export const OrgPermissionAuditLogsRow = ({ isEditable, control, setValue }: Props) => { + const [isRowExpanded, setIsRowExpanded] = useToggle(); + const [isCustom, setIsCustom] = useToggle(); + + const rule = useWatch({ + control, + name: "permissions.audit-logs" + }); + + const selectedPermissionCategory = useMemo(() => { + const actions = Object.keys(rule || {}) as Array; + const totalActions = PERMISSION_ACTIONS.length; + const score = actions.map((key) => (rule?.[key] ? 1 : 0)).reduce((a, b) => a + b, 0 as number); + + if (isCustom) return Permission.Custom; + if (score === 0) return Permission.NoAccess; + if (score === totalActions) return Permission.FullAccess; + if (score === 1 && rule?.[OrgPermissionAuditLogsActions.Read]) return Permission.ReadOnly; + + return Permission.Custom; + }, [rule, isCustom]); + + useEffect(() => { + if (selectedPermissionCategory === Permission.Custom) setIsCustom.on(); + else setIsCustom.off(); + }, [selectedPermissionCategory]); + + useEffect(() => { + const isRowCustom = selectedPermissionCategory === Permission.Custom; + if (isRowCustom) { + setIsRowExpanded.on(); + } + }, []); + + const handlePermissionChange = (val: Permission) => { + if (!val) return; + if (val === Permission.Custom) { + setIsRowExpanded.on(); + setIsCustom.on(); + return; + } + setIsCustom.off(); + + switch (val) { + case Permission.FullAccess: + case Permission.ReadOnly: + // For audit logs, both full access and read-only are the same - just read access + setValue( + "permissions.audit-logs", + { + [OrgPermissionAuditLogsActions.Read]: true + }, + { shouldDirty: true } + ); + break; + + case Permission.NoAccess: + default: + setValue( + "permissions.audit-logs", + { + [OrgPermissionAuditLogsActions.Read]: false + }, + { shouldDirty: true } + ); + } + }; + + return ( + <> +
setIsRowExpanded.toggle()} + > + + + + + {isRowExpanded && ( + + + + )} + + ); +}; diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionRow.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionRow.tsx index e0702b201..0254e8240 100644 --- a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionRow.tsx +++ b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionRow.tsx @@ -71,6 +71,7 @@ type Props = { | "gateway" | "secret-share" | "billing" + | "audit-logs" | "machine-identity-auth-template" >; setValue: UseFormSetValue; diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionsSection.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionsSection.tsx index 6fd848f56..3b606cbb1 100644 --- a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionsSection.tsx +++ b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/RolePermissionsSection.tsx @@ -16,6 +16,7 @@ import { TFormSchema } from "../OrgRoleModifySection.utils"; import { OrgPermissionAdminConsoleRow } from "./OrgPermissionAdminConsoleRow"; +import { OrgPermissionAuditLogsRow } from "./OrgPermissionAuditLogsRow"; import { OrgPermissionBillingRow } from "./OrgPermissionBillingRow"; import { OrgGatewayPermissionRow } from "./OrgPermissionGatewayRow"; import { OrgPermissionGroupRow } from "./OrgPermissionGroupRow"; @@ -39,10 +40,6 @@ const SIMPLE_PERMISSION_OPTIONS = [ title: "Incident Contacts", formName: "incident-contact" }, - { - title: "Audit Logs", - formName: "audit-logs" - }, { title: "Organization Profile", formName: "settings" @@ -166,6 +163,11 @@ export const RolePermissionsSection = ({ roleId }: Props) => { /> ); })} + { const { subscription } = useSubscription(); + const { currentWorkspace } = useWorkspace(); const auditLogsRetentionDays = subscription?.auditLogsRetentionDays ?? 30; @@ -30,6 +31,7 @@ export const IntegrationAuditLogsSection = ({ integration }: Props) => { { const { subscription } = useSubscription(); + const { currentWorkspace } = useWorkspace(); const auditLogsRetentionDays = subscription?.auditLogsRetentionDays ?? 30; @@ -36,6 +37,7 @@ export const SecretSyncAuditLogsSection = ({ secretSync }: Props) => { Date: Thu, 28 Aug 2025 20:47:10 -0300 Subject: [PATCH 16/40] Improve Audit Log Org Permission Label --- .../OrgPermissionAuditLogsRow.tsx | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx index 82c4966b9..d7d523b53 100644 --- a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx +++ b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx @@ -18,8 +18,6 @@ type Props = { enum Permission { NoAccess = "no-access", - ReadOnly = "read-only", - FullAccess = "full-access", Custom = "custom" } @@ -41,13 +39,10 @@ export const OrgPermissionAuditLogsRow = ({ isEditable, control, setValue }: Pro const selectedPermissionCategory = useMemo(() => { const actions = Object.keys(rule || {}) as Array; - const totalActions = PERMISSION_ACTIONS.length; const score = actions.map((key) => (rule?.[key] ? 1 : 0)).reduce((a, b) => a + b, 0 as number); if (isCustom) return Permission.Custom; if (score === 0) return Permission.NoAccess; - if (score === totalActions) return Permission.FullAccess; - if (score === 1 && rule?.[OrgPermissionAuditLogsActions.Read]) return Permission.ReadOnly; return Permission.Custom; }, [rule, isCustom]); @@ -74,18 +69,6 @@ export const OrgPermissionAuditLogsRow = ({ isEditable, control, setValue }: Pro setIsCustom.off(); switch (val) { - case Permission.FullAccess: - case Permission.ReadOnly: - // For audit logs, both full access and read-only are the same - just read access - setValue( - "permissions.audit-logs", - { - [OrgPermissionAuditLogsActions.Read]: true - }, - { shouldDirty: true } - ); - break; - case Permission.NoAccess: default: setValue( @@ -118,8 +101,6 @@ export const OrgPermissionAuditLogsRow = ({ isEditable, control, setValue }: Pro position="popper" > No Access - Read Only - Full Access Custom From 8e42fdaf5bfb9d400e9bfd64cd614a328fc7a7e0 Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 01:41:47 -0400 Subject: [PATCH 17/40] feat(PKI): External CA EAB Support + DigiCert Docs --- backend/src/lib/api-docs/constants.ts | 4 +- .../acme/acme-certificate-authority-fns.ts | 31 +++-- .../acme-certificate-authority-schemas.ts | 4 +- docs/documentation/platform/pki/acme-ca.mdx | 15 +++ .../external-ca/create-external-ca-form.png | Bin 552146 -> 601245 bytes frontend/src/hooks/api/ca/types.ts | 2 + .../components/ExternalCaModal.tsx | 113 +++++++++++++++--- 7 files changed, 144 insertions(+), 25 deletions(-) diff --git a/backend/src/lib/api-docs/constants.ts b/backend/src/lib/api-docs/constants.ts index 47f5ca5cd..504b9019d 100644 --- a/backend/src/lib/api-docs/constants.ts +++ b/backend/src/lib/api-docs/constants.ts @@ -2148,7 +2148,9 @@ export const CertificateAuthorities = { directoryUrl: `The directory URL for the ACME Certificate Authority.`, accountEmail: `The email address for the ACME Certificate Authority.`, provider: `The DNS provider for the ACME Certificate Authority.`, - hostedZoneId: `The hosted zone ID for the ACME Certificate Authority.` + hostedZoneId: `The hosted zone ID for the ACME Certificate Authority.`, + eabKid: `The External Account Binding (EAB) Key ID for the ACME Certificate Authority. Required if the ACME provider uses EAB.`, + eabHmacKey: `The External Account Binding (EAB) HMAC key for the ACME Certificate Authority. Required if the ACME provider uses EAB.` }, INTERNAL: { type: "The type of CA to create.", diff --git a/backend/src/services/certificate-authority/acme/acme-certificate-authority-fns.ts b/backend/src/services/certificate-authority/acme/acme-certificate-authority-fns.ts index 86beadffe..830378ca8 100644 --- a/backend/src/services/certificate-authority/acme/acme-certificate-authority-fns.ts +++ b/backend/src/services/certificate-authority/acme/acme-certificate-authority-fns.ts @@ -64,6 +64,8 @@ type DBConfigurationColumn = { directoryUrl: string; accountEmail: string; hostedZoneId: string; + eabKid?: string; + eabHmacKey?: string; }; export const castDbEntryToAcmeCertificateAuthority = ( @@ -89,7 +91,9 @@ export const castDbEntryToAcmeCertificateAuthority = ( hostedZoneId: dbConfigurationCol.hostedZoneId }, directoryUrl: dbConfigurationCol.directoryUrl, - accountEmail: dbConfigurationCol.accountEmail + accountEmail: dbConfigurationCol.accountEmail, + eabKid: dbConfigurationCol.eabKid, + eabHmacKey: dbConfigurationCol.eabHmacKey }, status: ca.status as CaStatus }; @@ -128,7 +132,7 @@ export const AcmeCertificateAuthorityFns = ({ }); } - const { dnsAppConnectionId, directoryUrl, accountEmail, dnsProviderConfig } = configuration; + const { dnsAppConnectionId, directoryUrl, accountEmail, dnsProviderConfig, eabKid, eabHmacKey } = configuration; const appConnection = await appConnectionDAL.findById(dnsAppConnectionId); if (!appConnection) { @@ -171,7 +175,9 @@ export const AcmeCertificateAuthorityFns = ({ directoryUrl, accountEmail, dnsProvider: dnsProviderConfig.provider, - hostedZoneId: dnsProviderConfig.hostedZoneId + hostedZoneId: dnsProviderConfig.hostedZoneId, + eabKid, + eabHmacKey } }, tx @@ -214,7 +220,7 @@ export const AcmeCertificateAuthorityFns = ({ }) => { const updatedCa = await certificateAuthorityDAL.transaction(async (tx) => { if (configuration) { - const { dnsAppConnectionId, directoryUrl, accountEmail, dnsProviderConfig } = configuration; + const { dnsAppConnectionId, directoryUrl, accountEmail, dnsProviderConfig, eabKid, eabHmacKey } = configuration; const appConnection = await appConnectionDAL.findById(dnsAppConnectionId); if (!appConnection) { @@ -254,7 +260,9 @@ export const AcmeCertificateAuthorityFns = ({ directoryUrl, accountEmail, dnsProvider: dnsProviderConfig.provider, - hostedZoneId: dnsProviderConfig.hostedZoneId + hostedZoneId: dnsProviderConfig.hostedZoneId, + eabKid, + eabHmacKey } }, tx @@ -354,10 +362,19 @@ export const AcmeCertificateAuthorityFns = ({ await blockLocalAndPrivateIpAddresses(acmeCa.configuration.directoryUrl); - const acmeClient = new acme.Client({ + const acmeClientOptions: acme.ClientOptions = { directoryUrl: acmeCa.configuration.directoryUrl, accountKey - }); + }; + + if (acmeCa.configuration.eabKid && acmeCa.configuration.eabHmacKey) { + acmeClientOptions.externalAccountBinding = { + kid: acmeCa.configuration.eabKid, + hmacKey: acmeCa.configuration.eabHmacKey + }; + } + + const acmeClient = new acme.Client(acmeClientOptions); const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); diff --git a/backend/src/services/certificate-authority/acme/acme-certificate-authority-schemas.ts b/backend/src/services/certificate-authority/acme/acme-certificate-authority-schemas.ts index 56b3118cf..70b0cb0e1 100644 --- a/backend/src/services/certificate-authority/acme/acme-certificate-authority-schemas.ts +++ b/backend/src/services/certificate-authority/acme/acme-certificate-authority-schemas.ts @@ -18,7 +18,9 @@ export const AcmeCertificateAuthorityConfigurationSchema = z.object({ hostedZoneId: z.string().trim().min(1).describe(CertificateAuthorities.CONFIGURATIONS.ACME.hostedZoneId) }), directoryUrl: z.string().url().trim().min(1).describe(CertificateAuthorities.CONFIGURATIONS.ACME.directoryUrl), - accountEmail: z.string().trim().min(1).describe(CertificateAuthorities.CONFIGURATIONS.ACME.accountEmail) + accountEmail: z.string().trim().min(1).describe(CertificateAuthorities.CONFIGURATIONS.ACME.accountEmail), + eabKid: z.string().trim().max(64).optional().describe(CertificateAuthorities.CONFIGURATIONS.ACME.eabKid), + eabHmacKey: z.string().trim().max(512).optional().describe(CertificateAuthorities.CONFIGURATIONS.ACME.eabHmacKey) }); export const AcmeCertificateAuthorityCredentialsSchema = z.object({ diff --git a/docs/documentation/platform/pki/acme-ca.mdx b/docs/documentation/platform/pki/acme-ca.mdx index 8b1fa10db..189c1045a 100644 --- a/docs/documentation/platform/pki/acme-ca.mdx +++ b/docs/documentation/platform/pki/acme-ca.mdx @@ -147,6 +147,8 @@ In the following steps, we explore how to set up ACME Certificate Authority inte - **Directory URL**: Enter the ACME v2 directory URL for your chosen CA provider (e.g., `https://acme-v02.api.letsencrypt.org/directory` for Let's Encrypt). - **Account Email**: Email address to associate with your ACME account. This email will receive important notifications about your certificates. - **Enable Direct Issuance**: Toggle on to allow direct certificate issuance without requiring subscribers. + - **EAB Key Identifier (KID)**: (Optional) The Key Identifier (KID) provided by your ACME CA for External Account Binding (EAB). This is required by some ACME providers (e.g., ZeroSSL, DigiCert) to link your ACME account to an external account you've pre-registered with them. + - **EAB HMAC Key**: (Optional) The HMAC Key provided by your ACME CA for External Account Binding (EAB). This key is used in conjunction with the KID to prove ownership of the external account during ACME account registration. Finally, press **Create** to register the ACME CA with Infisical. @@ -277,6 +279,19 @@ Let's Encrypt is a free, automated, and open Certificate Authority that provides Always test your ACME integration using Let's Encrypt's staging environment first. This allows you to verify your DNS configuration and certificate issuance process without consuming your production rate limits. +## Example: DigiCert Integration + +DigiCert is a leading commercial Certificate Authority providing a wide range of trusted SSL/TLS certificates. Infisical can integrate with DigiCert's ACME service to automate the provisioning and management of these certificates. + +- **Directory URL**: `https://acme.digicert.com/v2/acme/directory` +- **External Account Binding (EAB)**: Required. You will need a Key Identifier (KID) and HMAC Key from your DigiCert account to register the ACME CA in Infisical. +- **Certificate Validity**: Typically 90 days, with automatic renewal through Infisical. +- **Trusted By**: All major browsers and operating systems. + + + When integrating with DigiCert ACME, ensure you have obtained the necessary External Account Binding (EAB) Key Identifier (KID) and HMAC Key from your DigiCert account. + + ## FAQ diff --git a/docs/images/platform/pki/ca/external-ca/create-external-ca-form.png b/docs/images/platform/pki/ca/external-ca/create-external-ca-form.png index ef572bfa7ccde7ef528bd753f362b8929f5020c4..bc32c23f69f08f14e26921d6bab92d8dcb477fb7 100644 GIT binary patch literal 601245 zcmbq)by!s0w=m%d0s=~jNT?_cO7{Q?(%r2vbV)NXq@a|jba(gAF@%&1F(5H?N_Pwc z3}eeoVEAb=d88%>K(4G`tCl_VA=CkyeUEFP*otXZ@`Tm2mhr7hHXSZ;s|3vO?YxUpQo!tKO^KS{k^B08YHTNr? z|2Z7wZTtTi{ukuGhyOKMR9_S1=Ir3{*YXn2Ui0(wy#5!ef58m?Kd}D>={VWmzAx{; zrv0^msJg8;$id*Pts}_E?LW|p@CpB4VEz9A=Hq`Q_}^e1H<0TaXUE&gw^+3-TtT;3 zY@FSn@%%+}p8ur!E&F)>i+{H_|0Mw+r(3qW-tyNh+h!C8heX--%^P)vH*c8KU7f9L z9Y8oZ^5OA%1o~S2)EP#aPwx=El~UYPA^-kRN|BH&@buXiMR~kW4=rTWt8*iXDooy1 z<&-i-(34lc*Q4&)H>4(J=h*qsSl%Yd4j2~kT3-;u8JWG%v?VRM zCso0$MoqDcc$^qF_{;+jPb!Go1((_{$QT|TK}1kRQX9Z?;Dq;f+SEdE@v0fSC7YUJL&*`LQ+H=NM79(mo-<^k zv;kwvbmM%eGvr9OM6F68t1=@`K{R zg0ofu`K$5l3HMcnjBH<(;6{7+CdR*=Oq*5d9uESY=N_3~oF&mfab5$hbW>-|-c zacr3K=o0n1FL zW5CRe^Yu{I6&&aX;GYL1k=$SO@Vh)8qXV# z_6R7x(#0P5`cFs6?hX112a~=m^|CedmMy<>$n+oLhvRmWe;^;F7V3bw@Q6P##hQEc zPB->RJz3nlr*_Zr)4NY}pFDr2E3C*&lk@ZidloT{XJ*zio`e`ltLV)!qQkb;X{}f8 zcHnviow&G|3D!8Q>3d&^)wDOrdVY2}V`r%33F-xn^67Uc}0VlFf; zQUsHn_stO_7fnD*Gs4-b?1ZUjyEvYtV&NtoDOKQ(pI
l1rwhZE?{#kNriy)shH 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 z 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

977sX2h0Dsy*FKopSI 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

KidtzkBnJ24S9w;-yAstjzsRPe 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≀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�j#Bowd$&pC;+)Ab#h{&tl_1O2SUSBj>T^zBv^J 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

iOY$9!n1lW))O^}ZuObS#eeQn?MASCybo=;F_m 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

dvYxqw~7JU~Houl;A4kR8;` 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 { + if (REQUIRED_EAB_DIRECTORIES.includes(data.directoryUrl)) { + if (!data.eabKid || data.eabKid.trim() === "") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EAB Key Identifier (KID) is required for this directory URL", + path: ["eabKid"] + }); + } + if (!data.eabHmacKey || data.eabHmacKey.trim() === "") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "EAB HMAC Key is required for this directory URL", + path: ["eabHmacKey"] + }); + } + } + }); const azureAdCsConfigurationSchema = z.object({ azureAdcsConnection: z.object({ @@ -122,6 +154,10 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { caType === CaType.ACME && configuration && "dnsProviderConfig" in configuration ? configuration.dnsProviderConfig.provider : undefined; + const directoryUrl = + caType === CaType.ACME && configuration && "directoryUrl" in configuration + ? configuration.directoryUrl + : undefined; useEffect(() => { const initialType = (popUp?.ca?.data as { type: CaType })?.type; @@ -155,7 +191,9 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { hostedZoneId: "" }, directoryUrl: "", - accountEmail: "" + accountEmail: "", + eabKid: "", + eabHmacKey: "" } }); } @@ -192,7 +230,8 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { availableAzureConnections ]); - const isPending = isRoute53Pending || isCloudflarePending || isAzurePending; + const isPending = + isRoute53Pending || isCloudflarePending || (isAzurePending && caType === CaType.AZURE_AD_CS); const dnsAppConnection = caType === CaType.ACME && configuration && "dnsAppConnection" in configuration @@ -227,7 +266,9 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { hostedZoneId: ca.configuration.dnsProviderConfig.hostedZoneId }, directoryUrl: ca.configuration.directoryUrl, - accountEmail: ca.configuration.accountEmail + accountEmail: ca.configuration.accountEmail, + eabKid: ca.configuration.eabKid, + eabHmacKey: ca.configuration.eabHmacKey } }); } else if (ca.type === CaType.AZURE_AD_CS && availableConnections?.length) { @@ -268,7 +309,9 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { dnsProviderConfig: formConfiguration.dnsProviderConfig, directoryUrl: formConfiguration.directoryUrl, accountEmail: formConfiguration.accountEmail, - dnsAppConnectionId: formConfiguration.dnsAppConnection.id + dnsAppConnectionId: formConfiguration.dnsAppConnection.id, + eabKid: formConfiguration.eabKid, + eabHmacKey: formConfiguration.eabHmacKey }; } else if (type === CaType.AZURE_AD_CS && "azureAdcsConnection" in formConfiguration) { configPayload = { @@ -499,6 +542,44 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { )} /> + ( + + + + )} + /> + ( + + + + )} + /> )} {caType === CaType.AZURE_AD_CS && ( From f9784f15edfbdd749c19c11edf093e97dd664f79 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Fri, 29 Aug 2025 15:43:53 +0200 Subject: [PATCH 18/40] docs: remove sdk contributor doc --- docs/contributing/sdk/developing.mdx | 408 --------------------------- docs/docs.json | 4 - 2 files changed, 412 deletions(-) delete mode 100644 docs/contributing/sdk/developing.mdx diff --git a/docs/contributing/sdk/developing.mdx b/docs/contributing/sdk/developing.mdx deleted file mode 100644 index 82fd28be8..000000000 --- a/docs/contributing/sdk/developing.mdx +++ /dev/null @@ -1,408 +0,0 @@ ---- -title: "Local development" -description: "This guide will help you contribute to the Infisical SDK." ---- - -## Fork and clone the repo - -[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) the [repository](https://github.com/Infisical/sdk) to your own GitHub account and then [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) it to your local device. - -Once, you've done that, create a new branch: - -```console -git checkout -b MY_BRANCH_NAME -``` - -## Set up environment variables - -Start by creating a .env file at the root of the Infisical directory then copy the contents of the file below into the .env file. - - - ```env - # This is required for running tests locally. - # Rename this file to ".env" and fill in the values below. - - # Please make sure that the machine identity has access to the project you are testing in. - # https://infisical.com/docs/documentation/platform/identities/universal-auth - INFISICAL_UNIVERSAL_CLIENT_ID=MACHINE_IDENTITY_CLIENT_ID - INFISICAL_UNIVERSAL_CLIENT_SECRET=MACHINE_IDENTITY_CLIENT_SECRET - - # The ID of the Infisical project where we will create the test secrets. - # NOTE: The project must have a dev environment. (This is created by default when you create a project.) - INFISICAL_PROJECT_ID=INFISICAL_TEST_PROJECT_ID - - # The Infisical site URL. If you are testing with a local Infisical instance, then this should be set to "http://localhost:8080". - INFISICAL_SITE_URL=https://app.infisical.com - -```` - - - - The above values are required for running tests locally. Before opening a pull request, make sure to run `cargo test` to ensure that all tests pass. - - - -## Guidelines - -### Predictable and consistent -When adding new functionality (such as new functions), it's very important that the functionality is added to _all_ the SDK's. This is to ensure that the SDK's are predictable and consistent across all languages. If you are adding new functionality, please make sure to add it to all the SDK's. - -### Handling errors -Error handling is very important when writing SDK's. We want to make sure that the SDK's are easy to use, and that the user gets a good understanding of what went wrong when something fails. When adding new functionality, please make sure to add proper error handling. [Read more about error handling here](#error-handling). - -### Tests -If you add new functionality or modify existing functionality, please write tests thats properly cover the new functionality. You can run tests locally by running `cargo test` from the root directory. You must always run tests before opening a pull request. - -### Code style -Please follow the default rust styling guide when writing code for the base SDK. [Read more about rust code style here](https://doc.rust-lang.org/nightly/style-guide/#the-default-rust-style). - - -## Prerequisites for contributing - -### Understanding the terms - -In the guide we use some terms that might be unfamiliar to you. Here's a quick explanation of the terms we use: -- **Base SDK**: The base SDK is the SDK that all other SDK's are built on top of. The base SDK is written in Rust, and is responsible for executing commands and parsing the input and output to and from JSON. -- **Commands**: Commands are what's being sent from the target language to the command handler. The command handler uses the command to execute the corresponding function in the base SDK. Commands are in reality just a JSON string that tells the command handler what function to execute, and what input to use. -- **Command handler**: The command handler is the part of the base SDK that takes care of executing commands. It also takes care of parsing the input and output to and from JSON. -- **Target language**: The target language refers to the actual SDK code. For example, the [Node.js SDK](https://www.npmjs.com/package/@infisical/sdk) is a "target language", and so is the [Python SDK](https://pypi.org/project/infisical-python/). - - -### Understanding the execution flow -After the target language SDK is initiated, it uses language-specific bindings to interact with the base SDK. -These bindings are instantiated, setting up the interface for command execution. A client within the command handler is created, which issues commands to the base SDK. -When a command is executed, it is first validated. If valid, the command handler locates the corresponding command to perform. If the command executes successfully, the command handler returns the output to the target language SDK, where it is parsed and returned to the user. -If the command handler fails to validate the input, an error will be returned to the target language SDK. - - - - - - - - -### Rust knowledge - -Contributing to the SDK requires intermediate to advanced knowledge of Rust concepts such as lifetimes, traits, generics, and async/await _(futures)_, and more. - -### Rust setup -The base SDK is written in rust. Therefore you must have rustc and cargo installed. You can install rustc and cargo by following the instructions [here](https://www.rust-lang.org/tools/install). - -You shouldn't have to use the rust cross compilation toolchain, as all compilation is done through a collection of Github Actions. However. If you need to test cross compilation, please do so with Github Actions. - -### Tests -If you add new functionality or modify existing functionality, please write tests thats properly cover the new functionality. You can run tests locally by running `cargo test` from the root directory. - -### Language-specific crates -The language-specific crates should ideally never have to be modified, as they are simply a wrapper for the `infisical-json` crate, which executes "commands" from the base SDK. If you need to create a new target-language specific crate, please try to create native bindings for the target language. Some languages don't have direct support for native bindings (Java as an example). In those cases we can use the C bindings (`crates/infisical-c`) in the target language. - - - - -## Generate types -Having almost seemless type safety from the base SDK to the target language is critical, as writing types for each language has a lot of drawbacks such as duplicated code, and lots of overhead trying to keep the types up-to-date and in sync across a large collection of languages. Therefore we decided to use [QuickType](https://quicktype.io/) and [Serde](https://serde.rs/) to help us generate types for each language. In our Rust base SDK (`crates/infisical`), we define all the inputs/outputs. - -If you are interested in reading about QuickType works under the hood, you can [read more here](http://blog.quicktype.io/under-the-hood/). - -This is an example of a type defined in Rust (both input and output). For this to become a generated type, you'll need to add it to our schema generator. More on that further down. -```rust -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, JsonSchema)] -#[serde(rename_all = "camelCase")] -// Input: -pub struct CreateSecretOptions { - pub environment: String, // environment - pub secret_comment: Option, // secretComment - pub path: Option, // secretPath - pub secret_value: String, // secretValue - pub skip_multiline_encoding: Option, // skipMultilineEncoding - pub r#type: Option, // shared / personal - pub project_id: String, // workspaceId - pub secret_name: String, // secretName (PASSED AS PARAMETER IN REQUEST) -} - -// Output: -#[derive(Serialize, Deserialize, Debug, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct CreateSecretResponse { - pub secret: Secret, // "Secret" is defined elsewhere. -} -```` - -### Adding input types to the schema generator - -You will _only_ have to define outputs in our schema generator, then QuickType will take care of the rest behind the scenes. You can find the Rust crate that takes care of type generation here: `crates/sdk-schemas/src/main.rs`. - -Simply add the output _(also called response)_, to the `write_schema_for_response!` macro. This will let QuickType know that it should generate types for the given structs. The main function will look something like this: - -```rust -fn main() -> Result<()> { - // Input types for new Client - write_schema_for!(infisical_json::client::ClientSettings); - // Input types for Client::run_command - write_schema_for!(infisical_json::command::Command); - - // Output types for Client::run_command - // Only add structs which are direct results of SDK commands. - write_schema_for_response! { - infisical::manager::secrets::GetSecretResponse, - infisical::manager::secrets::ListSecretsResponse, - infisical::manager::secrets::UpdateSecretResponse, - infisical::manager::secrets::DeleteSecretResponse, - infisical::manager::secrets::CreateSecretResponse, // <-- This is the output from the above example! - infisical::auth::AccessTokenSuccessResponse - }; - - Ok(()) -} -``` - -### Generating the types for the target language - -Once you've added the output to the schema generator, you can generate the types for the target language by running the following command from the root directory: - -```console -$ npm install -$ npm run schemas -``` - -If you change any of the structs defined in the base SDK, you will need to run this script to re-generate the types. - -This command will run the `schemas.ts` file found in the `support/scripts` folder. If you are adding a new language, it's important that you add the language to the code. - -This is an example of how how we generate types for Node.js: - -```ts -const ts = await quicktype({ - inputData, - lang: "typescript", - rendererOptions: {} -}); -await ensureDir("./languages/node/src/infisical_client"); -writeToFile("./languages/node/src/infisical_client/schemas.ts", ts.lines); -``` - -## Building bindings -We've tried to streamline the building process as much as possible. So you shouldn't have to worry much about building bindings, as it should just be a few commands. - -### Node.js -Building bindings for Node.js is very straight foward. The command below will generate NAPI bindings for Node.js, and move the bindings to the correct folder. We use [NAPI-RS](https://napi.rs/) to generate the bindings. - -```console -$ cd languages/node -$ npm run build -``` - -### Python -To generate and use python bindings you will need to run the following commands. -The Python SDK is located inside the crates folder. This is a limitation of the maturin tool, forcing us to structure the project in this way. - -```console -$ pip install -U pip maturin -$ cd crates/infisical-py -$ python3 -m venv .venv -$ source .venv/bin/activate -$ maturin develop -``` - - - After running the commands above, it's very important that you rename the generated .so file to `infisical_py.so`. After renaming it you also need to move it into the root of the `crates/infisical-py` folder. - - -### Java -Java uses the C bindings to interact with the base SDK. To build and use the C bindings in Java, please follow the instructions below. - -```console -$ cd crates/infisical-c -$ cargo build --release -$ cd ../../languages/java -``` - - After generating the C bindings, the generated .so or .dll has been created in the `/target` directory at the root of the project. - You have to manually move the generated file into the `languages/java/src/main/resources` directory. - - -## Error handling - -### Error handling in the base SDK - -The base SDK should never panic. If an error occurs, we should return a `Result` with an error message. We have a custom Result type defined in the `error.rs` file in the base SDK. - -All our errors are defined in an enum called `Error`. The `Error` enum is defined in the `error.rs` file in the base SDK. The `Error` enum is used in the `Result` type, which is used as the return type for all functions in the base SDK. - -```rust -#[derive(Debug, Error)] -pub enum Error { - // Secret not found - #[error("Secret with name '{}' not found.", .secret_name)] - SecretNotFound { secret_name: String }, - - // .. other errors - - // Errors that are not specific to the base SDK. - #[error(transparent)] - Reqwest(#[from] reqwest::Error), - #[error(transparent)] - Serde(#[from] serde_json::Error), - #[error(transparent)] - Io(#[from] std::io::Error), -} -``` - -### Returning an error - -You can find many examples of how we return errors in the SDK code. A relevant example is for creating secrets, which can be found in `crates/infisical/src/api/secrets/create_secret.rs`. When the error happened due to a request error to our API, we have an API error handler. This prevents duplicate code and keeps error handling consistent across the SDK. You can find the api error handler in the `error.rs` file. - -### Error handling in the target language SDK's. - -All data sent to the target language SDK has the same format. The format is an object with 3 fields: `success (boolean)`, `data (could be anything or nothing)`, and `errorMessage (string or null)`. - -The `success` field is used to determine if the request was successful or not. The `data` field is used to return data from the SDK. The `errorMessage` field is used to return an error message if the request was not successful. - -This means that if the success if false or if the error message is not null, something went wrong and we should throw an error on the target-language level, with the error message. - -## Command handler - -### What is the command handler - -The command handler (the `infisical-json` crate), takes care of executing commands sent from the target language. It also takes care of parsing the input and output to and from JSON. The command handler is the only part of the base SDK that should be aware of JSON. The rest of the base SDK should be completely unaware of JSON, and only work with the Rust structs defined in the base SDK. - -The command handler exposes a function called `run_command`, which is what we use in the target language to execute commands. The function takes a json string as input, and returns a json string as output. We use helper functions generated by QuickType to convert the input and output to and from JSON. - -### Creating new SDK methods - -Creating new commands is necessary when adding new methods to the SDK's. Defining a new command is a 3-step process in most cases. - -#### 1. Define the input and output structs - -Earlier in this guide, we defined the input and output structs for the `CreateSecret` command. We will use that as an example here as well. - -#### 2. Creating the method in the base SDK - -The first step is to create the method in the base SDK. This step will be different depending on what method you are adding. In this example we're going to assume you're adding a function for creating a new secret. - -After you created the function for creating the secret, you'll need need to add it to the ClientSecrets implementation. We do it this way to keep the code organized and easy to read. The ClientSecrets struct is located in the `crates/infisical/src/manager/secrets.rs` file. - -```rust -pub struct ClientSecrets<'a> { - pub(crate) client: &'a mut crate::Client, -} - -impl<'a> ClientSecrets<'a> { - pub async fn create(&mut self, input: &CreateSecretOptions) -> Result { - create_secret(self.client, input).await // <-- This is the function you created! - } -} - -impl<'a> Client { - pub fn secrets(&'a mut self) -> ClientSecrets<'a> { - ClientSecrets { client: self } - } -} -``` - -#### 3. Define a new command - -We define new commands in the `crates/infisical-json/src/command.rs` file. The `Command` enum is what we use to define new commands. - -In the codesnippet below we define a new command called `CreateSecret`. The `CreateSecret` command takes a `CreateSecretOptions` struct as input. We don't have to define the output, because QuickType's converter helps us with figuring out the return type for each command. - -````rust -```rust -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, JsonSchema, Debug)] -#[serde(rename_all = "camelCase", deny_unknown_fields)] -pub enum Command { - GetSecret(GetSecretOptions), - ListSecrets(ListSecretsOptions), - CreateSecret(CreateSecretOptions), // <-- The new command! - UpdateSecret(UpdateSecretOptions), - DeleteSecret(DeleteSecretOptions), -} -```` - -#### 4. Add the command to the command handler - -After defining the command, we need to add it to the command handler itself. This takes place in the `crates/infisical-json/src/client.rs` file. The `run_command` function is what we use to execute commands. - -In the Client implementation we try to parse the JSON string into a `Command` enum. If the parsing is successful, we match the command and execute the corresponding function. - -```rust -match cmd { - Command::GetSecret(req) => self.0.secrets().get(&req).await.into_string(), - Command::ListSecrets(req) => self.0.secrets().list(&req).await.into_string(), - Command::UpdateSecret(req) => self.0.secrets().update(&req).await.into_string(), - Command::DeleteSecret(req) => self.0.secrets().delete(&req).await.into_string(), - - // This is the new command: - Command::CreateSecret(req) => self.0.secrets().create(&req).await.into_string(), -} -``` - -#### 5. Implementing the new command in the target language SDK's - -We did it! We've now added a new command to the base SDK. The last step is to implement the new command in the target language SDK's. The process is a little different from language to language, but in this example we're going to assume that we're adding a new command to the Node.js SDK. - -First you'll need to generate the new type schemas, we added a new command, input struct, and output struct. [Read more about generating types here](#generating-the-types-for-the-target-language). - -Secondly you need to build the new node bindings so we can use the new functionality in the Node.js SDK. You can do this by running the following command from the `languages/node` directory: - -```console -$ npm install -$ npm run build -``` - -The build command will execute a build script in the `infisical-napi` crate, and move the generated bindings to the appropriate folder. - -After building the new bindings, you can access the new functionality in the Node.js SDK source. - -```ts -// 'binding' is a js file that makes it easier to access the methods in the bindings. (it's auto generated when running npm run build) -import * as rust from "../../binding"; -// We can import the newly generated types from the schemas.ts file. (Generated with QuickType!) -import type { CreateSecretOptions, CreateSecretResponse } from "./schemas"; -// This is the QuickType converter that we use to create commands with! It takes care of all JSON parsing and serialization. -import { Convert, ClientSettings } from "./schemas"; - -export class InfisicalClient { - #client: rust.Client; - - constructor(settings: ClientSettings) { - const settingsJson = settings == null ? null : Convert.clientSettingsToJson(settings); - this.#client = new rust.InfisicalClient(settingsJson); - } - - // ... getSecret - // ... listSecrets - // ... updateSecret - // ... deleteSecret - - async createSecret(options: CreateSecretOptions): Promise { - // The runCommand will return a JSON string, which we can parse into a CreateSecretResponse. - const command = await this.#client.runCommand( - Convert.commandToJson({ - createSecret: options - }) - ); - const response = Convert.toResponseForCreateSecretResponse(command); // <-- This is the QuickType converter in action! - - // If the response is not successful or the data is null, we throw an error. - if (!response.success || response.data == null) { - throw new Error(response.errorMessage ?? "Something went wrong"); - } - - // To make it easier to work with the response, we return the secret directly. - return response.data.secret; - } -} -``` - -And that's it! We've now added a new command to the base SDK, and implemented it in the Node.js SDK. The process is very similar for all other languages, but the code will look a little different. - -## Conclusion - -The SDK has a lot of moving parts, and it can be a little overwhelming at first. But once you get the hang of it, it's actually quite simple. If you have any questions, feel free to reach out to us on [Slack](https://infisical.com/slack), or [open an issue](https://github.com/Infisical/sdk/issues) on GitHub. diff --git a/docs/docs.json b/docs/docs.json index 6eadf70b8..2a4e780a8 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -368,10 +368,6 @@ "contributing/platform/backend/how-to-create-a-feature", "contributing/platform/backend/folder-structure" ] - }, - { - "group": "Contributing to SDK", - "pages": ["contributing/sdk/developing"] } ] } From be30327dc9fb0f761f56051fd7e96d7dd6ac687f Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Fri, 29 Aug 2025 15:50:53 +0200 Subject: [PATCH 19/40] moved terraform docs --- docs/docs.json | 2 +- docs/integrations/frameworks/terraform.mdx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/docs.json b/docs/docs.json index 2a4e780a8..336828000 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -2560,7 +2560,7 @@ }, { "label": "Terraform", - "href": "https://infisical.com/docs/integrations/frameworks/terraform" + "href": "https://registry.terraform.io/providers/Infisical/infisical/latest/docs" }, { "label": "Ansible", diff --git a/docs/integrations/frameworks/terraform.mdx b/docs/integrations/frameworks/terraform.mdx index 898a77b00..313132d0b 100644 --- a/docs/integrations/frameworks/terraform.mdx +++ b/docs/integrations/frameworks/terraform.mdx @@ -1,8 +1,9 @@ --- title: "Terraform" description: "Learn how to fetch secrets from Infisical with Terraform using both traditional data sources and ephemeral resources" +url: "https://registry.terraform.io/providers/Infisical/infisical/latest/docs" --- - +{/* This guide demonstrates how to use Infisical to manage secrets in your Terraform infrastructure code, supporting both traditional data sources and ephemeral resources for enhanced security. It uses: - Infisical (you can use [Infisical Cloud](https://app.infisical.com) or a [self-hosted instance of Infisical](https://infisical.com/docs/self-hosting/overview)) to store your secrets @@ -234,4 +235,4 @@ For detailed instructions on setting up OIDC authentication with GitHub Actions, See also: - [Machine Identity setup guide](/documentation/platform/identities/machine-identities) - [Terraform Provider Registry](https://registry.terraform.io/providers/Infisical/infisical/latest/docs) -- [GitOps Best Practices](https://www.infisical.com/blog/gitops-best-practices) +- [GitOps Best Practices](https://www.infisical.com/blog/gitops-best-practices) */} From e051cfd14627daa270524f6db8a2a67f982028e0 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Fri, 29 Aug 2025 15:59:57 +0200 Subject: [PATCH 20/40] update terraform references --- docs/changelog/overview.mdx | 10 +- .../concepts/secrets-delivery.mdx | 4 +- docs/integrations/frameworks/pulumi.mdx | 2 +- docs/integrations/overview.mdx | 104 +++++++++--------- 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/docs/changelog/overview.mdx b/docs/changelog/overview.mdx index 11a058019..7d8282727 100644 --- a/docs/changelog/overview.mdx +++ b/docs/changelog/overview.mdx @@ -26,7 +26,7 @@ The changelog below reflects new product developments and updates on a monthly b - Revamped UI for Access Controls, Access Tree, Policies, and Approval Workflows. - Released [TLS Certificate Authentication method](https://infisical.com/docs/documentation/platform/identities/tls-cert-auth). - Added ability to copy session tokens in the Infisical Dashboard. -- Expanded resource support for [Infisical Terraform Provider](https://infisical.com/docs/integrations/frameworks/terraform). +- Expanded resource support for [Infisical Terraform Provider](https://registry.terraform.io/providers/Infisical/infisical/latest/docs). ## May 2025 @@ -62,7 +62,7 @@ The changelog below reflects new product developments and updates on a monthly b ## March 2025 - Released [Infisical Gateway](https://infisical.com/docs/documentation/platform/gateways/overview) for secure access to private resources without needing direct inbound connections to private networks. -- Enhanced [Terraform](https://infisical.com/docs/integrations/frameworks/terraform#terraform) capabilities with token authentication, ability to import existing Infisical secrets as resources, and support for project templates. +- Enhanced [Terraform](https://registry.terraform.io/providers/Infisical/infisical/latest/docs) capabilities with token authentication, ability to import existing Infisical secrets as resources, and support for project templates. - Self-hosted improvements: Usage and billing visibility for enabled features, ability to delete users, and support for multiple super admins. - UI and UX updates: Improved secret import interface on the overview page, password reset without backup PDF. - CLI enhancements: Various improvements including multiline secret support and ability to pass headers. @@ -93,7 +93,7 @@ The changelog below reflects new product developments and updates on a monthly b - Added support for OIDC group mapping in [Keycloak](https://infisical.com/docs/documentation/platform/sso/keycloak-oidc/overview), enabling automatic mapping of Keycloak groups to Infisical for role-based access control. - Enhanced [Kubernetes operator](https://infisical.com/docs/integrations/platforms/kubernetes/overview#kubernetes-operator) with namespaced group support, bi-directional secret sync (push to Infisical), [dynamic secrets](https://infisical.com/docs/documentation/platform/dynamic-secrets/overview#dynamic-secrets) capabilities, and support for multiple operator instances. - Restructured navigation with dedicated sections for Secrets Management, [Certificate Management (PKI)](https://infisical.com/docs/documentation/platform/pki/overview), [Key Management (KMS)](https://infisical.com/docs/documentation/platform/kms/overview#key-management-service-kms), and [SSH Key Management](https://infisical.com/docs/documentation/platform/ssh). -- Added [ephemeral Terraform resource](https://infisical.com/docs/integrations/frameworks/terraform#terraform-provider) support and improved secret sync architecture. +- Added [ephemeral Terraform resource](https://registry.terraform.io/providers/Infisical/infisical/latest/docs) support and improved secret sync architecture. - Released [.NET provider](https://github.com/Infisical/infisical-dotnet-configuration) with first-party Azure authentication support and Azure CLI integration. - Implemented secret Access Visibility allowing users to view all entities with access to specific secrets in the secret side panel. - Added secret filtering by metadata and SSH assigned certificates (Version 1). @@ -212,7 +212,7 @@ The changelog below reflects new product developments and updates on a monthly b - Completed Postgres migration initiative with restructed Fastify-based backend. - Reduced size of Infisical Node.js SDK by ≈90%. - Added secret fallback support to all SDK's. -- Added Machine Identity support to [Terraform Provider](https://github.com/Infisical/terraform-provider-infisical). +- Added Machine Identity support to [Terraform Provider](https://registry.terraform.io/providers/Infisical/infisical/latest/docs). - Released [.NET SDK](https://infisical.com/docs/sdks/languages/csharp). - Added symmetric encryption support to all SDK's. - Fixed secret reminders bug, where reminders were not being updated correctly. @@ -276,7 +276,7 @@ The changelog below reflects new product developments and updates on a monthly b ## June 2023 -- Released the [Terraform Provider](https://infisical.com/docs/integrations/frameworks/terraform#5-run-terraform). +- Released the [Terraform Provider](https://registry.terraform.io/providers/Infisical/infisical/latest/docs). - Updated the usage and billing page. Added the free trial for the professional tier. - Added native integrations with [Checkly](https://infisical.com/docs/integrations/cloud/checkly), [Hashicorp Vault](https://infisical.com/docs/integrations/cloud/hashicorp-vault), and [Cloudflare Pages](https://infisical.com/docs/integrations/cloud/cloudflare-pages). - Completed a penetration test with a `very good` result. diff --git a/docs/documentation/platform/secrets-mgmt/concepts/secrets-delivery.mdx b/docs/documentation/platform/secrets-mgmt/concepts/secrets-delivery.mdx index 7ad11948c..df3885055 100644 --- a/docs/documentation/platform/secrets-mgmt/concepts/secrets-delivery.mdx +++ b/docs/documentation/platform/secrets-mgmt/concepts/secrets-delivery.mdx @@ -22,7 +22,7 @@ The table below provides a quick overview of which delivery method may be suitab | Kubernetes (file-based, with rotation) | [Kubernetes CSI Provider](/integrations/platforms/kubernetes-csi) | Mounted files | Uses CSI driver to mount secrets as files with automatic rotation | | Image builds (VMs or containers) | [Packer Plugin](/integrations/frameworks/packer) | Env vars or files | Inject secrets at image build time | | Ansible automation | [Ansible Collection](/integrations/platforms/ansible) | Variables | Runtime secret fetching in playbooks using lookup plugin | -| Terraform / Pulumi | [Terraform Provider](/integrations/frameworks/terraform), [Pulumi](/integrations/frameworks/pulumi) | Inputs / ephemeral resources | Use ephemeral for security; avoids storing secrets in state | +| Terraform / Pulumi | [Terraform Provider](https://registry.terraform.io/providers/Infisical/infisical/latest/docs), [Pulumi](/integrations/frameworks/pulumi) | Inputs / ephemeral resources | Use ephemeral for security; avoids storing secrets in state | | Third-party platforms (GitHub, AWS, etc.) | [Secret Syncs](/integrations/secret-syncs/overview) | Preloaded secrets | Push secrets to platforms that can't fetch directly from Infisical | From here, you can explore the delivery method that best matches your environment: @@ -90,7 +90,7 @@ This is useful when external systems require secrets to be available ahead of ti Infisical integrates with common IaC and automation tools to help you securely inject secrets into your infrastructure provisioning workflows: -- [Terraform](/integrations/frameworks/terraform): Use the official Infisical Terraform provider to fetch secrets either as ephemeral resources (never written to state files) or as traditional data sources. Ideal for managing cloud infrastructure while keeping secrets secure and version-safe. +- [Terraform](https://registry.terraform.io/providers/Infisical/infisical/latest/docs): Use the official Infisical Terraform provider to fetch secrets either as ephemeral resources (never written to state files) or as traditional data sources. Ideal for managing cloud infrastructure while keeping secrets secure and version-safe. - [Pulumi](/integrations/frameworks/pulumi): Integrate Infisical into Pulumi projects using the Terraform Bridge, allowing you to fetch and manage secrets in TypeScript, Go, Python, or C# — without changing your existing workflows. - [Ansible](/integrations/platforms/ansible): Retrieve secrets from Infisical at runtime using the official Ansible Collection and lookup plugin. Works well for dynamic configuration during playbook execution. - [Packer](/integrations/frameworks/packer): Inject secrets into VM or container images at build time using the Infisical Packer Plugin — useful for provisioning base images that require secure configuration values. diff --git a/docs/integrations/frameworks/pulumi.mdx b/docs/integrations/frameworks/pulumi.mdx index 11a8e0cb7..c2dbdb103 100644 --- a/docs/integrations/frameworks/pulumi.mdx +++ b/docs/integrations/frameworks/pulumi.mdx @@ -7,7 +7,7 @@ Infisical can be integrated with Pulumi by leveraging Pulumi’s [Terraform Brid which allows Terraform providers to be used seamlessly within Pulumi projects. This enables infrastructure and platform teams to manage Infisical secrets and resources using Pulumi’s familiar programming languages (including TypeScript, Python, Go, and C#), without any change to existing workflows. -The Terraform Bridge wraps the [Infisical Terraform provider](/integrations/frameworks/terraform) and exposes its resources (such as `infisical_secret`, `infisical_project`, and `infisical_service_token`) +The Terraform Bridge wraps the [Infisical Terraform provider](https://registry.terraform.io/providers/Infisical/infisical/latest/docs) and exposes its resources (such as `infisical_secret`, `infisical_project`, and `infisical_service_token`) in a Pulumi-compatible interface. This makes it easy to integrate secret management directly into Pulumi-based IaC pipelines, ensuring secrets stay in sync with the rest of your cloud infrastructure. Authentication is handled through the same methods as Terraform: using environment variables such as `INFISICAL_TOKEN` and `INFISICAL_SITE_URL`. diff --git a/docs/integrations/overview.mdx b/docs/integrations/overview.mdx index 5dc06daed..ed7d47b30 100644 --- a/docs/integrations/overview.mdx +++ b/docs/integrations/overview.mdx @@ -7,55 +7,55 @@ Integrations allow environment variables to be synced from Infisical into your l Missing an integration? [Throw in a request](https://github.com/Infisical/infisical/issues). -| Integration | Type | Status | -| -------------------------------------------------------------- | ---------------------- | ----------- | -| [Docker](/integrations/platforms/docker) | Platform | Available | -| [Docker-Compose](/integrations/platforms/docker-compose) | Platform | Available | -| [Kubernetes](/integrations/platforms/kubernetes) | Platform | Available | -| [Terraform](/integrations/frameworks/terraform) | Infrastructure as code | Available | -| [PM2](/integrations/platforms/pm2) | Platform | Available | -| [Heroku](/integrations/cloud/heroku) | Cloud | Available | -| [Vercel](/integrations/cloud/vercel) | Cloud | Available | -| [Netlify](/integrations/cloud/netlify) | Cloud | Available | -| [Render](/integrations/cloud/render) | Cloud | Available | -| [Laravel Forge](/integrations/cloud/laravel-forge) | Cloud | Available | -| [Railway](/integrations/cloud/railway) | Cloud | Available | -| [Terraform Cloud](/integrations/cloud/terraform-cloud) | Cloud | Available | -| [TeamCity](/integrations/cloud/teamcity) | Cloud | Available | -| [Fly.io](/integrations/cloud/flyio) | Cloud | Available | -| [Supabase](/integrations/cloud/supabase) | Cloud | Available | -| [Northflank](/integrations/cloud/northflank) | Cloud | Available | -| [Cloudflare Pages](/integrations/cloud/cloudflare-pages) | Cloud | Available | -| [Cloudflare Workers](/integrations/cloud/cloudflare-workers) | Cloud | Available | -| [Checkly](/integrations/cloud/checkly) | Cloud | Available | -| [Qovery](/integrations/cloud/qovery) | Cloud | Available | -| [HashiCorp Vault](/integrations/cloud/hashicorp-vault) | Cloud | Available | -| [AWS Parameter Store](/integrations/cloud/aws-parameter-store) | Cloud | Available | -| [AWS Secrets Manager](/integrations/cloud/aws-secret-manager) | Cloud | Available | -| [Azure Key Vault](/integrations/cloud/azure-key-vault) | Cloud | Available | -| [GCP Secret Manager](/integrations/cloud/gcp-secret-manager) | Cloud | Available | -| [Windmill](/integrations/cloud/windmill) | Cloud | Available | -| [Bitbucket](/integrations/cicd/bitbucket) | CI/CD | Available | -| [Codefresh](/integrations/cicd/codefresh) | CI/CD | Available | -| [GitHub Actions](/integrations/cicd/githubactions) | CI/CD | Available | -| [GitLab](/integrations/cicd/gitlab) | CI/CD | Available | -| [CircleCI](/integrations/cicd/circleci) | CI/CD | Available | -| [Travis CI](/integrations/cicd/travisci) | CI/CD | Available | -| [Rundeck](/integrations/cicd/rundeck) | CI/CD | Available | -| [Octopus Deploy](/integrations/cicd/octopus-deploy) | CI/CD | Available | -| [React](/integrations/frameworks/react) | Framework | Available | -| [Vue](/integrations/frameworks/vue) | Framework | Available | -| [Express](/integrations/frameworks/express) | Framework | Available | -| [Next.js](/integrations/frameworks/nextjs) | Framework | Available | -| [NestJS](/integrations/frameworks/nestjs) | Framework | Available | -| [SvelteKit](/integrations/frameworks/sveltekit) | Framework | Available | -| [Nuxt](/integrations/frameworks/nuxt) | Framework | Available | -| [Gatsby](/integrations/frameworks/gatsby) | Framework | Available | -| [Remix](/integrations/frameworks/remix) | Framework | Available | -| [Vite](/integrations/frameworks/vite) | Framework | Available | -| [Fiber](/integrations/frameworks/fiber) | Framework | Available | -| [Django](/integrations/frameworks/django) | Framework | Available | -| [Flask](/integrations/frameworks/flask) | Framework | Available | -| [Laravel](/integrations/frameworks/laravel) | Framework | Available | -| [Ruby on Rails](/integrations/frameworks/rails) | Framework | Available | -| Jenkins | CI/CD | Available | +| Integration | Type | Status | +| ------------------------------------------------------------------------------------- | ---------------------- | ---------------------------------- | +| [Docker](/integrations/platforms/docker) | Platform | Available | +| [Docker-Compose](/integrations/platforms/docker-compose) | Platform | Available | +| [Kubernetes](/integrations/platforms/kubernetes) | Platform | Available | +| [Terraform](https://registry.terraform.io/providers/Infisical/infisical/latest/docs) | Infrastructure as code | Available | +| [PM2](/integrations/platforms/pm2) | Platform | Available | +| [Heroku](/integrations/cloud/heroku) | Cloud | Available | +| [Vercel](/integrations/cloud/vercel) | Cloud | Available | +| [Netlify](/integrations/cloud/netlify) | Cloud | Available | +| [Render](/integrations/cloud/render) | Cloud | Available | +| [Laravel Forge](/integrations/cloud/laravel-forge) | Cloud | Available | +| [Railway](/integrations/cloud/railway) | Cloud | Available | +| [Terraform Cloud](/integrations/cloud/terraform-cloud) | Cloud | Available | +| [TeamCity](/integrations/cloud/teamcity) | Cloud | Available | +| [Fly.io](/integrations/cloud/flyio) | Cloud | Available | +| [Supabase](/integrations/cloud/supabase) | Cloud | Available | +| [Northflank](/integrations/cloud/northflank) | Cloud | Available | +| [Cloudflare Pages](/integrations/cloud/cloudflare-pages) | Cloud | Available | +| [Cloudflare Workers](/integrations/cloud/cloudflare-workers) | Cloud | Available | +| [Checkly](/integrations/cloud/checkly) | Cloud | Available | +| [Qovery](/integrations/cloud/qovery) | Cloud | Available | +| [HashiCorp Vault](/integrations/cloud/hashicorp-vault) | Cloud | Available | +| [AWS Parameter Store](/integrations/cloud/aws-parameter-store) | Cloud | Available | +| [AWS Secrets Manager](/integrations/cloud/aws-secret-manager) | Cloud | Available | +| [Azure Key Vault](/integrations/cloud/azure-key-vault) | Cloud | Available | +| [GCP Secret Manager](/integrations/cloud/gcp-secret-manager) | Cloud | Available | +| [Windmill](/integrations/cloud/windmill) | Cloud | Available | +| [Bitbucket](/integrations/cicd/bitbucket) | CI/CD | Available | +| [Codefresh](/integrations/cicd/codefresh) | CI/CD | Available | +| [GitHub Actions](/integrations/cicd/githubactions) | CI/CD | Available | +| [GitLab](/integrations/cicd/gitlab) | CI/CD | Available | +| [CircleCI](/integrations/cicd/circleci) | CI/CD | Available | +| [Travis CI](/integrations/cicd/travisci) | CI/CD | Available | +| [Rundeck](/integrations/cicd/rundeck) | CI/CD | Available | +| [Octopus Deploy](/integrations/cicd/octopus-deploy) | CI/CD | Available | +| [React](/integrations/frameworks/react) | Framework | Available | +| [Vue](/integrations/frameworks/vue) | Framework | Available | +| [Express](/integrations/frameworks/express) | Framework | Available | +| [Next.js](/integrations/frameworks/nextjs) | Framework | Available | +| [NestJS](/integrations/frameworks/nestjs) | Framework | Available | +| [SvelteKit](/integrations/frameworks/sveltekit) | Framework | Available | +| [Nuxt](/integrations/frameworks/nuxt) | Framework | Available | +| [Gatsby](/integrations/frameworks/gatsby) | Framework | Available | +| [Remix](/integrations/frameworks/remix) | Framework | Available | +| [Vite](/integrations/frameworks/vite) | Framework | Available | +| [Fiber](/integrations/frameworks/fiber) | Framework | Available | +| [Django](/integrations/frameworks/django) | Framework | Available | +| [Flask](/integrations/frameworks/flask) | Framework | Available | +| [Laravel](/integrations/frameworks/laravel) | Framework | Available | +| [Ruby on Rails](/integrations/frameworks/rails) | Framework | Available | +| Jenkins | CI/CD | Available | From cf64c89ea3f17862f19a3c163bbd020c50d0dae4 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 29 Aug 2025 10:46:59 -0700 Subject: [PATCH 21/40] fix: add folder exists check to dashboard router endpoint --- .../src/server/routes/v1/dashboard-router.ts | 3 +++ .../secret-folder/secret-folder-service.ts | 27 +++++++++++++++++++ .../secret-folder/secret-folder-types.ts | 6 +++++ 3 files changed, 36 insertions(+) diff --git a/backend/src/server/routes/v1/dashboard-router.ts b/backend/src/server/routes/v1/dashboard-router.ts index 48d536c14..a54bd5ccf 100644 --- a/backend/src/server/routes/v1/dashboard-router.ts +++ b/backend/src/server/routes/v1/dashboard-router.ts @@ -703,6 +703,9 @@ export const registerDashboardRouter = async (server: FastifyZodProvider) => { // prevent older projects from accessing endpoint if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + // verify folder exists and user has project permission + await server.services.folder.getFolderByPath({ projectId, environment, secretPath }, req.permission); + const tags = req.query.tags?.split(",") ?? []; let remainingLimit = limit; diff --git a/backend/src/services/secret-folder/secret-folder-service.ts b/backend/src/services/secret-folder/secret-folder-service.ts index 90cc25710..c5eb0adde 100644 --- a/backend/src/services/secret-folder/secret-folder-service.ts +++ b/backend/src/services/secret-folder/secret-folder-service.ts @@ -30,6 +30,7 @@ import { TDeleteFolderDTO, TDeleteManyFoldersDTO, TGetFolderByIdDTO, + TGetFolderByPathDTO, TGetFolderDTO, TGetFoldersDeepByEnvsDTO, TUpdateFolderDTO, @@ -1398,6 +1399,31 @@ export const secretFolderServiceFactory = ({ }; }; + const getFolderByPath = async ( + { projectId, environment, secretPath }: TGetFolderByPathDTO, + actor: OrgServiceActor + ) => { + // folder check is allowed to be read by anyone + // permission is to check if user has access + await permissionService.getProjectPermission({ + actor: actor.type, + actorId: actor.id, + projectId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + actionProjectType: ActionProjectType.SecretManager + }); + + const folder = await folderDAL.findBySecretPath(projectId, environment, secretPath); + + if (!folder) + throw new NotFoundError({ + message: `Could not find folder with path "${secretPath}" in environment "${environment}" for project with ID "${projectId}"` + }); + + return folder; + }; + return { createFolder, updateFolder, @@ -1405,6 +1431,7 @@ export const secretFolderServiceFactory = ({ deleteFolder, getFolders, getFolderById, + getFolderByPath, getProjectFolderCount, getFoldersMultiEnv, getFoldersDeepByEnvs, diff --git a/backend/src/services/secret-folder/secret-folder-types.ts b/backend/src/services/secret-folder/secret-folder-types.ts index ae8e2c5dc..eed815da5 100644 --- a/backend/src/services/secret-folder/secret-folder-types.ts +++ b/backend/src/services/secret-folder/secret-folder-types.ts @@ -91,3 +91,9 @@ export type TDeleteManyFoldersDTO = { idOrName: string; }>; }; + +export type TGetFolderByPathDTO = { + projectId: string; + environment: string; + secretPath: string; +}; From 0f76003f77444358956d6f4f403328f838209ad1 Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 15:23:41 -0400 Subject: [PATCH 22/40] UX Tweaks --- .../IdentityUniversalAuthForm.tsx | 2 +- .../ViewIdentityUniversalAuthContent.tsx | 57 +++++++++++-------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx index 3fb7a3acc..2489be7be 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityUniversalAuthForm.tsx @@ -453,7 +453,7 @@ export const IdentityUniversalAuthForm = ({ onCheckedChange={onChange} isChecked={value} > - Lockout {value ? "Enabled" : "Disabled"} + Lockout ); diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx index a9cb5a1d1..b05a873ce 100644 --- a/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx +++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/components/ViewIdentityAuthModal/ViewIdentityUniversalAuthContent.tsx @@ -115,34 +115,41 @@ export const ViewIdentityUniversalAuthContent = ({ {data.clientSecretTrustedIps.map((ip) => ip.ipAddress).join(", ")} -

- Lockout Options - - {(isAllowed) => ( - - )} - -
{data.lockoutEnabled ? "Enabled" : "Disabled"} - - {data.lockoutThreshold} - - - {ms(data.lockoutDurationSeconds * 1000, { long: true })} - - - {ms(data.lockoutCounterResetSeconds * 1000, { long: true })} - + {data.lockoutEnabled && ( + <> +
+ Lockout Options + + {(isAllowed) => ( + + )} + +
+ + {data.lockoutThreshold} + + + {ms(data.lockoutDurationSeconds * 1000, { long: true })} + + + {ms(data.lockoutCounterResetSeconds * 1000, { long: true })} + + + )}
Client ID From abb577e4e9481f8a18b5ce14f03a0ed7965671a2 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 29 Aug 2025 13:39:38 -0700 Subject: [PATCH 23/40] fix: prevent folder click on navigation from duplicating path addition --- .../SecretDashboardPage/SecretDashboardPage.tsx | 1 + .../components/FolderListView/FolderListView.tsx | 15 +++++---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx index 16986058e..d79a107db 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx @@ -963,6 +963,7 @@ const Page = () => { workspaceId={workspaceId} secretPath={secretPath} onNavigateToFolder={handleResetFilter} + canNavigate={isFetched} /> )} {canReadDynamicSecret && Boolean(dynamicSecrets?.length) && ( diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx index 9b8c9ccaa..852cc2ae9 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx @@ -1,12 +1,5 @@ import { subject } from "@casl/ability"; -import { - faClose, - faEdit, - faFolder, - faInfoCircle, - faPencilSquare, - faTrash -} from "@fortawesome/free-solid-svg-icons"; +import { faClose, faEdit, faFolder, faInfoCircle, faPencilSquare, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { twMerge } from "tailwind-merge"; @@ -36,6 +29,7 @@ type Props = { workspaceId: string; secretPath?: string; onNavigateToFolder: (path: string) => void; + canNavigate: boolean; }; export const FolderListView = ({ @@ -43,7 +37,8 @@ export const FolderListView = ({ environment, workspaceId, secretPath = "/", - onNavigateToFolder + onNavigateToFolder, + canNavigate }: Props) => { const { popUp, handlePopUpToggle, handlePopUpOpen, handlePopUpClose } = usePopUp([ "updateFolder", @@ -190,7 +185,7 @@ export const FolderListView = ({ }; const handleFolderClick = (name: string, isPending?: boolean) => { - if (isPending) { + if (isPending || !canNavigate) { return; } const path = `${secretPathQueryparam === "/" ? "" : secretPathQueryparam}/${name}`; From 1147cfcea429b442f8f8fda2e1efaf4d532d86f5 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 29 Aug 2025 13:49:08 -0700 Subject: [PATCH 24/40] chore: fix lint --- .../components/FolderListView/FolderListView.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx index 852cc2ae9..fd65bc639 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx @@ -1,5 +1,12 @@ import { subject } from "@casl/ability"; -import { faClose, faEdit, faFolder, faInfoCircle, faPencilSquare, faTrash } from "@fortawesome/free-solid-svg-icons"; +import { + faClose, + faEdit, + faFolder, + faInfoCircle, + faPencilSquare, + faTrash +} from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { twMerge } from "tailwind-merge"; From 5bd961735dba1739e585f45f2d1153348abd7165 Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 17:15:42 -0400 Subject: [PATCH 25/40] Update docs --- docs/documentation/platform/pki/acme-ca.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/pki/acme-ca.mdx b/docs/documentation/platform/pki/acme-ca.mdx index 189c1045a..bf130da9e 100644 --- a/docs/documentation/platform/pki/acme-ca.mdx +++ b/docs/documentation/platform/pki/acme-ca.mdx @@ -281,7 +281,7 @@ Let's Encrypt is a free, automated, and open Certificate Authority that provides ## Example: DigiCert Integration -DigiCert is a leading commercial Certificate Authority providing a wide range of trusted SSL/TLS certificates. Infisical can integrate with DigiCert's ACME service to automate the provisioning and management of these certificates. +DigiCert is a leading commercial Certificate Authority providing a wide range of trusted SSL/TLS certificates. Infisical can integrate with [DigiCert's ACME](https://docs.digicert.com/en/certcentral/certificate-tools/certificate-lifecycle-automation-guides/third-party-acme-integration/request-and-manage-certificates-with-acme.html) service to automate the provisioning and management of these certificates. - **Directory URL**: `https://acme.digicert.com/v2/acme/directory` - **External Account Binding (EAB)**: Required. You will need a Key Identifier (KID) and HMAC Key from your DigiCert account to register the ACME CA in Infisical. From c99a4b7cc8d18108ff5c6f4c4deea7f521919cbc Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Fri, 29 Aug 2025 23:27:12 +0200 Subject: [PATCH 26/40] feat(vault-migration): gateway support & kv v1 support --- backend/src/server/routes/index.ts | 3 +- .../routes/v3/external-migration-router.ts | 3 +- .../external-migration-fns/vault.ts | 266 +++++++++++++----- .../external-migration-service.ts | 24 +- .../external-migration-types.ts | 1 + .../src/hooks/api/migration/mutations.tsx | 7 +- .../components/VaultPlatformModal.tsx | 84 +++++- 7 files changed, 292 insertions(+), 96 deletions(-) diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 3c1038ded..3d79836e5 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1746,7 +1746,8 @@ export const registerRoutes = async ( const migrationService = externalMigrationServiceFactory({ externalMigrationQueue, userDAL, - permissionService + permissionService, + gatewayService }); const externalGroupOrgRoleMappingService = externalGroupOrgRoleMappingServiceFactory({ diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 4325692da..259a97ddb 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -66,7 +66,8 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider vaultAccessToken: z.string(), vaultNamespace: z.string().trim().optional(), vaultUrl: z.string(), - mappingType: z.nativeEnum(VaultMappingType) + mappingType: z.nativeEnum(VaultMappingType), + gatewayId: z.string().optional() }) }, onRequest: verifyAuth([AuthMode.JWT]), diff --git a/backend/src/services/external-migration/external-migration-fns/vault.ts b/backend/src/services/external-migration/external-migration-fns/vault.ts index 1ebd56a80..f5f57aa1b 100644 --- a/backend/src/services/external-migration/external-migration-fns/vault.ts +++ b/backend/src/services/external-migration/external-migration-fns/vault.ts @@ -1,12 +1,21 @@ +import https from "node:https"; + import axios, { AxiosInstance } from "axios"; import { v4 as uuidv4 } from "uuid"; +import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; import { BadRequestError } from "@app/lib/errors"; +import { GatewayProxyProtocol, withGatewayProxy } from "@app/lib/gateway"; import { logger } from "@app/lib/logger"; import { blockLocalAndPrivateIpAddresses } from "@app/lib/validator"; import { InfisicalImportData, VaultMappingType } from "../external-migration-types"; +enum KvVersion { + V1 = "1", + V2 = "2" +} + type VaultData = { namespace: string; mount: string; @@ -14,7 +23,42 @@ type VaultData = { secretData: Record; }; -const vaultFactory = () => { +const vaultFactory = (gatewayService: Pick) => { + const $gatewayProxyWrapper = async ( + inputs: { + gatewayId: string; + targetHost?: string; + targetPort?: number; + }, + gatewayCallback: (host: string, port: number, httpsAgent?: https.Agent) => Promise + ): Promise => { + const relayDetails = await gatewayService.fnGetGatewayClientTlsByGatewayId(inputs.gatewayId); + const [relayHost, relayPort] = relayDetails.relayAddress.split(":"); + + const callbackResult = await withGatewayProxy( + async (port, httpsAgent) => { + const res = await gatewayCallback("http://localhost", port, httpsAgent); + return res; + }, + { + protocol: GatewayProxyProtocol.Http, + targetHost: inputs.targetHost, + targetPort: inputs.targetPort, + relayHost, + relayPort: Number(relayPort), + identityId: relayDetails.identityId, + orgId: relayDetails.orgId, + tlsOptions: { + ca: relayDetails.certChain, + cert: relayDetails.certificate, + key: relayDetails.privateKey.toString() + } + } + ); + + return callbackResult; + }; + const getMounts = async (request: AxiosInstance) => { const response = await request .get<{ @@ -31,11 +75,24 @@ const vaultFactory = () => { const getPaths = async ( request: AxiosInstance, - { mountPath, secretPath = "" }: { mountPath: string; secretPath?: string } + { mountPath, secretPath = "" }: { mountPath: string; secretPath?: string }, + kvVersion: KvVersion ) => { try { - // For KV v2: /v1/{mount}/metadata/{path}?list=true - const path = secretPath ? `${mountPath}/metadata/${secretPath}` : `${mountPath}/metadata`; + if (kvVersion === KvVersion.V2) { + // For KV v2: /v1/{mount}/metadata/{path}?list=true + const path = secretPath ? `${mountPath}/metadata/${secretPath}` : `${mountPath}/metadata`; + const response = await request.get<{ + data: { + keys: string[]; + }; + }>(`/v1/${path}?list=true`); + + return response.data.data.keys; + } + + // kv version v1: /v1/{mount}?list=true + const path = secretPath ? `${mountPath}/${secretPath}` : mountPath; const response = await request.get<{ data: { keys: string[]; @@ -56,21 +113,42 @@ const vaultFactory = () => { const getSecrets = async ( request: AxiosInstance, - { mountPath, secretPath }: { mountPath: string; secretPath: string } + { mountPath, secretPath }: { mountPath: string; secretPath: string }, + kvVersion: KvVersion ) => { - // For KV v2: /v1/{mount}/data/{path} + if (kvVersion === KvVersion.V2) { + // For KV v2: /v1/{mount}/data/{path} + const response = await request + .get<{ + data: { + data: Record; // KV v2 has nested data structure + metadata: { + created_time: string; + deletion_time: string; + destroyed: boolean; + version: number; + }; + }; + }>(`/v1/${mountPath}/data/${secretPath}`) + .catch((err) => { + if (axios.isAxiosError(err)) { + logger.error(err.response?.data, "External migration: Failed to get Vault secret"); + } + throw err; + }); + + return response.data.data.data; + } + + // kv version v1 + const response = await request .get<{ - data: { - data: Record; // KV v2 has nested data structure - metadata: { - created_time: string; - deletion_time: string; - destroyed: boolean; - version: number; - }; - }; - }>(`/v1/${mountPath}/data/${secretPath}`) + data: Record; // KV v1 has flat data structure + lease_duration: number; + lease_id: string; + renewable: boolean; + }>(`/v1/${mountPath}/${secretPath}`) .catch((err) => { if (axios.isAxiosError(err)) { logger.error(err.response?.data, "External migration: Failed to get Vault secret"); @@ -78,7 +156,7 @@ const vaultFactory = () => { throw err; }); - return response.data.data.data; + return response.data.data; }; // helper function to check if a mount is KV v2 (will be useful if we add support for Vault KV v1) @@ -89,9 +167,10 @@ const vaultFactory = () => { const recursivelyGetAllPaths = async ( request: AxiosInstance, mountPath: string, + kvVersion: KvVersion, currentPath: string = "" ): Promise => { - const paths = await getPaths(request, { mountPath, secretPath: currentPath }); + const paths = await getPaths(request, { mountPath, secretPath: currentPath }, kvVersion); if (paths === null || paths.length === 0) { return []; @@ -105,7 +184,7 @@ const vaultFactory = () => { if (path.endsWith("/")) { // it's a folder so we recurse into it - const subSecrets = await recursivelyGetAllPaths(request, mountPath, fullItemPath); + const subSecrets = await recursivelyGetAllPaths(request, mountPath, kvVersion, fullItemPath); allSecrets.push(...subSecrets); } else { // it's a secret so we add it to our results @@ -119,60 +198,93 @@ const vaultFactory = () => { async function collectVaultData({ baseUrl, namespace, - accessToken + accessToken, + gatewayId }: { baseUrl: string; namespace?: string; accessToken: string; + gatewayId?: string; }): Promise { - const request = axios.create({ - baseURL: baseUrl, - headers: { - "X-Vault-Token": accessToken, - ...(namespace ? { "X-Vault-Namespace": namespace } : {}) + const getData = async (host: string, port?: number, httpsAgent?: https.Agent) => { + const allData: VaultData[] = []; + + const request = axios.create({ + baseURL: port ? `${host}:${port}` : host, + headers: { + "X-Vault-Token": accessToken, + ...(namespace ? { "X-Vault-Namespace": namespace } : {}) + }, + httpsAgent + }); + + // Get all mounts in this namespace + const mounts = await getMounts(request); + + for (const mount of Object.keys(mounts)) { + if (!mount.endsWith("/")) { + delete mounts[mount]; + } } - }); - const allData: VaultData[] = []; + for await (const [mountPath, mountInfo] of Object.entries(mounts)) { + // skip non-KV mounts + if (!mountInfo.type.startsWith("kv")) { + // eslint-disable-next-line no-continue + continue; + } - // Get all mounts in this namespace - const mounts = await getMounts(request); + const kvVersion = mountInfo.options?.version === "2" ? KvVersion.V2 : KvVersion.V1; - for (const mount of Object.keys(mounts)) { - if (!mount.endsWith("/")) { - delete mounts[mount]; + // get all paths in this mount + const paths = await recursivelyGetAllPaths(request, `${mountPath.replace(/\/$/, "")}`, kvVersion); + + const cleanMountPath = mountPath.replace(/\/$/, ""); + + for await (const secretPath of paths) { + // get the actual secret data + const secretData = await getSecrets( + request, + { + mountPath: cleanMountPath, + secretPath: secretPath.replace(`${cleanMountPath}/`, "") + }, + kvVersion + ); + + allData.push({ + namespace: namespace || "", + mount: mountPath.replace(/\/$/, ""), + path: secretPath.replace(`${cleanMountPath}/`, ""), + secretData + }); + } } + + return allData; + }; + + let data; + + if (gatewayId) { + const url = new URL(baseUrl); + + const { port, protocol, hostname } = url; + const cleanedProtocol = protocol.slice(0, -1); + + data = await $gatewayProxyWrapper( + { + gatewayId, + targetHost: `${cleanedProtocol}://${hostname}`, + targetPort: port ? Number(port) : 8200 // 8200, default port for Vault self-hosted/dedicated + }, + getData + ); + } else { + data = await getData(baseUrl); } - for await (const [mountPath, mountInfo] of Object.entries(mounts)) { - // skip non-KV mounts - if (!mountInfo.type.startsWith("kv")) { - // eslint-disable-next-line no-continue - continue; - } - - // get all paths in this mount - const paths = await recursivelyGetAllPaths(request, `${mountPath.replace(/\/$/, "")}`); - - const cleanMountPath = mountPath.replace(/\/$/, ""); - - for await (const secretPath of paths) { - // get the actual secret data - const secretData = await getSecrets(request, { - mountPath: cleanMountPath, - secretPath: secretPath.replace(`${cleanMountPath}/`, "") - }); - - allData.push({ - namespace: namespace || "", - mount: mountPath.replace(/\/$/, ""), - path: secretPath.replace(`${cleanMountPath}/`, ""), - secretData - }); - } - } - - return allData; + return data; } return { @@ -296,17 +408,22 @@ export const transformToInfisicalFormatNamespaceToProjects = ( }; }; -export const importVaultDataFn = async ({ - vaultAccessToken, - vaultNamespace, - vaultUrl, - mappingType -}: { - vaultAccessToken: string; - vaultNamespace?: string; - vaultUrl: string; - mappingType: VaultMappingType; -}) => { +export const importVaultDataFn = async ( + { + vaultAccessToken, + vaultNamespace, + vaultUrl, + mappingType, + gatewayId + }: { + vaultAccessToken: string; + vaultNamespace?: string; + vaultUrl: string; + mappingType: VaultMappingType; + gatewayId?: string; + }, + { gatewayService }: { gatewayService: Pick } +) => { await blockLocalAndPrivateIpAddresses(vaultUrl); if (mappingType === VaultMappingType.Namespace && !vaultNamespace) { @@ -315,12 +432,13 @@ export const importVaultDataFn = async ({ }); } - const vaultApi = vaultFactory(); + const vaultApi = vaultFactory(gatewayService); const vaultData = await vaultApi.collectVaultData({ accessToken: vaultAccessToken, baseUrl: vaultUrl, - namespace: vaultNamespace + namespace: vaultNamespace, + gatewayId }); const infisicalData = transformToInfisicalFormatNamespaceToProjects(vaultData, mappingType); diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 3bbb88f5b..f1047d0ee 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -1,4 +1,5 @@ import { OrgMembershipRole } from "@app/db/schemas"; +import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { crypto } from "@app/lib/crypto/cryptography"; import { BadRequestError, ForbiddenRequestError } from "@app/lib/errors"; @@ -12,6 +13,7 @@ type TExternalMigrationServiceFactoryDep = { permissionService: TPermissionServiceFactory; externalMigrationQueue: TExternalMigrationQueueFactory; userDAL: Pick; + gatewayService: Pick; }; export type TExternalMigrationServiceFactory = ReturnType; @@ -19,7 +21,8 @@ export type TExternalMigrationServiceFactory = ReturnType { const importEnvKeyData = async ({ decryptionKey, @@ -72,6 +75,7 @@ export const externalMigrationServiceFactory = ({ vaultNamespace, mappingType, vaultUrl, + gatewayId, actor, actorId, actorOrgId, @@ -91,12 +95,18 @@ export const externalMigrationServiceFactory = ({ const user = await userDAL.findById(actorId); - const vaultData = await importVaultDataFn({ - vaultAccessToken, - vaultNamespace, - vaultUrl, - mappingType - }); + const vaultData = await importVaultDataFn( + { + vaultAccessToken, + vaultNamespace, + vaultUrl, + mappingType, + gatewayId + }, + { + gatewayService + } + ); const stringifiedJson = JSON.stringify({ data: vaultData, diff --git a/backend/src/services/external-migration/external-migration-types.ts b/backend/src/services/external-migration/external-migration-types.ts index 7c0d4c9ea..ac8ff44e2 100644 --- a/backend/src/services/external-migration/external-migration-types.ts +++ b/backend/src/services/external-migration/external-migration-types.ts @@ -31,6 +31,7 @@ export type TImportVaultDataDTO = { vaultNamespace?: string; mappingType: VaultMappingType; vaultUrl: string; + gatewayId?: string; } & Omit; export type TImportInfisicalDataCreate = { diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 529d5c463..182797954 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -46,18 +46,21 @@ export const useImportVault = () => { vaultAccessToken, vaultNamespace, vaultUrl, - mappingType + mappingType, + gatewayId }: { vaultAccessToken: string; vaultNamespace?: string; vaultUrl: string; mappingType: string; + gatewayId?: string; }) => { await apiRequest.post("/api/v3/external-migration/vault/", { vaultAccessToken, vaultNamespace, vaultUrl, - mappingType + mappingType, + gatewayId }); } }); diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index 02ab5df1b..74abe7fb8 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -6,9 +6,16 @@ import { twMerge } from "tailwind-merge"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; -import { Button, FormControl, Input, Tooltip } from "@app/components/v2"; +import { Button, FormControl, Input, Select, SelectItem, Tooltip } from "@app/components/v2"; import { NoticeBannerV2 } from "@app/components/v2/NoticeBannerV2/NoticeBannerV2"; import { useImportVault } from "@app/hooks/api/migration/mutations"; +import { OrgPermissionCan } from "@app/components/permissions"; +import { + OrgGatewayPermissionActions, + OrgPermissionSubjects +} from "@app/context/OrgPermissionContext/types"; +import { useQuery } from "@tanstack/react-query"; +import { gatewaysQueryKeys } from "@app/hooks/api"; type Props = { id?: string; @@ -62,36 +69,32 @@ const MAPPING_TYPE_MENU_ITEMS = [ export const VaultPlatformModal = ({ onClose }: Props) => { const formSchema = z.object({ vaultUrl: z.string().min(1), + gatewayId: z.string().optional(), vaultNamespace: z.string().trim().optional(), vaultAccessToken: z.string().min(1), mappingType: z.nativeEnum(VaultMappingType).default(VaultMappingType.KeyVault) }); type TFormData = z.infer; + const { data: gateways, isPending: isGatewayLoading } = useQuery(gatewaysQueryKeys.list()); const { mutateAsync: importVault } = useImportVault(); const { control, handleSubmit, reset, - formState: { isLoading, isDirty, isSubmitting, isValid, errors } + formState: { isLoading, isDirty, isSubmitting, isValid } } = useForm({ resolver: zodResolver(formSchema) }); - console.log({ - isSubmitting, - isLoading, - isValid, - errors - }); - const onSubmit = async (data: TFormData) => { await importVault({ vaultAccessToken: data.vaultAccessToken, vaultNamespace: data.vaultNamespace, vaultUrl: data.vaultUrl, - mappingType: data.mappingType + mappingType: data.mappingType, + ...(data.gatewayId && { gatewayId: data.gatewayId }) }); createNotification({ title: "Import started", @@ -110,11 +113,70 @@ export const VaultPlatformModal = ({ onClose }: Props) => { The Vault migration currently supports importing static secrets from Vault Dedicated/Self-Hosted.
- Currently only KV Secret Engine V2 is supported for Vault migrations. + Currently only KV Secret Engine is supported for Vault migrations.

+
+ + {(isAllowed) => ( + ( + + +
+ +
+
+
+ )} + /> + )} +
+
+ Date: Fri, 29 Aug 2025 17:31:39 -0400 Subject: [PATCH 27/40] Fix modal render issue --- .../components/ExternalCaModal.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaModal.tsx b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaModal.tsx index c360047da..68757f549 100644 --- a/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaModal.tsx +++ b/frontend/src/pages/cert-manager/CertificateAuthoritiesPage/components/ExternalCaModal.tsx @@ -216,13 +216,10 @@ export const ExternalCaModal = ({ popUp, handlePopUpToggle }: Props) => { }); const availableConnections: TAvailableAppConnection[] = useMemo(() => { - if (caType === CaType.ACME) { - return [...(availableRoute53Connections || []), ...(availableCloudflareConnections || [])]; - } if (caType === CaType.AZURE_AD_CS) { return availableAzureConnections || []; } - return []; + return [...(availableRoute53Connections || []), ...(availableCloudflareConnections || [])]; }, [ caType, availableRoute53Connections, From 8d3be92d096da7d48512bfb6204bcd4e63df5915 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Fri, 29 Aug 2025 23:32:58 +0200 Subject: [PATCH 28/40] Update frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- .../ExternalMigrationsTab/components/VaultPlatformModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index 74abe7fb8..355f8fe9a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -155,7 +155,7 @@ export const VaultPlatformModal = ({ onClose }: Props) => { position="popper" > { onChange(undefined); }} From dc23abdb8623f81719b9f583d0262f37e94502b7 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Fri, 29 Aug 2025 18:36:22 -0300 Subject: [PATCH 29/40] Change view to read on org audit log label --- .../RolePermissionsSection/OrgPermissionAuditLogsRow.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx index d7d523b53..b86ae91d4 100644 --- a/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx +++ b/frontend/src/pages/organization/RoleByIDPage/components/RolePermissionsSection/OrgPermissionAuditLogsRow.tsx @@ -24,7 +24,7 @@ enum Permission { const PERMISSION_ACTIONS = [ { action: OrgPermissionAuditLogsActions.Read, - label: "View" + label: "Read" } ] as const; From 6bccb1e5eb8828baac4921a088d3b6f56b77ba7c Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Fri, 29 Aug 2025 23:57:36 +0200 Subject: [PATCH 30/40] Update vault.mdx --- docs/documentation/platform/external-migrations/vault.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/documentation/platform/external-migrations/vault.mdx b/docs/documentation/platform/external-migrations/vault.mdx index ef139e8e4..8254e104f 100644 --- a/docs/documentation/platform/external-migrations/vault.mdx +++ b/docs/documentation/platform/external-migrations/vault.mdx @@ -8,12 +8,12 @@ description: "Learn how to migrate secrets from Vault to Infisical." Migrating from Vault Self-Hosted or Dedicated Vault is a straight forward process with our inbuilt migration option. In order to migrate from Vault, you'll need to provide Infisical an access token to your Vault instance. -Currently the Vault migration only supports migrating secrets from the KV v2 secrets engine. If you're using a different secrets engine, please open an issue on our [GitHub repository](https://github.com/infisical/infisical/issues). +Currently the Vault migration only supports migrating secrets from the KV V2 and V1 secrets engine. If you're using a different secrets engine, please open an issue on our [GitHub repository](https://github.com/infisical/infisical/issues). ### Prerequisites -- A Vault instance with the KV v2 secrets engine enabled. +- A Vault instance with the KV secret engine enabled. - An access token to your Vault instance. From 533d9cea388706208b71bf8e7859f03dc8f58d5a Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 18:56:47 -0400 Subject: [PATCH 31/40] Include secretPath in "get secret by name" API response --- backend/src/server/routes/v3/secret-router.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/server/routes/v3/secret-router.ts b/backend/src/server/routes/v3/secret-router.ts index 55fc094b7..ce0d4f188 100644 --- a/backend/src/server/routes/v3/secret-router.ts +++ b/backend/src/server/routes/v3/secret-router.ts @@ -419,6 +419,7 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { 200: z.object({ secret: secretRawSchema.extend({ secretValueHidden: z.boolean(), + secretPath: z.string(), tags: SanitizedTagSchema.array().optional(), secretMetadata: ResourceMetadataSchema.optional() }) From 53618a4bd8ad72819f36ba7a27162336ced1d67b Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Sat, 30 Aug 2025 01:38:28 +0200 Subject: [PATCH 32/40] Update VaultPlatformModal.tsx --- .../ExternalMigrationsTab/components/VaultPlatformModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index 355f8fe9a..74abe7fb8 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -155,7 +155,7 @@ export const VaultPlatformModal = ({ onClose }: Props) => { position="popper" > { onChange(undefined); }} From b447ccd3f0cbf31cb6a9e6752e692257e2e01c8f Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 22:26:59 -0400 Subject: [PATCH 33/40] Disable lock --- backend/src/services/identity-ua/identity-ua-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/identity-ua/identity-ua-service.ts b/backend/src/services/identity-ua/identity-ua-service.ts index 3aeb5e83c..27026a925 100644 --- a/backend/src/services/identity-ua/identity-ua-service.ts +++ b/backend/src/services/identity-ua/identity-ua-service.ts @@ -82,7 +82,7 @@ export const identityUaServiceFactory = ({ } const identityTx = await identityUaDAL.transaction(async (tx) => { - await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.IdentityLogin(identityUa.identityId, clientId)]); + // await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.IdentityLogin(identityUa.identityId, clientId)]); // Lockout Check const lockoutRaw = await keyStore.getItem(LOCKOUT_KEY); From a1b53855bbe535e607b25ccb31f1d0eee17e0ee8 Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 29 Aug 2025 22:33:45 -0400 Subject: [PATCH 34/40] Fix lint --- backend/src/services/identity-ua/identity-ua-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/identity-ua/identity-ua-service.ts b/backend/src/services/identity-ua/identity-ua-service.ts index 27026a925..14919f87d 100644 --- a/backend/src/services/identity-ua/identity-ua-service.ts +++ b/backend/src/services/identity-ua/identity-ua-service.ts @@ -8,7 +8,7 @@ import { validatePrivilegeChangeOperation } from "@app/ee/services/permission/permission-fns"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; -import { PgSqlLock, TKeyStoreFactory } from "@app/keystore/keystore"; +import { TKeyStoreFactory } from "@app/keystore/keystore"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; import { BadRequestError, NotFoundError, PermissionBoundaryError, UnauthorizedError } from "@app/lib/errors"; From 3fa615451709f023bf25246f7ab0e73c7eb47ced Mon Sep 17 00:00:00 2001 From: = Date: Sat, 30 Aug 2025 20:39:37 +0530 Subject: [PATCH 35/40] feat: reverted lockout in login completely --- .../identity-ua/identity-ua-service.ts | 183 +++++++----------- 1 file changed, 70 insertions(+), 113 deletions(-) diff --git a/backend/src/services/identity-ua/identity-ua-service.ts b/backend/src/services/identity-ua/identity-ua-service.ts index 14919f87d..307628039 100644 --- a/backend/src/services/identity-ua/identity-ua-service.ts +++ b/backend/src/services/identity-ua/identity-ua-service.ts @@ -45,10 +45,10 @@ type TIdentityUaServiceFactoryDep = { export type TIdentityUaServiceFactory = ReturnType; -type LockoutObject = { - lockedOut: boolean; - failedAttempts: number; -}; +// type LockoutObject = { +// lockedOut: boolean; +// failedAttempts: number; +// }; export const identityUaServiceFactory = ({ identityUaDAL, @@ -62,8 +62,15 @@ export const identityUaServiceFactory = ({ const login = async (clientId: string, clientSecret: string, ip: string) => { const identityUa = await identityUaDAL.findOne({ clientId }); if (!identityUa) { - throw new UnauthorizedError({ - message: "Invalid credentials" + throw new NotFoundError({ + message: "No identity with specified client ID was found" + }); + } + + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityUa.identityId }); + if (!identityMembershipOrg) { + throw new NotFoundError({ + message: "No identity with the org membership was found" }); } @@ -71,119 +78,69 @@ export const identityUaServiceFactory = ({ ipAddress: ip, trustedIps: identityUa.clientSecretTrustedIps as TIp[] }); + const clientSecretPrefix = clientSecret.slice(0, 4); + const clientSecrtInfo = await identityUaClientSecretDAL.find({ + identityUAId: identityUa.id, + isClientSecretRevoked: false, + clientSecretPrefix + }); - const LOCKOUT_KEY = `lockout:identity:${identityUa.identityId}:${IdentityAuthMethod.UNIVERSAL_AUTH}:${clientId}`; + let validClientSecretInfo: (typeof clientSecrtInfo)[0] | null = null; + for await (const info of clientSecrtInfo) { + const isMatch = await crypto.hashing().compareHash(clientSecret, info.clientSecretHash); - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityUa.identityId }); - if (!identityMembershipOrg) { - throw new UnauthorizedError({ - message: "Invalid credentials" - }); + if (isMatch) { + validClientSecretInfo = info; + break; + } } - const identityTx = await identityUaDAL.transaction(async (tx) => { - // await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.IdentityLogin(identityUa.identityId, clientId)]); + if (!validClientSecretInfo) throw new UnauthorizedError({ message: "Invalid credentials" }); - // Lockout Check - const lockoutRaw = await keyStore.getItem(LOCKOUT_KEY); + const { clientSecretTTL, clientSecretNumUses, clientSecretNumUsesLimit } = validClientSecretInfo; + if (Number(clientSecretTTL) > 0) { + const clientSecretCreated = new Date(validClientSecretInfo.createdAt); + const ttlInMilliseconds = Number(clientSecretTTL) * 1000; + const currentDate = new Date(); + const expirationTime = new Date(clientSecretCreated.getTime() + ttlInMilliseconds); - let lockout: LockoutObject | undefined; - if (lockoutRaw) { - lockout = JSON.parse(lockoutRaw) as LockoutObject; - } - - if (lockout && lockout.lockedOut) { - throw new UnauthorizedError({ - message: "This identity auth method is temporarily locked, please try again later" - }); - } - - const clientSecretPrefix = clientSecret.slice(0, 4); - const clientSecretInfo = await identityUaClientSecretDAL.find({ - identityUAId: identityUa.id, - isClientSecretRevoked: false, - clientSecretPrefix - }); - - let validClientSecretInfo: (typeof clientSecretInfo)[0] | null = null; - for await (const info of clientSecretInfo) { - const isMatch = await crypto.hashing().compareHash(clientSecret, info.clientSecretHash); - - if (isMatch) { - validClientSecretInfo = info; - break; - } - } - - if (!validClientSecretInfo) { - if (identityUa.lockoutEnabled) { - if (!lockout) { - lockout = { - lockedOut: false, - failedAttempts: 0 - }; - } - - lockout.failedAttempts += 1; - if (lockout.failedAttempts >= identityUa.lockoutThreshold) { - lockout.lockedOut = true; - } - - await keyStore.setItemWithExpiry( - LOCKOUT_KEY, - lockout.lockedOut ? identityUa.lockoutDurationSeconds : identityUa.lockoutCounterResetSeconds, - JSON.stringify(lockout) - ); - } - - throw new UnauthorizedError({ message: "Invalid credentials" }); - } else if (lockout) { - await keyStore.deleteItem(LOCKOUT_KEY); - } - - const { clientSecretTTL, clientSecretNumUses, clientSecretNumUsesLimit } = validClientSecretInfo; - if (Number(clientSecretTTL) > 0) { - const clientSecretCreated = new Date(validClientSecretInfo.createdAt); - const ttlInMilliseconds = Number(clientSecretTTL) * 1000; - const currentDate = new Date(); - const expirationTime = new Date(clientSecretCreated.getTime() + ttlInMilliseconds); - - if (currentDate > expirationTime) { - await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { - isClientSecretRevoked: true - }); - - throw new UnauthorizedError({ - message: "Access denied due to expired client secret" - }); - } - } - - if (clientSecretNumUsesLimit > 0 && clientSecretNumUses === clientSecretNumUsesLimit) { - // number of times client secret can be used for - // a login operation reached + if (currentDate > expirationTime) { await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { isClientSecretRevoked: true }); + throw new UnauthorizedError({ - message: "Access denied due to client secret usage limit reached" + message: "Access denied due to expired client secret" }); } + } - const accessTokenTTLParams = - Number(identityUa.accessTokenPeriod) === 0 - ? { - accessTokenTTL: identityUa.accessTokenTTL, - accessTokenMaxTTL: identityUa.accessTokenMaxTTL - } - : { - accessTokenTTL: identityUa.accessTokenPeriod, - // We set a very large Max TTL for periodic tokens to ensure that clients (even outdated ones) can always renew their token - // without them having to update their SDKs, CLIs, etc. This workaround sets it to 30 years to emulate "forever" - accessTokenMaxTTL: 1000000000 - }; + if (clientSecretNumUsesLimit > 0 && clientSecretNumUses === clientSecretNumUsesLimit) { + // number of times client secret can be used for + // a login operation reached + await identityUaClientSecretDAL.updateById(validClientSecretInfo.id, { + isClientSecretRevoked: true + }); + throw new UnauthorizedError({ + message: "Access denied due to client secret usage limit reached" + }); + } - const uaClientSecretDoc = await identityUaClientSecretDAL.incrementUsage(validClientSecretInfo.id, tx); + const accessTokenTTLParams = + Number(identityUa.accessTokenPeriod) === 0 + ? { + accessTokenTTL: identityUa.accessTokenTTL, + accessTokenMaxTTL: identityUa.accessTokenMaxTTL + } + : { + accessTokenTTL: identityUa.accessTokenPeriod, + // We set a very large Max TTL for periodic tokens to ensure that clients (even outdated ones) can always renew their token + // without them having to update their SDKs, CLIs, etc. This workaround sets it to 30 years to emulate "forever" + accessTokenMaxTTL: 1000000000 + }; + + const identityAccessToken = await identityUaDAL.transaction(async (tx) => { + const uaClientSecretDoc = await identityUaClientSecretDAL.incrementUsage(validClientSecretInfo!.id, tx); await identityOrgMembershipDAL.updateById( identityMembershipOrg.id, { @@ -206,33 +163,33 @@ export const identityUaServiceFactory = ({ tx ); - return { newToken, validClientSecretInfo, accessTokenTTLParams }; + return newToken; }); const appCfg = getConfig(); const accessToken = crypto.jwt().sign( { identityId: identityUa.identityId, - clientSecretId: identityTx.validClientSecretInfo.id, - identityAccessTokenId: identityTx.newToken.id, + clientSecretId: validClientSecretInfo.id, + identityAccessTokenId: identityAccessToken.id, authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN } as TIdentityAccessTokenJwtPayload, appCfg.AUTH_SECRET, // akhilmhdh: for non-expiry tokens you should not even set the value, including undefined. Even for undefined jsonwebtoken throws error - Number(identityTx.newToken.accessTokenTTL) === 0 + Number(identityAccessToken.accessTokenTTL) === 0 ? undefined : { - expiresIn: Number(identityTx.newToken.accessTokenTTL) + expiresIn: Number(identityAccessToken.accessTokenTTL) } ); return { accessToken, identityUa, - validClientSecretInfo: identityTx.validClientSecretInfo, - identityAccessToken: identityTx.newToken, + validClientSecretInfo, + identityAccessToken, identityMembershipOrg, - ...identityTx.accessTokenTTLParams + ...accessTokenTTLParams }; }; From e04e11f597b97b3e141358985e8544def5a13c53 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Sun, 31 Aug 2025 13:24:08 -0300 Subject: [PATCH 36/40] Check token source before throwing an error for auth enforced scenarios --- backend/src/services/auth/auth-login-service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/services/auth/auth-login-service.ts b/backend/src/services/auth/auth-login-service.ts index e3afb754a..e2d628c99 100644 --- a/backend/src/services/auth/auth-login-service.ts +++ b/backend/src/services/auth/auth-login-service.ts @@ -453,8 +453,13 @@ export const authLoginServiceFactory = ({ const selectedOrg = await orgDAL.findById(organizationId); - // Check if authEnforced is true, if that's the case, throw an error - if (selectedOrg.authEnforced) { + // Check if authEnforced is true and the current auth method is not an enforced method + if ( + selectedOrg.authEnforced && + !isAuthMethodSaml(decodedToken.authMethod) && + decodedToken.authMethod !== AuthMethod.OIDC && + decodedToken.authMethod !== AuthMethod.GOOGLE + ) { throw new BadRequestError({ message: "Authentication is required by your organization before you can log in." }); From 41404148e15bfa7115fb6a22cc3feef6536fbd21 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Sun, 31 Aug 2025 13:37:41 -0300 Subject: [PATCH 37/40] Improve error message --- backend/src/services/auth/auth-login-service.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/src/services/auth/auth-login-service.ts b/backend/src/services/auth/auth-login-service.ts index e2d628c99..0e5ed2ad9 100644 --- a/backend/src/services/auth/auth-login-service.ts +++ b/backend/src/services/auth/auth-login-service.ts @@ -457,11 +457,10 @@ export const authLoginServiceFactory = ({ if ( selectedOrg.authEnforced && !isAuthMethodSaml(decodedToken.authMethod) && - decodedToken.authMethod !== AuthMethod.OIDC && - decodedToken.authMethod !== AuthMethod.GOOGLE + decodedToken.authMethod !== AuthMethod.OIDC ) { throw new BadRequestError({ - message: "Authentication is required by your organization before you can log in." + message: "Login with the auth method required by your organization." }); } From e51c5256a08a1c2032d4b93cb0d3b1ad72802e27 Mon Sep 17 00:00:00 2001 From: Supriyo Date: Sun, 31 Aug 2025 22:38:17 +0530 Subject: [PATCH 38/40] Fix broken SDK link in docs --- docs/contributing/getting-started/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/getting-started/overview.mdx b/docs/contributing/getting-started/overview.mdx index 79bd97c95..35912fc8c 100644 --- a/docs/contributing/getting-started/overview.mdx +++ b/docs/contributing/getting-started/overview.mdx @@ -10,7 +10,7 @@ should approach the development and contribution process. Infisical has two major code-bases. One for the platform code, and one for SDKs. The contribution process has some key differences between the two, so we've split the documentation into two sections: - The [Infisical Platform](https://github.com/Infisical/infisical), the Infisical platform itself. -- The [Infisical SDK](https://github.com/Infisical/sdk), the official Infisical client SDKs. +- The [Infisical SDK](https://infisical.com/docs/sdks/overview), the official Infisical client SDKs. From b650b142f7cf0232ebc7c4f2142eb27938b0bde9 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 1 Sep 2025 14:43:24 +0530 Subject: [PATCH 39/40] feat: union said - bring back overview page!! --- frontend/src/helpers/project.ts | 9 +- .../SecretManagerLayout.tsx | 8 +- .../components/VaultPlatformModal.tsx | 6 +- .../OverviewPage/OverviewPage.tsx | 1738 ++++++++++++++++- 4 files changed, 1690 insertions(+), 71 deletions(-) diff --git a/frontend/src/helpers/project.ts b/frontend/src/helpers/project.ts index 787ff453d..7c9185556 100644 --- a/frontend/src/helpers/project.ts +++ b/frontend/src/helpers/project.ts @@ -72,15 +72,14 @@ export const getProjectBaseURL = (type: ProjectType) => { } }; +// @ts-expect-error akhilmhdh: will remove this later +// eslint-disable-next-line @typescript-eslint/no-unused-vars export const getProjectHomePage = (type: ProjectType, environments: WorkspaceEnv[]) => { switch (type) { case ProjectType.SecretManager: - if (environments.length > 0) - return `/projects/secret-management/$projectId/secrets/${environments[0].slug}`; - - return "/projects/secret-management/$projectId/overview"; + return "/projects/secret-management/$projectId/overview" as const; case ProjectType.CertificateManager: - return "/projects/cert-management/$projectId/subscribers"; + return "/projects/cert-management/$projectId/subscribers" as const; case ProjectType.SecretScanning: return `/projects/${type}/$projectId/data-sources` as const; default: diff --git a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx index a11107a41..0584e8e9c 100644 --- a/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx +++ b/frontend/src/layouts/SecretManagerLayout/SecretManagerLayout.tsx @@ -72,11 +72,7 @@ export const SecretManagerLayout = () => { { isSelected={ isActive || location.pathname.startsWith( - `/projects/secret-management/${currentWorkspace.id}/secrets` + `/projects/secret-management/${currentWorkspace.id}/overview` ) } > diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index 74abe7fb8..137e765d2 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -2,20 +2,20 @@ import { Controller, useForm } from "react-hook-form"; import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useQuery } from "@tanstack/react-query"; import { twMerge } from "tailwind-merge"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; +import { OrgPermissionCan } from "@app/components/permissions"; import { Button, FormControl, Input, Select, SelectItem, Tooltip } from "@app/components/v2"; import { NoticeBannerV2 } from "@app/components/v2/NoticeBannerV2/NoticeBannerV2"; -import { useImportVault } from "@app/hooks/api/migration/mutations"; -import { OrgPermissionCan } from "@app/components/permissions"; import { OrgGatewayPermissionActions, OrgPermissionSubjects } from "@app/context/OrgPermissionContext/types"; -import { useQuery } from "@tanstack/react-query"; import { gatewaysQueryKeys } from "@app/hooks/api"; +import { useImportVault } from "@app/hooks/api/migration/mutations"; type Props = { id?: string; diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 2de6d12f3..910e07eac 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -1,35 +1,908 @@ -import { useEffect } from "react"; -import { faLayerGroup } from "@fortawesome/free-solid-svg-icons"; -import { useQueryClient } from "@tanstack/react-query"; -import { useNavigate } from "@tanstack/react-router"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { Helmet } from "react-helmet"; +import { useTranslation } from "react-i18next"; +import { subject } from "@casl/ability"; +import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; +import { + faAngleDown, + faArrowDown, + faArrowLeft, + faArrowRight, + faArrowRightToBracket, + faArrowUp, + faFilter, + faFingerprint, + faFolder, + faFolderBlank, + faFolderPlus, + faKey, + faPlus, + faRotate +} from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Link, useNavigate, useRouter, useSearch } from "@tanstack/react-router"; +import { twMerge } from "tailwind-merge"; -import { Button, ContentLoader, EmptyState } from "@app/components/v2"; -import { useWorkspace } from "@app/context"; -import { getProjectHomePage } from "@app/helpers/project"; -import { usePopUp } from "@app/hooks"; -import { workspaceKeys } from "@app/hooks/api"; +import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; +import { createNotification } from "@app/components/notifications"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { CreateSecretRotationV2Modal } from "@app/components/secret-rotations-v2"; +import { DeleteSecretRotationV2Modal } from "@app/components/secret-rotations-v2/DeleteSecretRotationV2Modal"; +import { EditSecretRotationV2Modal } from "@app/components/secret-rotations-v2/EditSecretRotationV2Modal"; +import { RotateSecretRotationV2Modal } from "@app/components/secret-rotations-v2/RotateSecretRotationV2Modal"; +import { ViewSecretRotationV2GeneratedCredentialsModal } from "@app/components/secret-rotations-v2/ViewSecretRotationV2GeneratedCredentials"; +import { + Button, + Checkbox, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuTrigger, + EmptyState, + IconButton, + Lottie, + Modal, + ModalContent, + PageHeader, + Pagination, + Table, + TableContainer, + TableSkeleton, + TBody, + Td, + TFoot, + Th, + THead, + Tooltip, + Tr +} from "@app/components/v2"; +import { HeaderResizer } from "@app/components/v2/HeaderResizer/HeaderResizer"; +import { ROUTE_PATHS } from "@app/const/routes"; +import { + ProjectPermissionActions, + ProjectPermissionDynamicSecretActions, + ProjectPermissionSub, + useProjectPermission, + useSubscription, + useWorkspace +} from "@app/context"; +import { ProjectPermissionSecretRotationActions } from "@app/context/ProjectPermissionContext/types"; +import { + getUserTablePreference, + PreferenceKey, + setUserTablePreference +} from "@app/helpers/userTablePreferences"; +import { + useDebounce, + usePagination, + usePopUp, + useResetPageHelper, + useResizableHeaderHeight, + useToggle +} from "@app/hooks"; +import { + useCreateFolder, + useCreateSecretV3, + useDeleteSecretV3, + useGetImportedSecretsAllEnvs, + useGetWsTags, + useUpdateSecretV3 +} from "@app/hooks/api"; +import { useGetProjectSecretsOverview } from "@app/hooks/api/dashboard/queries"; +import { DashboardSecretsOrderBy, ProjectSecretsImportedBy } from "@app/hooks/api/dashboard/types"; +import { OrderByDirection } from "@app/hooks/api/generic/types"; +import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries"; +import { TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types"; +import { TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2"; +import { + SecretType, + SecretV3RawSanitized, + TSecretFolder, + WorkspaceEnv +} from "@app/hooks/api/types"; import { ProjectVersion } from "@app/hooks/api/workspace/types"; -import { AddEnvironmentModal } from "@app/pages/secret-manager/SettingsPage/components/EnvironmentSection/AddEnvironmentModal"; +import { + useDynamicSecretOverview, + useFolderOverview, + useSecretOverview, + useSecretRotationOverview +} from "@app/hooks/utils"; +import { SecretOverviewSecretRotationRow } from "@app/pages/secret-manager/OverviewPage/components/SecretOverviewSecretRotationRow"; +import { getHeaderStyle } from "@app/pages/secret-manager/OverviewPage/components/utils"; +import { CreateDynamicSecretForm } from "../SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm"; +import { FolderForm } from "../SecretDashboardPage/components/ActionBar/FolderForm"; +import { + HIDDEN_SECRET_VALUE, + HIDDEN_SECRET_VALUE_API_MASK +} from "../SecretDashboardPage/components/SecretListView/SecretItem"; +import { CreateSecretForm } from "./components/CreateSecretForm"; +import { FolderBreadCrumbs } from "./components/FolderBreadCrumbs"; +import { SecretOverviewDynamicSecretRow } from "./components/SecretOverviewDynamicSecretRow"; +import { SecretOverviewFolderRow } from "./components/SecretOverviewFolderRow"; +import { + SecretNoAccessOverviewTableRow, + SecretOverviewTableRow +} from "./components/SecretOverviewTableRow"; +import { SecretSearchInput } from "./components/SecretSearchInput"; +import { SecretTableResourceCount } from "./components/SecretTableResourceCount"; import { SecretV2MigrationSection } from "./components/SecretV2MigrationSection"; +import { SelectionPanel } from "./components/SelectionPanel/SelectionPanel"; + +export enum EntryType { + FOLDER = "folder", + SECRET = "secret" +} + +enum RowType { + Folder = "folder", + DynamicSecret = "dynamic", + Secret = "secret", + SecretRotation = "rotation" +} + +type Filter = { + [key in RowType]: boolean; +}; + +const DEFAULT_FILTER_STATE = { + [RowType.Folder]: false, + [RowType.DynamicSecret]: false, + [RowType.Secret]: false, + [RowType.SecretRotation]: false +}; + +const DEFAULT_COLLAPSED_HEADER_HEIGHT = 120; export const OverviewPage = () => { + const { t } = useTranslation(); + + const router = useRouter(); + const navigate = useNavigate({ + from: ROUTE_PATHS.SecretManager.OverviewPage.path + }); + const routerSearch = useSearch({ + from: ROUTE_PATHS.SecretManager.OverviewPage.id, + select: (el) => ({ + secretPath: el.secretPath, + search: el.search + }) + }); + const [scrollOffset, setScrollOffset] = useState(0); + const [debouncedScrollOffset] = useDebounce(scrollOffset); + const { permission } = useProjectPermission(); + const tableRef = useRef(null); const { currentWorkspace } = useWorkspace(); const isProjectV3 = currentWorkspace?.version === ProjectVersion.V3; - const queryClient = useQueryClient(); - const navigate = useNavigate(); - const { popUp, handlePopUpToggle, handlePopUpOpen } = usePopUp(["addEnvironment"] as const); + const workspaceId = currentWorkspace?.id as string; + const projectSlug = currentWorkspace?.slug as string; + const [searchFilter, setSearchFilter] = useState(""); + const [debouncedSearchFilter, setDebouncedSearchFilter] = useDebounce(searchFilter); + const secretPath = (routerSearch?.secretPath as string) || "/"; + const { subscription } = useSubscription(); + const [collapseEnvironments, setCollapseEnvironments] = useToggle( + Boolean(localStorage.getItem("overview-collapse-environments")) + ); + + const handleToggleNarrowHeader = () => { + setCollapseEnvironments.toggle(); + if (collapseEnvironments) { + localStorage.removeItem("overview-collapse-environments"); + } else { + localStorage.setItem("overview-collapse-environments", "true"); + } + }; + + const [filter, setFilter] = useState(DEFAULT_FILTER_STATE); + const [filterHistory, setFilterHistory] = useState< + Map + >(new Map()); + + const [selectedEntries, setSelectedEntries] = useState<{ + // selectedEntries[name/key][envSlug][resource] + [EntryType.FOLDER]: Record>; + [EntryType.SECRET]: Record>; + }>({ + [EntryType.FOLDER]: {}, + [EntryType.SECRET]: {} + }); + + const { + offset, + limit, + orderDirection, + setOrderDirection, + setPage, + perPage, + page, + setPerPage, + orderBy + } = usePagination(DashboardSecretsOrderBy.Name, { + initPerPage: getUserTablePreference("secretOverviewTable", PreferenceKey.PerPage, 100) + }); + + const handlePerPageChange = (newPerPage: number) => { + setPerPage(newPerPage); + setUserTablePreference("secretOverviewTable", PreferenceKey.PerPage, newPerPage); + }; + + const resetSelectedEntries = useCallback(() => { + setSelectedEntries({ + [EntryType.FOLDER]: {}, + [EntryType.SECRET]: {} + }); + }, []); useEffect(() => { - if (currentWorkspace.environments.length) { - navigate({ - to: getProjectHomePage(currentWorkspace.type, currentWorkspace.environments), - params: { - projectId: currentWorkspace.id - } + const onRouteChangeStart = () => { + resetSelectedEntries(); + }; + + const unsubscribeRouterEvent = router.subscribe("onLoad", onRouteChangeStart); + + return () => { + unsubscribeRouterEvent(); + }; + }, []); + + const userAvailableEnvs = currentWorkspace?.environments || []; + const userAvailableDynamicSecretEnvs = userAvailableEnvs.filter((env) => + permission.can( + ProjectPermissionDynamicSecretActions.CreateRootCredential, + subject(ProjectPermissionSub.DynamicSecrets, { + environment: env.slug, + secretPath, + metadata: ["*"] + }) + ) + ); + const userAvailableSecretRotationEnvs = userAvailableEnvs.filter((env) => + permission.can( + ProjectPermissionSecretRotationActions.Create, + subject(ProjectPermissionSub.SecretRotation, { + environment: env.slug, + secretPath + }) + ) + ); + + const [filteredEnvs, setFilteredEnvs] = useState([]); + const visibleEnvs = filteredEnvs.length ? filteredEnvs : userAvailableEnvs; + + const { + secretImports, + isImportedSecretPresentInEnv, + getImportedSecretByKey, + getEnvImportedSecretKeyCount + } = useGetImportedSecretsAllEnvs({ + projectId: workspaceId, + path: secretPath, + environments: (userAvailableEnvs || []).map(({ slug }) => slug) + }); + + const isFilteredByResources = Object.values(filter).some(Boolean); + const { isPending: isOverviewLoading, data: overview } = useGetProjectSecretsOverview( + { + projectId: workspaceId, + environments: visibleEnvs.map((env) => env.slug), + secretPath, + orderDirection, + orderBy, + includeFolders: isFilteredByResources ? filter.folder : true, + includeDynamicSecrets: isFilteredByResources ? filter.dynamic : true, + includeSecrets: isFilteredByResources ? filter.secret : true, + includeImports: true, + includeSecretRotations: isFilteredByResources ? filter.rotation : true, + search: debouncedSearchFilter, + limit, + offset + }, + { enabled: isProjectV3 } + ); + + const { + secrets, + folders, + dynamicSecrets, + secretRotations, + totalFolderCount, + totalSecretCount, + totalDynamicSecretCount, + totalSecretRotationCount, + totalImportCount, + totalCount = 0, + totalUniqueFoldersInPage, + totalUniqueSecretsInPage, + totalUniqueSecretImportsInPage, + totalUniqueDynamicSecretsInPage, + totalUniqueSecretRotationsInPage, + importedByEnvs, + usedBySecretSyncs + } = overview ?? {}; + + const secretImportsShaped = secretImports + ?.flatMap(({ data }) => data) + .filter(Boolean) + .flatMap((item) => item?.secrets || []); + + const handleIsImportedSecretPresentInEnv = (envSlug: string, secretName: string) => { + if (secrets?.some((s) => s.key === secretName && s.env === envSlug)) { + return false; + } + if (secretImportsShaped.some((s) => s.key === secretName && s.sourceEnv === envSlug)) { + return true; + } + return isImportedSecretPresentInEnv(envSlug, secretName); + }; + + useResetPageHelper({ + totalCount, + offset, + setPage + }); + + const { folderNamesAndDescriptions, getFolderByNameAndEnv, isFolderPresentInEnv } = + useFolderOverview(folders); + + const { dynamicSecretNames, isDynamicSecretPresentInEnv } = + useDynamicSecretOverview(dynamicSecrets); + + const { + secretRotationNames, + isSecretRotationPresentInEnv, + getSecretRotationByName, + getSecretRotationStatusesByName + } = useSecretRotationOverview(secretRotations); + + const { secKeys, getEnvSecretKeyCount } = useSecretOverview( + secrets?.concat(secretImportsShaped) || [] + ); + + const getSecretByKey = useCallback( + (env: string, key: string) => { + const sec = secrets?.find((s) => s.env === env && s.key === key); + return sec; + }, + [secrets] + ); + + const { data: tags } = useGetWsTags( + permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags) ? workspaceId : "" + ); + + const { mutateAsync: createSecretV3 } = useCreateSecretV3(); + const { mutateAsync: updateSecretV3 } = useUpdateSecretV3(); + const { mutateAsync: deleteSecretV3 } = useDeleteSecretV3(); + const { mutateAsync: createFolder } = useCreateFolder(); + const { mutateAsync: updateFolderBatch } = useUpdateFolderBatch(); + + const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([ + "addSecretsInAllEnvs", + "addFolder", + "misc", + "updateFolder", + "addDynamicSecret", + "addSecretRotation", + "editSecretRotation", + "rotateSecretRotation", + "viewSecretRotationGeneratedCredentials", + "deleteSecretRotation", + "upgradePlan" + ] as const); + + const handleFolderCreate = async (folderName: string, description: string | null) => { + const promises = userAvailableEnvs.map((env) => { + const environment = env.slug; + return createFolder({ + name: folderName, + path: secretPath, + environment, + projectId: workspaceId, + description + }); + }); + + const results = await Promise.allSettled(promises); + const isFoldersAdded = results.some((result) => result.status === "fulfilled"); + + if (isFoldersAdded) { + handlePopUpClose("addFolder"); + createNotification({ + type: "success", + text: "Successfully created folder" + }); + } else { + createNotification({ + type: "error", + text: "Failed to create folder" }); } - }, []); + }; + + const handleFolderUpdate = async (newFolderName: string, description: string | null) => { + const { name: oldFolderName } = popUp.updateFolder.data as TSecretFolder; + + const updatedFolders: TUpdateFolderBatchDTO["folders"] = []; + userAvailableEnvs.forEach((env) => { + if ( + permission.can( + ProjectPermissionActions.Edit, + subject(ProjectPermissionSub.SecretFolders, { environment: env.slug, secretPath }) + ) + ) { + const folder = getFolderByNameAndEnv(oldFolderName, env.slug); + if (folder) { + updatedFolders.push({ + environment: env.slug, + name: newFolderName, + id: folder.id, + path: secretPath, + description + }); + } + } + }); + + if (updatedFolders.length === 0) { + createNotification({ + type: "info", + text: "You don't have access to rename selected folder" + }); + + handlePopUpClose("updateFolder"); + return; + } + + try { + await updateFolderBatch({ + projectSlug, + folders: updatedFolders, + projectId: workspaceId + }); + createNotification({ + type: "success", + text: "Successfully renamed folder across environments" + }); + } catch { + createNotification({ + type: "error", + text: "Failed to rename folder across environments" + }); + } finally { + handlePopUpClose("updateFolder"); + } + }; + + const handleSecretCreate = async (env: string, key: string, value: string) => { + try { + // create folder if not existing + if (secretPath !== "/") { + // /hello/world -> [hello","world"] + const pathSegment = secretPath.split("/").filter(Boolean); + const parentPath = `/${pathSegment.slice(0, -1).join("/")}`; + const folderName = pathSegment.at(-1); + const canCreateFolder = permission.can( + ProjectPermissionActions.Create, + subject(ProjectPermissionSub.SecretFolders, { + environment: env, + secretPath: parentPath + }) + ); + if (folderName && parentPath && canCreateFolder) { + await createFolder({ + projectId: workspaceId, + path: parentPath, + environment: env, + name: folderName + }); + } + } + const result = await createSecretV3({ + environment: env, + workspaceId, + secretPath, + secretKey: key, + secretValue: value, + secretComment: "", + type: SecretType.Shared + }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully created secret" + }); + } + } catch (error) { + console.log(error); + createNotification({ + type: "error", + text: "Failed to create secret" + }); + } + }; + + const handleEnvSelect = (envId: string) => { + if (filteredEnvs.map((env) => env.id).includes(envId)) { + setFilteredEnvs(filteredEnvs.filter((env) => env.id !== envId)); + } else { + setFilteredEnvs(filteredEnvs.concat(userAvailableEnvs.filter((env) => env.id === envId))); + } + }; + + const handleSecretUpdate = async ( + env: string, + key: string, + value: string, + secretValueHidden: boolean, + type = SecretType.Shared + ) => { + let secretValue: string | undefined = value; + + if ( + secretValueHidden && + (value === HIDDEN_SECRET_VALUE_API_MASK || value === HIDDEN_SECRET_VALUE) + ) { + secretValue = undefined; + } + + try { + const result = await updateSecretV3({ + environment: env, + workspaceId, + secretPath, + secretKey: key, + secretValue, + type + }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully updated secret" + }); + } + } catch (error) { + console.log(error); + createNotification({ + type: "error", + text: "Failed to update secret" + }); + } + }; + + const handleSecretDelete = async (env: string, key: string, secretId?: string) => { + try { + const result = await deleteSecretV3({ + environment: env, + workspaceId, + secretPath, + secretKey: key, + secretId, + type: SecretType.Shared + }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully deleted secret" + }); + } + } catch (error) { + console.log(error); + createNotification({ + type: "error", + text: "Failed to delete secret" + }); + } + }; + + const handleResetSearch = (path: string) => { + const restore = filterHistory.get(path); + setFilter(restore?.filter ?? DEFAULT_FILTER_STATE); + const el = restore?.searchFilter ?? ""; + setSearchFilter(el); + setDebouncedSearchFilter(el); + }; + + const handleFolderClick = (path: string) => { + // store for breadcrumb nav to restore previously used filters + setFilterHistory((prev) => { + const curr = new Map(prev); + curr.set(secretPath, { filter, searchFilter }); + return curr; + }); + + navigate({ + search: (prev) => ({ + ...prev, + secretPath: `${routerSearch.secretPath === "/" ? "" : routerSearch.secretPath}/${path}` + }) + }).then(() => { + setFilter(DEFAULT_FILTER_STATE); + setSearchFilter(""); + setDebouncedSearchFilter(""); + }); + }; + + const handleExploreEnvClick = async (slug: string) => { + if (secretPath !== "/") { + const pathSegment = secretPath.split("/").filter(Boolean); + const parentPath = `/${pathSegment.slice(0, -1).join("/")}`; + const folderName = pathSegment.at(-1); + const canCreateFolder = permission.can( + ProjectPermissionActions.Create, + subject(ProjectPermissionSub.SecretFolders, { + environment: slug, + secretPath: parentPath + }) + ); + if (folderName && parentPath && canCreateFolder) { + await createFolder({ + projectId: workspaceId, + environment: slug, + path: parentPath, + name: folderName + }); + } + } + + const query: Record = { ...routerSearch, search: searchFilter }; + const envIndex = visibleEnvs.findIndex((el) => slug === el.slug); + if (envIndex !== -1) { + navigate({ + to: "/projects/secret-management/$projectId/secrets/$envSlug", + params: { + projectId: workspaceId, + envSlug: slug + }, + search: query + }); + } + }; + + const handleToggleRowType = useCallback( + (rowType: RowType) => + setFilter((state) => { + return { + ...state, + [rowType]: !state[rowType] + }; + }), + [] + ); + + const allRowsSelectedOnPage = useMemo(() => { + if (!secrets?.length && !folders?.length) return { isChecked: false, isIndeterminate: false }; + + if ( + (!secrets?.length || + secrets?.every((secret) => selectedEntries[EntryType.SECRET][secret.key])) && + (!folders?.length || + folders?.every((folder) => selectedEntries[EntryType.FOLDER][folder.name])) + ) + return { isChecked: true, isIndeterminate: false }; + + if ( + secrets?.some((secret) => selectedEntries[EntryType.SECRET][secret.key]) || + folders?.some((folder) => selectedEntries[EntryType.FOLDER][folder.name]) + ) + return { isChecked: true, isIndeterminate: true }; + + return { isChecked: false, isIndeterminate: false }; + }, [selectedEntries, secrets, folders]); + + const toggleSelectedEntry = useCallback( + (type: EntryType, key: string) => { + const isChecked = Boolean(selectedEntries[type]?.[key]); + const newChecks = { ...selectedEntries }; + + // remove selection if its present else add it + if (isChecked) { + delete newChecks[type][key]; + } else { + newChecks[type][key] = {}; + userAvailableEnvs.forEach((env) => { + const resource = + type === EntryType.SECRET + ? getSecretByKey(env.slug, key) + : getFolderByNameAndEnv(key, env.slug); + + if (resource) newChecks[type][key][env.slug] = resource; + }); + } + + setSelectedEntries(newChecks); + }, + [selectedEntries, getFolderByNameAndEnv, getSecretByKey] + ); + + const toggleSelectAllRows = () => { + const newChecks = { ...selectedEntries }; + + userAvailableEnvs.forEach((env) => { + secrets?.forEach((secret) => { + if (allRowsSelectedOnPage.isChecked) { + delete newChecks[EntryType.SECRET][secret.key]; + } else { + if (!newChecks[EntryType.SECRET][secret.key]) + newChecks[EntryType.SECRET][secret.key] = {}; + + const resource = getSecretByKey(env.slug, secret.key); + + if (resource) newChecks[EntryType.SECRET][secret.key][env.slug] = resource; + } + }); + + folders?.forEach((folder) => { + if (allRowsSelectedOnPage.isChecked) { + delete newChecks[EntryType.FOLDER][folder.name]; + } else { + if (!newChecks[EntryType.FOLDER][folder.name]) + newChecks[EntryType.FOLDER][folder.name] = {}; + + const resource = getFolderByNameAndEnv(folder.name, env.slug); + + if (resource) newChecks[EntryType.FOLDER][folder.name][env.slug] = resource; + } + }); + }); + + setSelectedEntries(newChecks); + }; + + useEffect(() => { + if (routerSearch.search) { + const { search, ...query } = routerSearch; + // temp workaround until we transition state to query params + navigate({ + search: query + }); + setFilter(DEFAULT_FILTER_STATE); + setSearchFilter(routerSearch.search as string); + setDebouncedSearchFilter(routerSearch.search as string); + } + }, [routerSearch.search]); + + const selectedKeysCount = Object.keys(selectedEntries.secret).length; + + const secretsToDeleteKeys = useMemo(() => { + return Object.values(selectedEntries.secret).flatMap((entries) => + Object.values(entries).map((secret) => secret.key) + ); + }, [selectedEntries]); + + const filterAndMergeEnvironments = ( + envNames: string[], + envs: { environment: string; importedBy: ProjectSecretsImportedBy[] }[] + ): ProjectSecretsImportedBy[] => { + const environments = envs.filter((env) => envNames.includes(env.environment)); + + if (environments.length === 0) return []; + + const allImportedBy = environments.flatMap((env) => env.importedBy); + const groupedBySlug: Record = {}; + + allImportedBy.forEach((item) => { + const { slug } = item.environment; + if (!groupedBySlug[slug]) groupedBySlug[slug] = []; + groupedBySlug[slug].push(item); + }); + + const mergedImportedBy = Object.values(groupedBySlug).map((group) => { + const { environment } = group[0]; + const allFolders = group.flatMap((item) => item.folders); + + const foldersByName: Record = {}; + allFolders.forEach((folder) => { + if (!foldersByName[folder.name]) foldersByName[folder.name] = []; + foldersByName[folder.name].push(folder); + }); + + const mergedFolders = Object.entries(foldersByName).map(([name, foldersData]) => { + const isImported = foldersData.some((folder) => folder.isImported); + const allSecrets = foldersData.flatMap((folder) => folder.secrets || []); + + const uniqueSecrets: { + secretId: string; + referencedSecretKey: string; + referencedSecretEnv: string; + }[] = []; + const secretIds = new Set(); + + allSecrets + .filter( + (secret) => + !secretsToDeleteKeys || + secretsToDeleteKeys.length === 0 || + secretsToDeleteKeys.includes(secret.referencedSecretKey) + ) + .forEach((secret) => { + if (!secretIds.has(secret.secretId)) { + secretIds.add(secret.secretId); + uniqueSecrets.push(secret); + } + }); + + return { + name, + isImported, + ...(uniqueSecrets.length > 0 ? { secrets: uniqueSecrets } : {}) + }; + }); + + return { + environment, + folders: mergedFolders.filter( + (folder) => folder.isImported || (folder.secrets && folder.secrets.length > 0) + ) + }; + }); + + return mergedImportedBy; + }; + + const importedBy = useMemo(() => { + if (!importedByEnvs) return []; + if (selectedKeysCount === 0) { + return filterAndMergeEnvironments( + visibleEnvs.map(({ slug }) => slug), + importedByEnvs + ); + } + return filterAndMergeEnvironments( + Object.values(selectedEntries.secret).flatMap((entries) => Object.keys(entries)), + importedByEnvs + ); + }, [importedByEnvs, selectedEntries, selectedKeysCount]); + + const storedHeight = Number.parseInt( + localStorage.getItem("overview-header-height") ?? DEFAULT_COLLAPSED_HEADER_HEIGHT.toString(), + 10 + ); + const { headerHeight, handleMouseDown, isResizing } = useResizableHeaderHeight({ + initialHeight: Number.isNaN(storedHeight) ? DEFAULT_COLLAPSED_HEADER_HEIGHT : storedHeight, + minHeight: DEFAULT_COLLAPSED_HEADER_HEIGHT, + maxHeight: 288 + }); + + const debouncedHeaderHeight = useDebounce(headerHeight); + + useEffect(() => { + localStorage.setItem("overview-header-height", debouncedHeaderHeight.toString()); + }, [debouncedHeaderHeight]); + + if (isProjectV3 && visibleEnvs.length > 0 && isOverviewLoading) { + return ( +
+ +
+ ); + } + + const canViewOverviewPage = Boolean(userAvailableEnvs.length); + // This is needed to also show imports from other paths – right now those are missing. + // const combinedKeys = [...secKeys, ...secretImports.map((impSecrets) => impSecrets?.data?.map((impSec) => impSec.secrets?.map((impSecKey) => impSecKey.key))).flat().flat()]; + + const isTableEmpty = totalCount === 0; + + const isTableFiltered = isFilteredByResources || filteredEnvs.length > 0; if (!isProjectV3) return ( @@ -37,46 +910,797 @@ export const OverviewPage = () => {
); - - if (currentWorkspace.environments.length) { - return ; - } - return ( -
- handlePopUpToggle("addEnvironment", isOpen)} - onComplete={async (env) => { - await queryClient.refetchQueries({ - queryKey: workspaceKeys.getWorkspaceById(currentWorkspace.id) - }); - - navigate({ - to: getProjectHomePage(currentWorkspace.type, [env]), - params: { - projectId: currentWorkspace.id +
+ + {t("common.head-title", { title: t("dashboard.title") })} + + + +
+
+ + Inject your secrets using + + Infisical CLI + + , + + Infisical API + + , + + Infisical SDKs + + , and + + more + + . Click the Explore button to view the secret details section. +

} - }); - }} - /> - -
- Create an environment to get started - + />
-
+
+ +
+ {isTableFiltered && ( + + )} + {userAvailableEnvs.length > 0 && ( + + + + + + {/* + + */} + Filter by Resource + + { + e.preventDefault(); + handleToggleRowType(RowType.Folder); + }} + icon={filter[RowType.Folder] && } + iconPos="right" + > +
+ + Folders +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.DynamicSecret); + }} + icon={filter[RowType.DynamicSecret] && } + iconPos="right" + > +
+ + Dynamic Secrets +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.SecretRotation); + }} + icon={ + filter[RowType.SecretRotation] && + } + iconPos="right" + > +
+ + Secret Rotations +
+
+ { + e.preventDefault(); + handleToggleRowType(RowType.Secret); + }} + icon={filter[RowType.Secret] && } + iconPos="right" + > +
+ + Secrets +
+
+ Filter by Environment + {userAvailableEnvs.map((availableEnv) => { + const { id: envId, name } = availableEnv; + + const isEnvSelected = filteredEnvs.map((env) => env.id).includes(envId); + return ( + { + e.preventDefault(); + handleEnvSelect(envId); + }} + key={envId} + icon={isEnvSelected && } + iconPos="right" + > +
{name}
+
+ ); + })} +
+
+ )} + + {userAvailableEnvs.length > 0 && ( +
+ + handlePopUpToggle("misc", isOpen)} + > + + + + + + +
+ + {(isAllowed) => ( + + )} + + + + + + + +
+
+
+
+ )} +
+
+ +
+ setScrollOffset(e.currentTarget.scrollLeft)} + className="thin-scrollbar max-h-[66vh] overflow-y-auto rounded-b-none" + > +

cxO!GN_yMqN?SoKhcP_f$>9eq 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 NxoLQ#RO?>Y{|9ieAXESV literal 552146 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Ξv&$o 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 z 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

Value
+ + Audit Logs + +
+
+ {PERMISSION_ACTIONS.map(({ action, label }) => { + return ( + ( + { + if (!isEditable) { + createNotification({ + type: "error", + text: "Failed to update default role" + }); + return; + } + field.onChange(e); + }} + id={`permissions.audit-logs.${action}`} + > + {label} + + )} + /> + ); + })} +
+
+ + + + {visibleEnvs?.map(({ name, slug }, index) => { + const envSecKeyCount = getEnvSecretKeyCount(slug); + const importedSecKeyCount = getEnvImportedSecretKeyCount(slug); + const missingKeyCount = secKeys.length - envSecKeyCount - importedSecKeyCount; + + const isLast = index === visibleEnvs.length - 1; + + return ( + + ); + })} + + {collapseEnvironments && ( + + )} + + + {canViewOverviewPage && isOverviewLoading && ( + + )} + {userAvailableEnvs.length === 0 && ( + + + + )} + {isTableEmpty && !isOverviewLoading && visibleEnvs.length > 0 && ( + + + + )} + {!isOverviewLoading && visibleEnvs.length > 0 && ( + <> + {folderNamesAndDescriptions.map(({ name: folderName, description }, index) => ( + + toggleSelectedEntry(EntryType.FOLDER, folderName) + } + environments={visibleEnvs} + key={`overview-${folderName}-${index + 1}`} + onClick={handleFolderClick} + onToggleFolderEdit={(name: string) => + handlePopUpOpen("updateFolder", { name, description }) + } + /> + ))} + {dynamicSecretNames.map((dynamicSecretName, index) => ( + + ))} + {secretRotationNames.map((secretRotationName, index) => ( + + handlePopUpOpen("editSecretRotation", secretRotation) + } + onRotate={(secretRotation) => + handlePopUpOpen("rotateSecretRotation", secretRotation) + } + onViewGeneratedCredentials={(secretRotation) => + handlePopUpOpen("viewSecretRotationGeneratedCredentials", secretRotation) + } + onDelete={(secretRotation) => + handlePopUpOpen("deleteSecretRotation", secretRotation) + } + /> + ))} + {secKeys.map((key, index) => ( + toggleSelectedEntry(EntryType.SECRET, key)} + secretPath={secretPath} + getImportedSecretByKey={getImportedSecretByKey} + isImportedSecretPresentInEnv={handleIsImportedSecretPresentInEnv} + onSecretCreate={handleSecretCreate} + onSecretDelete={handleSecretDelete} + onSecretUpdate={handleSecretUpdate} + key={`overview-${key}-${index + 1}`} + environments={visibleEnvs} + secretKey={key} + getSecretByKey={getSecretByKey} + scrollOffset={debouncedScrollOffset} + importedBy={importedBy} + /> + ))} + totalCount ? totalCount % perPage : perPage) - + (totalUniqueFoldersInPage || 0) - + (totalUniqueDynamicSecretsInPage || 0) - + (totalUniqueSecretsInPage || 0) - + (totalUniqueSecretImportsInPage || 0) - + (totalUniqueSecretRotationsInPage || 0), + 0 + )} + /> + + )} + + + + + {visibleEnvs?.map(({ name, slug }, i) => ( + + ))} + + +
+
+
+ 0 + ? `${ + !allRowsSelectedOnPage.isChecked ? "Select" : "Unselect" + } all folders and secrets on page` + : "" + } + > +
+ +
+
+ Name + + setOrderDirection((prev) => + prev === OrderByDirection.ASC + ? OrderByDirection.DESC + : OrderByDirection.ASC + ) + } + > + + +
+ + + + + +
+
+ {name}

+ ) : ( + "" + ) + } + side="bottom" + sideOffset={-1} + align="end" + className="max-w-xl text-xs normal-case" + rootProps={{ + disableHoverableContent: true + }} + > +
+
+ + {!collapseEnvironments && missingKeyCount > 0 && ( + +
+ {missingKeyCount} +
+
+ )} +
+ +
+ + + + + +
+ + + +
+
+
+
+ {collapseEnvironments ? ( + + handleExploreEnvClick(slug)} + > + + + + ) : ( + + )} +
+
+
+ {!isOverviewLoading && totalCount > 0 && ( + + } + className="rounded-b-md border-t border-solid border-t-mineshaft-600" + count={totalCount} + page={page} + perPage={perPage} + onChangePage={(newPage) => setPage(newPage)} + onChangePerPage={handlePerPageChange} + /> + )} +
+ + handlePopUpToggle("addSecretsInAllEnvs", isOpen)} + > + e.preventDefault()} + > + handlePopUpClose("addSecretsInAllEnvs")} + /> + + + handlePopUpToggle("addFolder", isOpen)} + > + + + + + handlePopUpToggle("updateFolder", isOpen)} + > + + )?.name} + defaultDescription={ + (popUp.updateFolder?.data as Pick)?.description + } + onUpdateFolder={handleFolderUpdate} + showDescriptionOverwriteWarning + /> + + + handlePopUpToggle("addDynamicSecret", isOpen)} + projectSlug={projectSlug} + environments={userAvailableDynamicSecretEnvs} + secretPath={secretPath} + /> + {subscription && ( + handlePopUpToggle("upgradePlan", isOpen)} + text={ + subscription.slug === null + ? "You can perform this action under an Enterprise license" + : "You can perform this action if you switch to Infisical's Team plan" + } + /> + )} + handlePopUpToggle("addSecretRotation", isOpen)} + /> + handlePopUpToggle("editSecretRotation", isOpen)} + /> + handlePopUpToggle("rotateSecretRotation", isOpen)} + /> + + handlePopUpToggle("viewSecretRotationGeneratedCredentials", isOpen) + } + /> + handlePopUpToggle("deleteSecretRotation", isOpen)} + /> ); }; From d931725930d5a3c99beb7b8e618546a35a1a4d1f Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Mon, 1 Sep 2025 09:47:59 -0700 Subject: [PATCH 40/40] improvement: clarify external import provider names and add logo icons --- .../public/images/integrations/EnvKey.png | Bin 0 -> 18992 bytes .../SelectImportFromPlatformModal.tsx | 20 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 frontend/public/images/integrations/EnvKey.png diff --git a/frontend/public/images/integrations/EnvKey.png b/frontend/public/images/integrations/EnvKey.png new file mode 100644 index 0000000000000000000000000000000000000000..bf1ce03edea5d20ba95428b4769a72f108b92f70 GIT binary patch literal 18992 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%0Dr^d@SN`JQy>SX_9J@?;$J^K8a+?JTK*J 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 { {PLATFORM_LIST.map((platform, idx) => (
{ @@ -81,7 +81,11 @@ export const SelectImportFromPlatformModal = ({ isOpen, onToggle }: Props) => { } }} > - + {`${platform.title}
{platform.title}
))}