Run linter

This commit is contained in:
Tuan Dang
2023-08-07 11:25:06 +07:00
parent 373dfff8e0
commit 648968c453
40 changed files with 130 additions and 106 deletions
@@ -1,20 +1,19 @@
import { Request, Response } from "express"; import { Request, Response } from "express";
import { PipelineStage, Types } from "mongoose"; import { PipelineStage, Types } from "mongoose";
import { Secret, Membership, User, ServiceTokenData } from "../../../models"; import { Membership, Secret, ServiceTokenData, User } from "../../../models";
import { import {
ActorType,
AuditLog,
FolderVersion, FolderVersion,
IPType, IPType,
ISecretVersion, ISecretVersion,
Log, Log,
SecretSnapshot, SecretSnapshot,
SecretVersion, SecretVersion,
ServiceActor,
TFolderRootVersionSchema, TFolderRootVersionSchema,
TrustedIP, TrustedIP,
AuditLog, UserActor
Actor,
ActorType,
UserActor,
ServiceActor
} from "../../models"; } from "../../models";
import { EESecretService } from "../../services"; import { EESecretService } from "../../services";
import { getLatestSecretVersionIds } from "../../helpers/secretVersion"; 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 req
* @param res * @param res
*/ */
@@ -608,6 +607,8 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => {
const eventType = req.query.eventType; const eventType = req.query.eventType;
const userAgentType = req.query.userAgentType; const userAgentType = req.query.userAgentType;
const actor = req.query.actor as string | undefined; 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({ const auditLogs = await AuditLog.find({
workspace: new Types.ObjectId(workspaceId), 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({ return res.status(200).send({
auditLogs 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 req
* @param res * @param res
*/ */
+1 -1
View File
@@ -8,7 +8,7 @@ import {
import { body, param, query } from "express-validator"; import { body, param, query } from "express-validator";
import { organizationsController } from "../../controllers/v1"; import { organizationsController } from "../../controllers/v1";
import { import {
ACCEPTED, ADMIN, MEMBER, OWNER, AuthMode ACCEPTED, ADMIN, AuthMode, MEMBER, OWNER
} from "../../../variables"; } from "../../../variables";
router.get( router.get(
+2 -2
View File
@@ -9,10 +9,10 @@ import { body, param, query } from "express-validator";
import { secretController } from "../../controllers/v1"; import { secretController } from "../../controllers/v1";
import { import {
ADMIN, ADMIN,
AuthMode,
MEMBER, MEMBER,
PERMISSION_READ_SECRETS, PERMISSION_READ_SECRETS,
PERMISSION_WRITE_SECRETS, PERMISSION_WRITE_SECRETS
AuthMode
} from "../../../variables"; } from "../../../variables";
router.get( router.get(
+1 -1
View File
@@ -8,7 +8,7 @@ import {
validateRequest, validateRequest,
} from "../../../middleware"; } from "../../../middleware";
import { param } from "express-validator"; import { param } from "express-validator";
import { ADMIN, MEMBER, AuthMode } from "../../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../../variables";
import { secretSnapshotController } from "../../controllers/v1"; import { secretSnapshotController } from "../../controllers/v1";
router.get( router.get(
+2 -2
View File
@@ -15,8 +15,8 @@ import { authLimiter } from "../../../helpers/rateLimiter";
import { import {
ACCEPTED, ACCEPTED,
ADMIN, ADMIN,
OWNER, AuthMode,
AuthMode OWNER
} from "../../../variables"; } from "../../../variables";
router.get( router.get(
+4 -2
View File
@@ -8,8 +8,8 @@ import {
import { body, param, query } from "express-validator"; import { body, param, query } from "express-validator";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../../variables"; } from "../../../variables";
import { workspaceController } from "../../controllers/v1"; import { workspaceController } from "../../controllers/v1";
import { EventType, UserAgentType } from "../../models"; import { EventType, UserAgentType } from "../../models";
@@ -97,6 +97,8 @@ router.get(
query("eventType").isString().isIn(Object.values(EventType)).optional({ nullable: true }), query("eventType").isString().isIn(Object.values(EventType)).optional({ nullable: true }),
query("userAgentType").isString().isIn(Object.values(UserAgentType)).optional({ nullable: true }), query("userAgentType").isString().isIn(Object.values(UserAgentType)).optional({ nullable: true }),
query("actor").isString().optional({ nullable: true }), query("actor").isString().optional({ nullable: true }),
query("offset").isString().default("0"),
query("limit").isString().default("20"),
validateRequest, validateRequest,
workspaceController.getWorkspaceAuditLogs workspaceController.getWorkspaceAuditLogs
); );
+2 -2
View File
@@ -11,8 +11,8 @@ interface EventScope {
} }
type ValidEventScope = type ValidEventScope =
| Required<Pick<EventScope, 'workspaceId'>> | Required<Pick<EventScope, "workspaceId">>
| Required<Pick<EventScope, 'organizationId'>> | Required<Pick<EventScope, "organizationId">>
| Required<EventScope> | Required<EventScope>
export default class EEAuditLogService { export default class EEAuditLogService {
+2 -2
View File
@@ -28,8 +28,8 @@ import {
AuthMode AuthMode
} from "../variables"; } from "../variables";
import { import {
UserAuthData, ServiceTokenAuthData,
ServiceTokenAuthData UserAuthData
} from "../interfaces/middleware"; } from "../interfaces/middleware";
import { ActorType } from "../ee/models"; import { ActorType } from "../ee/models";
+2 -2
View File
@@ -13,7 +13,7 @@ import {
SecretBlindIndexData, SecretBlindIndexData,
ServiceTokenData, ServiceTokenData,
} from "../models"; } from "../models";
import { SecretVersion, EventType } from "../ee/models"; import { EventType, SecretVersion } from "../ee/models";
import { import {
BadRequestError, BadRequestError,
InternalServerError, InternalServerError,
@@ -40,7 +40,7 @@ import {
} from "../utils/crypto"; } from "../utils/crypto";
import { TelemetryService } from "../services"; import { TelemetryService } from "../services";
import { client, getEncryptionKey, getRootEncryptionKey } from "../config"; 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 { getAuthDataPayloadIdObj, getAuthDataPayloadUserObj } from "../utils/auth";
import { getFolderByPath, getFolderIdFromServiceToken } from "../services/FolderService"; import { getFolderByPath, getFolderIdFromServiceToken } from "../services/FolderService";
import picomatch from "picomatch"; import picomatch from "picomatch";
+1 -1
View File
@@ -4,8 +4,8 @@ import {
IUser, IUser,
} from "../../models"; } from "../../models";
import { import {
UserActor,
ServiceActor, ServiceActor,
UserActor,
UserAgentType UserAgentType
} from "../../ee/models"; } from "../../ee/models";
+1 -1
View File
@@ -8,7 +8,7 @@ import {
validateRequest, validateRequest,
} from "../../middleware"; } from "../../middleware";
import { botController } from "../../controllers/v1"; import { botController } from "../../controllers/v1";
import { ADMIN, MEMBER, AuthMode } from "../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../variables";
router.get( router.get(
"/:workspaceId", "/:workspaceId",
+2 -2
View File
@@ -8,8 +8,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
import { body, param } from "express-validator"; import { body, param } from "express-validator";
import { integrationController } from "../../controllers/v1"; import { integrationController } from "../../controllers/v1";
+2 -2
View File
@@ -9,8 +9,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
import { integrationAuthController } from "../../controllers/v1"; import { integrationAuthController } from "../../controllers/v1";
+1 -1
View File
@@ -6,7 +6,7 @@ import {
validateRequest, validateRequest,
} from "../../middleware"; } from "../../middleware";
import { body, param } from "express-validator"; import { body, param } from "express-validator";
import { ADMIN, MEMBER, AuthMode } from "../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../variables";
import { keyController } from "../../controllers/v1"; import { keyController } from "../../controllers/v1";
router.post( router.post(
+2 -2
View File
@@ -9,9 +9,9 @@ import {
import { import {
ACCEPTED, ACCEPTED,
ADMIN, ADMIN,
AuthMode,
MEMBER, MEMBER,
OWNER, OWNER
AuthMode
} from "../../variables"; } from "../../variables";
import { organizationController } from "../../controllers/v1"; import { organizationController } from "../../controllers/v1";
+2 -2
View File
@@ -10,8 +10,8 @@ import { body, param, query } from "express-validator";
import { secretController } from "../../controllers/v1"; import { secretController } from "../../controllers/v1";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
// note to devs: these endpoints will be deprecated in favor of v2 // note to devs: these endpoints will be deprecated in favor of v2
+1 -1
View File
@@ -3,7 +3,7 @@ const router = express.Router();
import { body, param, query } from "express-validator"; import { body, param, query } from "express-validator";
import { secretImportController } from "../../controllers/v1"; import { secretImportController } from "../../controllers/v1";
import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware";
import { ADMIN, MEMBER, AuthMode } from "../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../variables";
router.post( router.post(
"/", "/",
+1 -1
View File
@@ -12,7 +12,7 @@ import {
getFolders, getFolders,
updateFolderById, updateFolderById,
} from "../../controllers/v1/secretsFolderController"; } from "../../controllers/v1/secretsFolderController";
import { ADMIN, MEMBER, AuthMode } from "../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../variables";
router.post( router.post(
"/", "/",
+2 -2
View File
@@ -9,8 +9,8 @@ import {
import { body } from "express-validator"; import { body } from "express-validator";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
import { serviceTokenController } from "../../controllers/v1"; import { serviceTokenController } from "../../controllers/v1";
+1 -1
View File
@@ -2,7 +2,7 @@ import express from "express";
const router = express.Router(); const router = express.Router();
import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware";
import { body, param, query } from "express-validator"; import { body, param, query } from "express-validator";
import { ADMIN, MEMBER, AuthMode } from "../../variables"; import { ADMIN, AuthMode, MEMBER } from "../../variables";
import { webhookController } from "../../controllers/v1"; import { webhookController } from "../../controllers/v1";
router.post( router.post(
+2 -2
View File
@@ -8,8 +8,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
import { membershipController, workspaceController } from "../../controllers/v1"; import { membershipController, workspaceController } from "../../controllers/v1";
+2 -2
View File
@@ -9,8 +9,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
router.post( router.post(
+2 -2
View File
@@ -10,9 +10,9 @@ import { body, param } from "express-validator";
import { import {
ACCEPTED, ACCEPTED,
ADMIN, ADMIN,
AuthMode,
MEMBER, MEMBER,
OWNER, OWNER
AuthMode
} from "../../variables"; } from "../../variables";
import { organizationsController } from "../../controllers/v2"; import { organizationsController } from "../../controllers/v2";
+1 -1
View File
@@ -8,8 +8,8 @@ import {
import { body, param, query } from "express-validator"; import { body, param, query } from "express-validator";
import { import {
ADMIN, ADMIN,
MEMBER,
AuthMode, AuthMode,
MEMBER,
PERMISSION_READ_SECRETS, PERMISSION_READ_SECRETS,
PERMISSION_WRITE_SECRETS, PERMISSION_WRITE_SECRETS,
} from "../../variables"; } from "../../variables";
+1 -1
View File
@@ -12,8 +12,8 @@ import { body, query } from "express-validator";
import { secretsController } from "../../controllers/v2"; import { secretsController } from "../../controllers/v2";
import { import {
ADMIN, ADMIN,
MEMBER,
AuthMode, AuthMode,
MEMBER,
PERMISSION_READ_SECRETS, PERMISSION_READ_SECRETS,
PERMISSION_WRITE_SECRETS, PERMISSION_WRITE_SECRETS,
SECRET_PERSONAL, SECRET_PERSONAL,
+1 -1
View File
@@ -9,8 +9,8 @@ import {
import { body, param } from "express-validator"; import { body, param } from "express-validator";
import { import {
ADMIN, ADMIN,
MEMBER,
AuthMode, AuthMode,
MEMBER,
PERMISSION_WRITE_SECRETS PERMISSION_WRITE_SECRETS
} from "../../variables"; } from "../../variables";
import { serviceTokenDataController } from "../../controllers/v2"; import { serviceTokenDataController } from "../../controllers/v2";
+2 -2
View File
@@ -9,8 +9,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
router.get( router.get(
+2 -2
View File
@@ -9,8 +9,8 @@ import {
} from "../../middleware"; } from "../../middleware";
import { import {
ADMIN, ADMIN,
MEMBER, AuthMode,
AuthMode MEMBER
} from "../../variables"; } from "../../variables";
import { workspaceController } from "../../controllers/v2"; import { workspaceController } from "../../controllers/v2";
-7
View File
@@ -1,23 +1,16 @@
import { Types } from "mongoose"; import { Types } from "mongoose";
import { import {
IServiceAccount,
IServiceTokenData, IServiceTokenData,
IUser, IUser,
Membership, Membership,
ServiceAccount,
ServiceTokenData,
User,
} from "../models"; } from "../models";
import { validateServiceAccountClientForWorkspace } from "./serviceAccount";
import { validateUserClientForWorkspace } from "./user"; import { validateUserClientForWorkspace } from "./user";
import { validateServiceTokenDataClientForWorkspace } from "./serviceTokenData"; import { validateServiceTokenDataClientForWorkspace } from "./serviceTokenData";
import { import {
MembershipNotFoundError, MembershipNotFoundError,
UnauthorizedRequestError,
} from "../utils/errors"; } from "../utils/errors";
import { AuthData } from "../interfaces/middleware"; import { AuthData } from "../interfaces/middleware";
import { ActorType } from "../ee/models"; import { ActorType } from "../ee/models";
import { auth } from "../routes/v1";
/** /**
* Validate authenticated clients for membership with id [membershipId] based * Validate authenticated clients for membership with id [membershipId] based
+2 -1
View File
@@ -36,9 +36,10 @@ export const validateClientForOrganization = async ({
}); });
} }
let membershipOrg;
switch (authData.actor.type) { switch (authData.actor.type) {
case ActorType.USER: case ActorType.USER:
const membershipOrg = await validateUserClientForOrganization({ membershipOrg = await validateUserClientForOrganization({
user: authData.authPayload as IUser, user: authData.authPayload as IUser,
organization, organization,
acceptedRoles, acceptedRoles,
+2 -2
View File
@@ -1,9 +1,9 @@
import { Types } from "mongoose"; import { Types } from "mongoose";
import { import {
ISecret, ISecret,
Secret,
IUser,
IServiceTokenData, IServiceTokenData,
IUser,
Secret,
} from "../models"; } from "../models";
import { validateUserClientForSecret, validateUserClientForSecrets } from "./user"; import { validateUserClientForSecret, validateUserClientForSecrets } from "./user";
import { validateServiceTokenDataClientForSecrets, validateServiceTokenDataClientForWorkspace } from "./serviceTokenData"; import { validateServiceTokenDataClientForSecrets, validateServiceTokenDataClientForWorkspace } from "./serviceTokenData";
+3 -2
View File
@@ -1,9 +1,9 @@
import net from "net"; import net from "net";
import { Types } from "mongoose"; import { Types } from "mongoose";
import { import {
SecretBlindIndexData,
IServiceTokenData, IServiceTokenData,
IUser, IUser,
SecretBlindIndexData,
Workspace, Workspace,
} from "../models"; } from "../models";
import { import {
@@ -78,9 +78,10 @@ export const validateClientForWorkspace = async ({
}); });
} }
let membership;
switch (authData.actor.type) { switch (authData.actor.type) {
case ActorType.USER: case ActorType.USER:
const membership = await validateUserClientForWorkspace({ membership = await validateUserClientForWorkspace({
user: authData.authPayload as IUser, user: authData.authPayload as IUser,
workspaceId, workspaceId,
environment, environment,
+5 -4
View File
@@ -1,10 +1,11 @@
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request"; import { apiRequest } from "@app/config/request";
import {
AuditLog,
Actor
} from "./types";
import { EventType, UserAgentType } from "./enums"; import { EventType, UserAgentType } from "./enums";
import {
Actor,
AuditLog} from "./types";
export const workspaceKeys = { export const workspaceKeys = {
getAuditLogs: (workspaceId: string, filters: { getAuditLogs: (workspaceId: string, filters: {
+1 -1
View File
@@ -1,3 +1,4 @@
export * from "./auditLogs";
export * from "./auth"; export * from "./auth";
export * from "./bots"; export * from "./bots";
export * from "./incidentContacts"; export * from "./incidentContacts";
@@ -15,7 +16,6 @@ export * from "./ssoConfig";
export * from "./subscriptions"; export * from "./subscriptions";
export * from "./tags"; export * from "./tags";
export * from "./trustedIps"; export * from "./trustedIps";
export * from "./auditLogs";
export * from "./users"; export * from "./users";
export * from "./webhooks"; export * from "./webhooks";
export * from "./workspace"; export * from "./workspace";
@@ -11,6 +11,7 @@ import {
Select, Select,
SelectItem SelectItem
} from "@app/components/v2"; } from "@app/components/v2";
import { import {
useGetIntegrationAuthApps, useGetIntegrationAuthApps,
useGetIntegrationAuthById useGetIntegrationAuthById
@@ -1,18 +1,20 @@
import { Control, Controller, UseFormReset } from "react-hook-form"; 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 { faFilterCircleXmark } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; 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 eventTypes = Object.entries(eventToNameMap).map(([value, label]) => ({ label, value }));
const userAgentTypes = Object.entries(userAgentTTypeoNameMap).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} {actor.metadata.name}
</SelectItem> </SelectItem>
); );
default:
return (
<SelectItem value="actor-none" key="actor-none">
N/A
</SelectItem>
);
} }
} }
return ( return (
@@ -1,19 +1,11 @@
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { LogsFilter } from "./LogsFilter";
import { LogsTable } from "./LogsTable";
import { yupResolver } from "@hookform/resolvers/yup"; import { yupResolver } from "@hookform/resolvers/yup";
import * as yup from "yup";
import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums"; import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums";
const schema = yup.object({ import { LogsFilter } from "./LogsFilter";
eventType: yup.string() import { LogsTable } from "./LogsTable";
.oneOf(Object.values(EventType), 'Invalid event type'), import { AuditLogFilterFormData,auditLogFilterFormSchema } from "./types";
actor: yup.string(),
userAgentType: yup.string()
.oneOf(Object.values(UserAgentType), 'Invalid user agent type'),
}).required();
export type AuditLogFilterFormData = yup.InferType<typeof schema>;
export const LogsSection = () => { export const LogsSection = () => {
const { const {
@@ -21,7 +13,7 @@ export const LogsSection = () => {
reset, reset,
watch, watch,
} = useForm<AuditLogFilterFormData>({ } = useForm<AuditLogFilterFormData>({
resolver: yupResolver(schema) resolver: yupResolver(auditLogFilterFormSchema)
}); });
const eventType = watch("eventType") as EventType | undefined; const eventType = watch("eventType") as EventType | undefined;
@@ -1,4 +1,5 @@
import { faFile } from "@fortawesome/free-solid-svg-icons"; import { faFile } from "@fortawesome/free-solid-svg-icons";
import { import {
EmptyState, EmptyState,
Table, Table,
@@ -12,9 +13,11 @@ import {
} from "@app/components/v2"; } from "@app/components/v2";
import { useWorkspace } from "@app/context"; import { useWorkspace } from "@app/context";
import { useGetAuditLogs } from "@app/hooks/api"; import { useGetAuditLogs } from "@app/hooks/api";
import { LogsTableRow } from "./LogsTableRow";
import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums"; import { EventType, UserAgentType } from "~/hooks/api/auditLogs/enums";
import { LogsTableRow } from "./LogsTableRow";
type Props = { type Props = {
eventType: EventType | undefined; eventType: EventType | undefined;
userAgentType: UserAgentType | undefined; userAgentType: UserAgentType | undefined;
@@ -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 { import {
Td, Td,
Tr Tr
} from "@app/components/v2"; } 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 = { type Props = {
auditLog: AuditLog auditLog: AuditLog
} }
@@ -29,6 +30,10 @@ export const LogsTableRow = ({
<p>Service token</p> <p>Service token</p>
</Td> </Td>
); );
default:
return (
<Td />
);
} }
} }
@@ -84,16 +89,16 @@ export const LogsTableRow = ({
const formatDate = (dateToFormat: string) => { const formatDate = (dateToFormat: string) => {
const date = new Date(dateToFormat); const date = new Date(dateToFormat);
const year = date.getFullYear(); const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, "0");
let hours = date.getHours(); 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 // convert from 24h to 12h format
const period = hours >= 12 ? 'PM' : 'AM'; const period = hours >= 12 ? "PM" : "AM";
hours = hours % 12; hours %= 12;
hours = hours ? hours : 12; // the hour '0' should be '12' hours = hours || 12; // the hour '0' should be '12'
const formattedDate = `${day}-${month}-${year} at ${hours}:${minutes} ${period}`; const formattedDate = `${day}-${month}-${year} at ${hours}:${minutes} ${period}`;
return formattedDate; return formattedDate;
@@ -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<typeof auditLogFilterFormSchema>;