From 648968c4539e5eed1a2549a2d5ffade96ec160f6 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Mon, 7 Aug 2023 11:25:06 +0700 Subject: [PATCH] Run linter --- .../ee/controllers/v1/workspaceController.ts | 21 +++++++----- backend/src/ee/routes/v1/organizations.ts | 2 +- backend/src/ee/routes/v1/secret.ts | 4 +-- backend/src/ee/routes/v1/secretSnapshot.ts | 2 +- backend/src/ee/routes/v1/sso.ts | 4 +-- backend/src/ee/routes/v1/workspace.ts | 6 ++-- backend/src/ee/services/EEAuditLogService.ts | 4 +-- backend/src/helpers/auth.ts | 4 +-- backend/src/helpers/secrets.ts | 4 +-- backend/src/interfaces/middleware/index.ts | 2 +- backend/src/routes/v1/bot.ts | 2 +- backend/src/routes/v1/integration.ts | 4 +-- backend/src/routes/v1/integrationAuth.ts | 4 +-- backend/src/routes/v1/key.ts | 2 +- backend/src/routes/v1/organization.ts | 4 +-- backend/src/routes/v1/secret.ts | 4 +-- backend/src/routes/v1/secretImport.ts | 2 +- backend/src/routes/v1/secretsFolder.ts | 2 +- backend/src/routes/v1/serviceToken.ts | 4 +-- backend/src/routes/v1/webhook.ts | 2 +- backend/src/routes/v1/workspace.ts | 4 +-- backend/src/routes/v2/environment.ts | 4 +-- backend/src/routes/v2/organizations.ts | 4 +-- backend/src/routes/v2/secret.ts | 2 +- backend/src/routes/v2/secrets.ts | 2 +- backend/src/routes/v2/serviceTokenData.ts | 2 +- backend/src/routes/v2/tags.ts | 4 +-- backend/src/routes/v2/workspace.ts | 4 +-- backend/src/validation/membership.ts | 7 ---- backend/src/validation/organization.ts | 3 +- backend/src/validation/secrets.ts | 4 +-- backend/src/validation/workspace.ts | 7 ++-- frontend/src/hooks/api/auditLogs/queries.tsx | 9 ++--- frontend/src/hooks/api/index.tsx | 2 +- .../src/pages/integrations/checkly/create.tsx | 1 + .../LogsPage/components/LogsFilter.tsx | 33 ++++++++++++------- .../LogsPage/components/LogsSection.tsx | 20 ++++------- .../Project/LogsPage/components/LogsTable.tsx | 5 ++- .../LogsPage/components/LogsTableRow.tsx | 23 ++++++++----- .../Project/LogsPage/components/types.tsx | 13 ++++++++ 40 files changed, 130 insertions(+), 106 deletions(-) create mode 100644 frontend/src/views/Project/LogsPage/components/types.tsx diff --git a/backend/src/ee/controllers/v1/workspaceController.ts b/backend/src/ee/controllers/v1/workspaceController.ts index c865dc8eb..a77cdca71 100644 --- a/backend/src/ee/controllers/v1/workspaceController.ts +++ b/backend/src/ee/controllers/v1/workspaceController.ts @@ -1,20 +1,19 @@ import { Request, Response } from "express"; import { PipelineStage, Types } from "mongoose"; -import { Secret, Membership, User, ServiceTokenData } from "../../../models"; +import { Membership, Secret, ServiceTokenData, User } from "../../../models"; import { + ActorType, + AuditLog, FolderVersion, IPType, ISecretVersion, Log, SecretSnapshot, SecretVersion, + ServiceActor, TFolderRootVersionSchema, TrustedIP, - AuditLog, - Actor, - ActorType, - UserActor, - ServiceActor + UserActor } from "../../models"; import { EESecretService } from "../../services"; import { getLatestSecretVersionIds } from "../../helpers/secretVersion"; @@ -599,7 +598,7 @@ export const getWorkspaceLogs = async (req: Request, res: Response) => { }; /** - * Return trusted ips for workspace with id [workspaceId] + * Return audit logs for workspace with id [workspaceId] * @param req * @param res */ @@ -608,6 +607,8 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => { const eventType = req.query.eventType; const userAgentType = req.query.userAgentType; const actor = req.query.actor as string | undefined; + const offset: number = parseInt(req.query.offset as string); + const limit: number = parseInt(req.query.limit as string); const auditLogs = await AuditLog.find({ workspace: new Types.ObjectId(workspaceId), @@ -626,7 +627,9 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => { }) } : {}) }) - .sort({ createdAt: -1 }); + .sort({ createdAt: -1 }) + .skip(offset) + .limit(limit); return res.status(200).send({ auditLogs @@ -634,7 +637,7 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => { } /** - * Return trusted ips for workspace with id [workspaceId] + * Return audit log actor filter options for workspace with id [workspaceId] * @param req * @param res */ diff --git a/backend/src/ee/routes/v1/organizations.ts b/backend/src/ee/routes/v1/organizations.ts index d41d232da..6506d3afa 100644 --- a/backend/src/ee/routes/v1/organizations.ts +++ b/backend/src/ee/routes/v1/organizations.ts @@ -8,7 +8,7 @@ import { import { body, param, query } from "express-validator"; import { organizationsController } from "../../controllers/v1"; import { - ACCEPTED, ADMIN, MEMBER, OWNER, AuthMode + ACCEPTED, ADMIN, AuthMode, MEMBER, OWNER } from "../../../variables"; router.get( diff --git a/backend/src/ee/routes/v1/secret.ts b/backend/src/ee/routes/v1/secret.ts index 376922e74..0eb23ee80 100644 --- a/backend/src/ee/routes/v1/secret.ts +++ b/backend/src/ee/routes/v1/secret.ts @@ -9,10 +9,10 @@ import { body, param, query } from "express-validator"; import { secretController } from "../../controllers/v1"; import { ADMIN, + AuthMode, MEMBER, PERMISSION_READ_SECRETS, - PERMISSION_WRITE_SECRETS, - AuthMode + PERMISSION_WRITE_SECRETS } from "../../../variables"; router.get( diff --git a/backend/src/ee/routes/v1/secretSnapshot.ts b/backend/src/ee/routes/v1/secretSnapshot.ts index c6201cc12..ecfe47ca5 100644 --- a/backend/src/ee/routes/v1/secretSnapshot.ts +++ b/backend/src/ee/routes/v1/secretSnapshot.ts @@ -8,7 +8,7 @@ import { validateRequest, } from "../../../middleware"; import { param } from "express-validator"; -import { ADMIN, MEMBER, AuthMode } from "../../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../../variables"; import { secretSnapshotController } from "../../controllers/v1"; router.get( diff --git a/backend/src/ee/routes/v1/sso.ts b/backend/src/ee/routes/v1/sso.ts index 22ecee9f0..005f84a0e 100644 --- a/backend/src/ee/routes/v1/sso.ts +++ b/backend/src/ee/routes/v1/sso.ts @@ -15,8 +15,8 @@ import { authLimiter } from "../../../helpers/rateLimiter"; import { ACCEPTED, ADMIN, - OWNER, - AuthMode + AuthMode, + OWNER } from "../../../variables"; router.get( diff --git a/backend/src/ee/routes/v1/workspace.ts b/backend/src/ee/routes/v1/workspace.ts index 407f5d3f8..90eea76e6 100644 --- a/backend/src/ee/routes/v1/workspace.ts +++ b/backend/src/ee/routes/v1/workspace.ts @@ -8,8 +8,8 @@ import { import { body, param, query } from "express-validator"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../../variables"; import { workspaceController } from "../../controllers/v1"; import { EventType, UserAgentType } from "../../models"; @@ -97,6 +97,8 @@ router.get( query("eventType").isString().isIn(Object.values(EventType)).optional({ nullable: true }), query("userAgentType").isString().isIn(Object.values(UserAgentType)).optional({ nullable: true }), query("actor").isString().optional({ nullable: true }), + query("offset").isString().default("0"), + query("limit").isString().default("20"), validateRequest, workspaceController.getWorkspaceAuditLogs ); diff --git a/backend/src/ee/services/EEAuditLogService.ts b/backend/src/ee/services/EEAuditLogService.ts index 02ea99225..035742077 100644 --- a/backend/src/ee/services/EEAuditLogService.ts +++ b/backend/src/ee/services/EEAuditLogService.ts @@ -11,8 +11,8 @@ interface EventScope { } type ValidEventScope = - | Required> - | Required> + | Required> + | Required> | Required export default class EEAuditLogService { diff --git a/backend/src/helpers/auth.ts b/backend/src/helpers/auth.ts index 50b68e62c..8d034dfbf 100644 --- a/backend/src/helpers/auth.ts +++ b/backend/src/helpers/auth.ts @@ -28,8 +28,8 @@ import { AuthMode } from "../variables"; import { - UserAuthData, - ServiceTokenAuthData + ServiceTokenAuthData, + UserAuthData } from "../interfaces/middleware"; import { ActorType } from "../ee/models"; diff --git a/backend/src/helpers/secrets.ts b/backend/src/helpers/secrets.ts index 0d5562b4e..880e7cee3 100644 --- a/backend/src/helpers/secrets.ts +++ b/backend/src/helpers/secrets.ts @@ -13,7 +13,7 @@ import { SecretBlindIndexData, ServiceTokenData, } from "../models"; -import { SecretVersion, EventType } from "../ee/models"; +import { EventType, SecretVersion } from "../ee/models"; import { BadRequestError, InternalServerError, @@ -40,7 +40,7 @@ import { } from "../utils/crypto"; import { TelemetryService } from "../services"; import { client, getEncryptionKey, getRootEncryptionKey } from "../config"; -import { EELogService, EESecretService, EEAuditLogService } from "../ee/services"; +import { EEAuditLogService, EELogService, EESecretService } from "../ee/services"; import { getAuthDataPayloadIdObj, getAuthDataPayloadUserObj } from "../utils/auth"; import { getFolderByPath, getFolderIdFromServiceToken } from "../services/FolderService"; import picomatch from "picomatch"; diff --git a/backend/src/interfaces/middleware/index.ts b/backend/src/interfaces/middleware/index.ts index bb2435ecf..e8dd1b91b 100644 --- a/backend/src/interfaces/middleware/index.ts +++ b/backend/src/interfaces/middleware/index.ts @@ -4,8 +4,8 @@ import { IUser, } from "../../models"; import { - UserActor, ServiceActor, + UserActor, UserAgentType } from "../../ee/models"; diff --git a/backend/src/routes/v1/bot.ts b/backend/src/routes/v1/bot.ts index 536e0a3bd..e50d35625 100644 --- a/backend/src/routes/v1/bot.ts +++ b/backend/src/routes/v1/bot.ts @@ -8,7 +8,7 @@ import { validateRequest, } from "../../middleware"; import { botController } from "../../controllers/v1"; -import { ADMIN, MEMBER, AuthMode } from "../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../variables"; router.get( "/:workspaceId", diff --git a/backend/src/routes/v1/integration.ts b/backend/src/routes/v1/integration.ts index 0bd1dfbc6..95ec4ec2d 100644 --- a/backend/src/routes/v1/integration.ts +++ b/backend/src/routes/v1/integration.ts @@ -8,8 +8,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; import { body, param } from "express-validator"; import { integrationController } from "../../controllers/v1"; diff --git a/backend/src/routes/v1/integrationAuth.ts b/backend/src/routes/v1/integrationAuth.ts index daf880c60..b8b7f348d 100644 --- a/backend/src/routes/v1/integrationAuth.ts +++ b/backend/src/routes/v1/integrationAuth.ts @@ -9,8 +9,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; import { integrationAuthController } from "../../controllers/v1"; diff --git a/backend/src/routes/v1/key.ts b/backend/src/routes/v1/key.ts index daa840ee7..a12c8c0bb 100644 --- a/backend/src/routes/v1/key.ts +++ b/backend/src/routes/v1/key.ts @@ -6,7 +6,7 @@ import { validateRequest, } from "../../middleware"; import { body, param } from "express-validator"; -import { ADMIN, MEMBER, AuthMode } from "../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../variables"; import { keyController } from "../../controllers/v1"; router.post( diff --git a/backend/src/routes/v1/organization.ts b/backend/src/routes/v1/organization.ts index fdad1f9fa..8f4a924e9 100644 --- a/backend/src/routes/v1/organization.ts +++ b/backend/src/routes/v1/organization.ts @@ -9,9 +9,9 @@ import { import { ACCEPTED, ADMIN, + AuthMode, MEMBER, - OWNER, - AuthMode + OWNER } from "../../variables"; import { organizationController } from "../../controllers/v1"; diff --git a/backend/src/routes/v1/secret.ts b/backend/src/routes/v1/secret.ts index 6cebd4db8..10668de34 100644 --- a/backend/src/routes/v1/secret.ts +++ b/backend/src/routes/v1/secret.ts @@ -10,8 +10,8 @@ import { body, param, query } from "express-validator"; import { secretController } from "../../controllers/v1"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; // note to devs: these endpoints will be deprecated in favor of v2 diff --git a/backend/src/routes/v1/secretImport.ts b/backend/src/routes/v1/secretImport.ts index 2e7e22bc3..79ee8e238 100644 --- a/backend/src/routes/v1/secretImport.ts +++ b/backend/src/routes/v1/secretImport.ts @@ -3,7 +3,7 @@ const router = express.Router(); import { body, param, query } from "express-validator"; import { secretImportController } from "../../controllers/v1"; import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; -import { ADMIN, MEMBER, AuthMode } from "../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../variables"; router.post( "/", diff --git a/backend/src/routes/v1/secretsFolder.ts b/backend/src/routes/v1/secretsFolder.ts index 6a89e4b97..f7773367b 100644 --- a/backend/src/routes/v1/secretsFolder.ts +++ b/backend/src/routes/v1/secretsFolder.ts @@ -12,7 +12,7 @@ import { getFolders, updateFolderById, } from "../../controllers/v1/secretsFolderController"; -import { ADMIN, MEMBER, AuthMode } from "../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../variables"; router.post( "/", diff --git a/backend/src/routes/v1/serviceToken.ts b/backend/src/routes/v1/serviceToken.ts index a3974e217..aaf35e85f 100644 --- a/backend/src/routes/v1/serviceToken.ts +++ b/backend/src/routes/v1/serviceToken.ts @@ -9,8 +9,8 @@ import { import { body } from "express-validator"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; import { serviceTokenController } from "../../controllers/v1"; diff --git a/backend/src/routes/v1/webhook.ts b/backend/src/routes/v1/webhook.ts index 55c471ea3..16264d4ed 100644 --- a/backend/src/routes/v1/webhook.ts +++ b/backend/src/routes/v1/webhook.ts @@ -2,7 +2,7 @@ import express from "express"; const router = express.Router(); import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; import { body, param, query } from "express-validator"; -import { ADMIN, MEMBER, AuthMode } from "../../variables"; +import { ADMIN, AuthMode, MEMBER } from "../../variables"; import { webhookController } from "../../controllers/v1"; router.post( diff --git a/backend/src/routes/v1/workspace.ts b/backend/src/routes/v1/workspace.ts index 2fd178f52..9a4554be6 100644 --- a/backend/src/routes/v1/workspace.ts +++ b/backend/src/routes/v1/workspace.ts @@ -8,8 +8,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; import { membershipController, workspaceController } from "../../controllers/v1"; diff --git a/backend/src/routes/v2/environment.ts b/backend/src/routes/v2/environment.ts index f383aa2fd..e9e7fcad3 100644 --- a/backend/src/routes/v2/environment.ts +++ b/backend/src/routes/v2/environment.ts @@ -9,8 +9,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; router.post( diff --git a/backend/src/routes/v2/organizations.ts b/backend/src/routes/v2/organizations.ts index 6196796cd..b305c1c0a 100644 --- a/backend/src/routes/v2/organizations.ts +++ b/backend/src/routes/v2/organizations.ts @@ -10,9 +10,9 @@ import { body, param } from "express-validator"; import { ACCEPTED, ADMIN, + AuthMode, MEMBER, - OWNER, - AuthMode + OWNER } from "../../variables"; import { organizationsController } from "../../controllers/v2"; diff --git a/backend/src/routes/v2/secret.ts b/backend/src/routes/v2/secret.ts index 9b7526a99..d9fedda20 100644 --- a/backend/src/routes/v2/secret.ts +++ b/backend/src/routes/v2/secret.ts @@ -8,8 +8,8 @@ import { import { body, param, query } from "express-validator"; import { ADMIN, - MEMBER, AuthMode, + MEMBER, PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS, } from "../../variables"; diff --git a/backend/src/routes/v2/secrets.ts b/backend/src/routes/v2/secrets.ts index e347e11c3..52196e983 100644 --- a/backend/src/routes/v2/secrets.ts +++ b/backend/src/routes/v2/secrets.ts @@ -12,8 +12,8 @@ import { body, query } from "express-validator"; import { secretsController } from "../../controllers/v2"; import { ADMIN, - MEMBER, AuthMode, + MEMBER, PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS, SECRET_PERSONAL, diff --git a/backend/src/routes/v2/serviceTokenData.ts b/backend/src/routes/v2/serviceTokenData.ts index aafd1cd47..efdc905fe 100644 --- a/backend/src/routes/v2/serviceTokenData.ts +++ b/backend/src/routes/v2/serviceTokenData.ts @@ -9,8 +9,8 @@ import { import { body, param } from "express-validator"; import { ADMIN, - MEMBER, AuthMode, + MEMBER, PERMISSION_WRITE_SECRETS } from "../../variables"; import { serviceTokenDataController } from "../../controllers/v2"; diff --git a/backend/src/routes/v2/tags.ts b/backend/src/routes/v2/tags.ts index af82db6ac..7ccfd17cd 100644 --- a/backend/src/routes/v2/tags.ts +++ b/backend/src/routes/v2/tags.ts @@ -9,8 +9,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; router.get( diff --git a/backend/src/routes/v2/workspace.ts b/backend/src/routes/v2/workspace.ts index a93bad48e..77ed75eb1 100644 --- a/backend/src/routes/v2/workspace.ts +++ b/backend/src/routes/v2/workspace.ts @@ -9,8 +9,8 @@ import { } from "../../middleware"; import { ADMIN, - MEMBER, - AuthMode + AuthMode, + MEMBER } from "../../variables"; import { workspaceController } from "../../controllers/v2"; diff --git a/backend/src/validation/membership.ts b/backend/src/validation/membership.ts index d788f4461..6c40aa0aa 100644 --- a/backend/src/validation/membership.ts +++ b/backend/src/validation/membership.ts @@ -1,23 +1,16 @@ import { Types } from "mongoose"; import { - IServiceAccount, IServiceTokenData, IUser, Membership, - ServiceAccount, - ServiceTokenData, - User, } from "../models"; -import { validateServiceAccountClientForWorkspace } from "./serviceAccount"; import { validateUserClientForWorkspace } from "./user"; import { validateServiceTokenDataClientForWorkspace } from "./serviceTokenData"; import { MembershipNotFoundError, - UnauthorizedRequestError, } from "../utils/errors"; import { AuthData } from "../interfaces/middleware"; import { ActorType } from "../ee/models"; -import { auth } from "../routes/v1"; /** * Validate authenticated clients for membership with id [membershipId] based diff --git a/backend/src/validation/organization.ts b/backend/src/validation/organization.ts index c4838d154..4ca9811c5 100644 --- a/backend/src/validation/organization.ts +++ b/backend/src/validation/organization.ts @@ -36,9 +36,10 @@ export const validateClientForOrganization = async ({ }); } + let membershipOrg; switch (authData.actor.type) { case ActorType.USER: - const membershipOrg = await validateUserClientForOrganization({ + membershipOrg = await validateUserClientForOrganization({ user: authData.authPayload as IUser, organization, acceptedRoles, diff --git a/backend/src/validation/secrets.ts b/backend/src/validation/secrets.ts index c51e83e23..6c0ac3084 100644 --- a/backend/src/validation/secrets.ts +++ b/backend/src/validation/secrets.ts @@ -1,9 +1,9 @@ import { Types } from "mongoose"; import { ISecret, - Secret, - IUser, IServiceTokenData, + IUser, + Secret, } from "../models"; import { validateUserClientForSecret, validateUserClientForSecrets } from "./user"; import { validateServiceTokenDataClientForSecrets, validateServiceTokenDataClientForWorkspace } from "./serviceTokenData"; diff --git a/backend/src/validation/workspace.ts b/backend/src/validation/workspace.ts index 8c8f4408d..3be8d0dad 100644 --- a/backend/src/validation/workspace.ts +++ b/backend/src/validation/workspace.ts @@ -1,9 +1,9 @@ import net from "net"; import { Types } from "mongoose"; import { - SecretBlindIndexData, - IServiceTokenData, + IServiceTokenData, IUser, + SecretBlindIndexData, Workspace, } from "../models"; import { @@ -78,9 +78,10 @@ export const validateClientForWorkspace = async ({ }); } + let membership; switch (authData.actor.type) { case ActorType.USER: - const membership = await validateUserClientForWorkspace({ + membership = await validateUserClientForWorkspace({ user: authData.authPayload as IUser, workspaceId, environment, diff --git a/frontend/src/hooks/api/auditLogs/queries.tsx b/frontend/src/hooks/api/auditLogs/queries.tsx index 606794876..05148c941 100644 --- a/frontend/src/hooks/api/auditLogs/queries.tsx +++ b/frontend/src/hooks/api/auditLogs/queries.tsx @@ -1,10 +1,11 @@ import { useQuery } from "@tanstack/react-query"; + import { apiRequest } from "@app/config/request"; -import { - AuditLog, - Actor -} from "./types"; + import { EventType, UserAgentType } from "./enums"; +import { + Actor, + AuditLog} from "./types"; export const workspaceKeys = { getAuditLogs: (workspaceId: string, filters: { diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index c5839c9bf..4e5cb66f4 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -1,3 +1,4 @@ +export * from "./auditLogs"; export * from "./auth"; export * from "./bots"; export * from "./incidentContacts"; @@ -15,7 +16,6 @@ export * from "./ssoConfig"; export * from "./subscriptions"; export * from "./tags"; export * from "./trustedIps"; -export * from "./auditLogs"; export * from "./users"; export * from "./webhooks"; export * from "./workspace"; diff --git a/frontend/src/pages/integrations/checkly/create.tsx b/frontend/src/pages/integrations/checkly/create.tsx index de7dd9347..2ae0435cf 100644 --- a/frontend/src/pages/integrations/checkly/create.tsx +++ b/frontend/src/pages/integrations/checkly/create.tsx @@ -11,6 +11,7 @@ import { Select, SelectItem } from "@app/components/v2"; + import { useGetIntegrationAuthApps, useGetIntegrationAuthById diff --git a/frontend/src/views/Project/LogsPage/components/LogsFilter.tsx b/frontend/src/views/Project/LogsPage/components/LogsFilter.tsx index e86c1ae15..d1273f3aa 100644 --- a/frontend/src/views/Project/LogsPage/components/LogsFilter.tsx +++ b/frontend/src/views/Project/LogsPage/components/LogsFilter.tsx @@ -1,18 +1,20 @@ import { Control, Controller, UseFormReset } from "react-hook-form"; -import { - FormControl, - Select, - SelectItem, - Button -} from "@app/components/v2"; -import { eventToNameMap, userAgentTTypeoNameMap } from "~/hooks/api/auditLogs/constants"; -import { useWorkspace } from "@app/context"; -import { useGetAuditLogActorFilterOpts } from "@app/hooks/api"; -import { Actor } from "~/hooks/api/auditLogs/types"; -import { ActorType } from "~/hooks/api/auditLogs/enums"; import { faFilterCircleXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { AuditLogFilterFormData } from "./LogsSection"; + +import { + Button, + FormControl, + Select, + SelectItem} from "@app/components/v2"; +import { useWorkspace } from "@app/context"; +import { useGetAuditLogActorFilterOpts } from "@app/hooks/api"; + +import { eventToNameMap, userAgentTTypeoNameMap } from "~/hooks/api/auditLogs/constants"; +import { ActorType } from "~/hooks/api/auditLogs/enums"; +import { Actor } from "~/hooks/api/auditLogs/types"; + +import { AuditLogFilterFormData } from "./types"; const eventTypes = Object.entries(eventToNameMap).map(([value, label]) => ({ label, value })); const userAgentTypes = Object.entries(userAgentTTypeoNameMap).map(([value, label]) => ({ label, value })); @@ -43,7 +45,14 @@ export const LogsFilter = ({ {actor.metadata.name} ); + default: + return ( + + N/A + + ); } + } return ( diff --git a/frontend/src/views/Project/LogsPage/components/LogsSection.tsx b/frontend/src/views/Project/LogsPage/components/LogsSection.tsx index e9db22c53..5651d0ef0 100644 --- a/frontend/src/views/Project/LogsPage/components/LogsSection.tsx +++ b/frontend/src/views/Project/LogsPage/components/LogsSection.tsx @@ -1,19 +1,11 @@ import { useForm } from "react-hook-form"; -import { LogsFilter } from "./LogsFilter"; -import { LogsTable } from "./LogsTable"; import { yupResolver } from "@hookform/resolvers/yup"; -import * as yup from "yup"; + import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums"; -const schema = yup.object({ - eventType: yup.string() - .oneOf(Object.values(EventType), 'Invalid event type'), - actor: yup.string(), - userAgentType: yup.string() - .oneOf(Object.values(UserAgentType), 'Invalid user agent type'), -}).required(); - -export type AuditLogFilterFormData = yup.InferType; +import { LogsFilter } from "./LogsFilter"; +import { LogsTable } from "./LogsTable"; +import { AuditLogFilterFormData,auditLogFilterFormSchema } from "./types"; export const LogsSection = () => { const { @@ -21,7 +13,7 @@ export const LogsSection = () => { reset, watch, } = useForm({ - resolver: yupResolver(schema) + resolver: yupResolver(auditLogFilterFormSchema) }); const eventType = watch("eventType") as EventType | undefined; @@ -46,4 +38,4 @@ export const LogsSection = () => { /> ); -} \ No newline at end of file + } \ No newline at end of file diff --git a/frontend/src/views/Project/LogsPage/components/LogsTable.tsx b/frontend/src/views/Project/LogsPage/components/LogsTable.tsx index 8b0f769c3..823e3f56d 100644 --- a/frontend/src/views/Project/LogsPage/components/LogsTable.tsx +++ b/frontend/src/views/Project/LogsPage/components/LogsTable.tsx @@ -1,4 +1,5 @@ import { faFile } from "@fortawesome/free-solid-svg-icons"; + import { EmptyState, Table, @@ -12,9 +13,11 @@ import { } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useGetAuditLogs } from "@app/hooks/api"; -import { LogsTableRow } from "./LogsTableRow"; + import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums"; +import { LogsTableRow } from "./LogsTableRow"; + type Props = { eventType: EventType | undefined; userAgentType: UserAgentType | undefined; diff --git a/frontend/src/views/Project/LogsPage/components/LogsTableRow.tsx b/frontend/src/views/Project/LogsPage/components/LogsTableRow.tsx index 152fbd12f..05dfec9b0 100644 --- a/frontend/src/views/Project/LogsPage/components/LogsTableRow.tsx +++ b/frontend/src/views/Project/LogsPage/components/LogsTableRow.tsx @@ -1,11 +1,12 @@ -import { AuditLog, Actor, Event } from "~/hooks/api/auditLogs/types"; -import { ActorType, EventType } from "~/hooks/api/auditLogs/enums"; -import { eventToNameMap, userAgentTTypeoNameMap } from "~/hooks/api/auditLogs/constants"; import { Td, Tr } from "@app/components/v2"; +import { eventToNameMap, userAgentTTypeoNameMap } from "~/hooks/api/auditLogs/constants"; +import { ActorType, EventType } from "~/hooks/api/auditLogs/enums"; +import { Actor, AuditLog, Event } from "~/hooks/api/auditLogs/types"; + type Props = { auditLog: AuditLog } @@ -29,6 +30,10 @@ export const LogsTableRow = ({

Service token

); + default: + return ( + + ); } } @@ -84,16 +89,16 @@ export const LogsTableRow = ({ const formatDate = (dateToFormat: string) => { const date = new Date(dateToFormat); const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); let hours = date.getHours(); - const minutes = String(date.getMinutes()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, "0"); // convert from 24h to 12h format - const period = hours >= 12 ? 'PM' : 'AM'; - hours = hours % 12; - hours = hours ? hours : 12; // the hour '0' should be '12' + const period = hours >= 12 ? "PM" : "AM"; + hours %= 12; + hours = hours || 12; // the hour '0' should be '12' const formattedDate = `${day}-${month}-${year} at ${hours}:${minutes} ${period}`; return formattedDate; diff --git a/frontend/src/views/Project/LogsPage/components/types.tsx b/frontend/src/views/Project/LogsPage/components/types.tsx new file mode 100644 index 000000000..025818578 --- /dev/null +++ b/frontend/src/views/Project/LogsPage/components/types.tsx @@ -0,0 +1,13 @@ +import * as yup from "yup"; + +import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums"; + +export const auditLogFilterFormSchema = yup.object({ + eventType: yup.string() + .oneOf(Object.values(EventType), "Invalid event type"), + actor: yup.string(), + userAgentType: yup.string() + .oneOf(Object.values(UserAgentType), "Invalid user agent type"), +}).required(); + +export type AuditLogFilterFormData = yup.InferType; \ No newline at end of file