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

View File

@@ -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
*/

View File

@@ -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(

View File

@@ -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(

View File

@@ -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(

View File

@@ -15,8 +15,8 @@ import { authLimiter } from "../../../helpers/rateLimiter";
import {
ACCEPTED,
ADMIN,
OWNER,
AuthMode
AuthMode,
OWNER
} from "../../../variables";
router.get(

View File

@@ -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
);

View File

@@ -11,8 +11,8 @@ interface EventScope {
}
type ValidEventScope =
| Required<Pick<EventScope, 'workspaceId'>>
| Required<Pick<EventScope, 'organizationId'>>
| Required<Pick<EventScope, "workspaceId">>
| Required<Pick<EventScope, "organizationId">>
| Required<EventScope>
export default class EEAuditLogService {

View File

@@ -28,8 +28,8 @@ import {
AuthMode
} from "../variables";
import {
UserAuthData,
ServiceTokenAuthData
ServiceTokenAuthData,
UserAuthData
} from "../interfaces/middleware";
import { ActorType } from "../ee/models";

View File

@@ -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";

View File

@@ -4,8 +4,8 @@ import {
IUser,
} from "../../models";
import {
UserActor,
ServiceActor,
UserActor,
UserAgentType
} from "../../ee/models";

View File

@@ -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",

View File

@@ -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";

View File

@@ -9,8 +9,8 @@ import {
} from "../../middleware";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
import { integrationAuthController } from "../../controllers/v1";

View File

@@ -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(

View File

@@ -9,9 +9,9 @@ import {
import {
ACCEPTED,
ADMIN,
AuthMode,
MEMBER,
OWNER,
AuthMode
OWNER
} from "../../variables";
import { organizationController } from "../../controllers/v1";

View File

@@ -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

View File

@@ -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(
"/",

View File

@@ -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(
"/",

View File

@@ -9,8 +9,8 @@ import {
import { body } from "express-validator";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
import { serviceTokenController } from "../../controllers/v1";

View File

@@ -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(

View File

@@ -8,8 +8,8 @@ import {
} from "../../middleware";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
import { membershipController, workspaceController } from "../../controllers/v1";

View File

@@ -9,8 +9,8 @@ import {
} from "../../middleware";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
router.post(

View File

@@ -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";

View File

@@ -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";

View File

@@ -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,

View File

@@ -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";

View File

@@ -9,8 +9,8 @@ import {
} from "../../middleware";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
router.get(

View File

@@ -9,8 +9,8 @@ import {
} from "../../middleware";
import {
ADMIN,
MEMBER,
AuthMode
AuthMode,
MEMBER
} from "../../variables";
import { workspaceController } from "../../controllers/v2";

View File

@@ -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

View File

@@ -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,

View File

@@ -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";

View File

@@ -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,

View File

@@ -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: {

View File

@@ -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";

View File

@@ -11,6 +11,7 @@ import {
Select,
SelectItem
} from "@app/components/v2";
import {
useGetIntegrationAuthApps,
useGetIntegrationAuthById

View File

@@ -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}
</SelectItem>
);
default:
return (
<SelectItem value="actor-none" key="actor-none">
N/A
</SelectItem>
);
}
}
return (

View File

@@ -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<typeof schema>;
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<AuditLogFilterFormData>({
resolver: yupResolver(schema)
resolver: yupResolver(auditLogFilterFormSchema)
});
const eventType = watch("eventType") as EventType | undefined;
@@ -46,4 +38,4 @@ export const LogsSection = () => {
/>
</div>
);
}
}

View File

@@ -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;

View File

@@ -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 = ({
<p>Service token</p>
</Td>
);
default:
return (
<Td />
);
}
}
@@ -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;

View File

@@ -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>;