From 80e36cd9facb56b330be3e4f1c5ba253cc78c308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Bertron?= Date: Tue, 31 Jul 2018 14:04:26 +0200 Subject: Add audit logs in various modules - Videos - Videos comments - Users - Videos channels - Videos abuses - Custom config --- server/helpers/audit-logger.ts | 138 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 135 insertions(+), 3 deletions(-) (limited to 'server/helpers') diff --git a/server/helpers/audit-logger.ts b/server/helpers/audit-logger.ts index 4b237316f..f6eea7d90 100644 --- a/server/helpers/audit-logger.ts +++ b/server/helpers/audit-logger.ts @@ -5,7 +5,9 @@ import * as flatten from 'flat' import * as winston from 'winston' import { CONFIG } from '../initializers' import { jsonLoggerFormat, labelFormatter } from './logger' -import { VideoDetails } from '../../shared' +import { VideoDetails, User, VideoChannel, VideoAbuse } from '../../shared' +import { VideoComment } from '../../shared/models/videos/video-comment.model' +import { CustomConfig } from '../../shared/models/server/custom-config.model' enum AUDIT_TYPE { CREATE = 'create', @@ -111,13 +113,143 @@ const videoKeysToKeep = [ 'support', 'commentsEnabled' ] -class VideoAuditView extends AuditEntity { +class VideoAuditView extends EntityAuditView { constructor (private video: VideoDetails) { super(videoKeysToKeep, 'video', video) } } +const commentKeysToKeep = [ + 'id', + 'text', + 'threadId', + 'inReplyToCommentId', + 'videoId', + 'createdAt', + 'updatedAt', + 'totalReplies', + 'account-id', + 'account-uuid', + 'account-name' +] +class CommentAuditView extends EntityAuditView { + constructor (private comment: VideoComment) { + super(commentKeysToKeep, 'comment', comment) + } +} + +const userKeysToKeep = [ + 'id', + 'username', + 'email', + 'nsfwPolicy', + 'autoPlayVideo', + 'role', + 'videoQuota', + 'createdAt', + 'account-id', + 'account-uuid', + 'account-name', + 'account-followingCount', + 'account-followersCount', + 'account-createdAt', + 'account-updatedAt', + 'account-avatar-path', + 'account-avatar-createdAt', + 'account-avatar-updatedAt', + 'account-displayName', + 'account-description', + 'videoChannels' +] +class UserAuditView extends EntityAuditView { + constructor (private user: User) { + super(userKeysToKeep, 'user', user) + } +} + +const channelKeysToKeep = [ + 'id', + 'uuid', + 'name', + 'followingCount', + 'followersCount', + 'createdAt', + 'updatedAt', + 'avatar-path', + 'avatar-createdAt', + 'avatar-updatedAt', + 'displayName', + 'description', + 'support', + 'isLocal', + 'ownerAccount-id', + 'ownerAccount-uuid', + 'ownerAccount-name', + 'ownerAccount-displayedName' +] +class VideoChannelAuditView extends EntityAuditView { + constructor (private channel: VideoChannel) { + super(channelKeysToKeep, 'channel', channel) + } +} + +const videoAbuseKeysToKeep = [ + 'id', + 'reason', + 'reporterAccount', + 'video-id', + 'video-name', + 'video-uuid', + 'createdAt' +] +class VideoAbuseAuditView extends EntityAuditView { + constructor (private videoAbuse: VideoAbuse) { + super(videoAbuseKeysToKeep, 'abuse', videoAbuse) + } +} + +const customConfigKeysToKeep = [ + 'instance-name', + 'instance-shortDescription', + 'instance-description', + 'instance-terms', + 'instance-defaultClientRoute', + 'instance-defaultNSFWPolicy', + 'instance-customizations-javascript', + 'instance-customizations-css', + 'services-twitter-username', + 'services-twitter-whitelisted', + 'cache-previews-size', + 'cache-captions-size', + 'signup-enabled', + 'signup-limit', + 'admin-email', + 'user-videoQuota', + 'transcoding-enabled', + 'transcoding-threads', + 'transcoding-resolutions' +] +class CustomConfigAuditView extends EntityAuditView { + constructor (customConfig: CustomConfig) { + const infos: any = customConfig + const resolutionsDict = infos.transcoding.resolutions + const resolutionsArray = [] + Object.entries(resolutionsDict).forEach(([resolution, isEnabled]) => { + if (isEnabled) { + resolutionsArray.push(resolution) + } + }) + infos.transcoding.resolutions = resolutionsArray + super(customConfigKeysToKeep, 'config', infos) + } +} + export { auditLoggerFactory, - VideoAuditView + VideoChannelAuditView, + CommentAuditView, + UserAuditView, + VideoAuditView, + VideoAbuseAuditView, + CustomConfigAuditView } -- cgit v1.2.3