mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 16:27:40 +00:00
Fix audit logs UI rendering
This commit is contained in:
@@ -3,6 +3,7 @@ import { PipelineStage, Types } from "mongoose";
|
|||||||
import {
|
import {
|
||||||
Folder,
|
Folder,
|
||||||
MachineIdentity,
|
MachineIdentity,
|
||||||
|
MachineMembership,
|
||||||
Membership,
|
Membership,
|
||||||
Secret,
|
Secret,
|
||||||
ServiceTokenData,
|
ServiceTokenData,
|
||||||
@@ -669,6 +670,21 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => {
|
|||||||
ProjectPermissionSub.AuditLogs
|
ProjectPermissionSub.AuditLogs
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let actorMetadataQuery = "";
|
||||||
|
if (actor) {
|
||||||
|
switch (actor?.split("-", 2)[0]) {
|
||||||
|
case ActorType.USER:
|
||||||
|
actorMetadataQuery = "actor.metadata.userId";
|
||||||
|
break;
|
||||||
|
case ActorType.SERVICE:
|
||||||
|
actorMetadataQuery = "actor.metadata.serviceId";
|
||||||
|
break;
|
||||||
|
case ActorType.MACHINE:
|
||||||
|
actorMetadataQuery = "actor.metadata.machineId";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
workspace: new Types.ObjectId(workspaceId),
|
workspace: new Types.ObjectId(workspaceId),
|
||||||
...(eventType
|
...(eventType
|
||||||
@@ -684,13 +700,9 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => {
|
|||||||
...(actor
|
...(actor
|
||||||
? {
|
? {
|
||||||
"actor.type": actor.substring(0, actor.lastIndexOf("-")),
|
"actor.type": actor.substring(0, actor.lastIndexOf("-")),
|
||||||
...(actor.split("-", 2)[0] === ActorType.USER
|
...({
|
||||||
? {
|
[actorMetadataQuery]: actor.substring(actor.lastIndexOf("-") + 1)
|
||||||
"actor.metadata.userId": actor.substring(actor.lastIndexOf("-") + 1)
|
})
|
||||||
}
|
|
||||||
: {
|
|
||||||
"actor.metadata.serviceId": actor.substring(actor.lastIndexOf("-") + 1)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
...(startDate || endDate
|
...(startDate || endDate
|
||||||
@@ -702,7 +714,9 @@ export const getWorkspaceAuditLogs = async (req: Request, res: Response) => {
|
|||||||
}
|
}
|
||||||
: {})
|
: {})
|
||||||
};
|
};
|
||||||
|
|
||||||
const auditLogs = await AuditLog.find(query).sort({ createdAt: -1 }).skip(offset).limit(limit);
|
const auditLogs = await AuditLog.find(query).sort({ createdAt: -1 }).skip(offset).limit(limit);
|
||||||
|
|
||||||
return res.status(200).send({
|
return res.status(200).send({
|
||||||
auditLogs
|
auditLogs
|
||||||
});
|
});
|
||||||
@@ -731,6 +745,7 @@ export const getWorkspaceAuditLogActorFilterOpts = async (req: Request, res: Res
|
|||||||
const userIds = await Membership.distinct("user", {
|
const userIds = await Membership.distinct("user", {
|
||||||
workspace: new Types.ObjectId(workspaceId)
|
workspace: new Types.ObjectId(workspaceId)
|
||||||
});
|
});
|
||||||
|
|
||||||
const userActors: UserActor[] = (
|
const userActors: UserActor[] = (
|
||||||
await User.find({
|
await User.find({
|
||||||
_id: {
|
_id: {
|
||||||
@@ -757,9 +772,15 @@ export const getWorkspaceAuditLogActorFilterOpts = async (req: Request, res: Res
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const machineIds = await MachineMembership.distinct("machineIdentity", {
|
||||||
|
workspace: new Types.ObjectId(workspaceId)
|
||||||
|
});
|
||||||
|
|
||||||
const machineActors: MachineActor[] = (
|
const machineActors: MachineActor[] = (
|
||||||
await MachineIdentity.find({
|
await MachineIdentity.find({
|
||||||
workspace: new Types.ObjectId(workspaceId)
|
_id: {
|
||||||
|
$in: machineIds
|
||||||
|
}
|
||||||
})
|
})
|
||||||
).map((machineIdentity) => ({
|
).map((machineIdentity) => ({
|
||||||
type: ActorType.MACHINE,
|
type: ActorType.MACHINE,
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class EELicenseService {
|
|||||||
rbac: false,
|
rbac: false,
|
||||||
customRateLimits: false,
|
customRateLimits: false,
|
||||||
customAlerts: false,
|
customAlerts: false,
|
||||||
auditLogs: true,
|
auditLogs: false,
|
||||||
auditLogsRetentionDays: 0,
|
auditLogsRetentionDays: 0,
|
||||||
samlSSO: false,
|
samlSSO: false,
|
||||||
status: null,
|
status: null,
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ interface ServiceActorMetadata {
|
|||||||
name: string;
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface MachineActorMetadata {
|
||||||
|
machineId: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
interface UserActor {
|
interface UserActor {
|
||||||
type: ActorType.USER;
|
type: ActorType.USER;
|
||||||
metadata: UserActorMetadata;
|
metadata: UserActorMetadata;
|
||||||
@@ -22,7 +27,7 @@ export interface ServiceActor {
|
|||||||
|
|
||||||
export interface MachineActor {
|
export interface MachineActor {
|
||||||
type: ActorType.MACHINE;
|
type: ActorType.MACHINE;
|
||||||
metadata: ServiceActorMetadata;
|
metadata: MachineActorMetadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Actor = UserActor | ServiceActor | MachineActor;
|
export type Actor = UserActor | ServiceActor | MachineActor;
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ export const LogsFilter = ({ control, reset }: Props) => {
|
|||||||
case ActorType.MACHINE:
|
case ActorType.MACHINE:
|
||||||
return (
|
return (
|
||||||
<SelectItem
|
<SelectItem
|
||||||
value={`${actor.type}-${actor.metadata.serviceId}`}
|
value={`${actor.type}-${actor.metadata.machineId}`}
|
||||||
key={`machine-filter-${actor.metadata.serviceId}`}
|
key={`machine-filter-${actor.metadata.machineId}`}
|
||||||
>
|
>
|
||||||
{actor.metadata.name}
|
{actor.metadata.name}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ const AUDIT_LOG_LIMIT = 15;
|
|||||||
|
|
||||||
export const LogsTable = ({ eventType, userAgentType, actor, startDate, endDate }: Props) => {
|
export const LogsTable = ({ eventType, userAgentType, actor, startDate, endDate }: Props) => {
|
||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
|
|
||||||
const { data, isLoading, isFetchingNextPage, hasNextPage, fetchNextPage } = useGetAuditLogs(
|
const { data, isLoading, isFetchingNextPage, hasNextPage, fetchNextPage } = useGetAuditLogs(
|
||||||
currentWorkspace?._id ?? "",
|
currentWorkspace?._id ?? "",
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user