diff --git a/packages/backend/src/types/notification.types.ts b/packages/backend/src/types/notification.types.ts index 977c125..86ac7a7 100644 --- a/packages/backend/src/types/notification.types.ts +++ b/packages/backend/src/types/notification.types.ts @@ -1,24 +1,22 @@ export type NotificationChannelType = 'webhook' | 'email' | 'telegram'; +// Align NotificationEvent with AuditLogActionType as requested export type NotificationEvent = - | 'LOGIN_SUCCESS' - | 'LOGIN_FAILURE' - | 'CONNECTION_ADDED' - | 'CONNECTION_UPDATED' - | 'CONNECTION_DELETED' - | 'SETTINGS_UPDATED' - | 'PROXY_ADDED' - | 'PROXY_UPDATED' - | 'PROXY_DELETED' - | 'TAG_ADDED' - | 'TAG_UPDATED' - | 'TAG_DELETED' - // | 'API_KEY_ADDED' // Removed API Key events - // | 'API_KEY_DELETED' - | 'PASSKEY_ADDED' - | 'PASSKEY_DELETED' - | 'IP_BLACKLISTED' // New event for IP blacklisting - | 'SERVER_ERROR'; // Generic error event + | 'LOGIN_SUCCESS' | 'LOGIN_FAILURE' | 'LOGOUT' | 'PASSWORD_CHANGED' + | '2FA_ENABLED' | '2FA_DISABLED' | 'PASSKEY_REGISTERED' | 'PASSKEY_DELETED' + | 'CONNECTION_CREATED' | 'CONNECTION_UPDATED' | 'CONNECTION_DELETED' | 'CONNECTION_TESTED' + | 'CONNECTIONS_IMPORTED' | 'CONNECTIONS_EXPORTED' + | 'PROXY_CREATED' | 'PROXY_UPDATED' | 'PROXY_DELETED' + | 'TAG_CREATED' | 'TAG_UPDATED' | 'TAG_DELETED' + | 'SETTINGS_UPDATED' | 'IP_WHITELIST_UPDATED' + | 'NOTIFICATION_SETTING_CREATED' | 'NOTIFICATION_SETTING_UPDATED' | 'NOTIFICATION_SETTING_DELETED' + | 'SFTP_ACTION' + // SSH Actions + | 'SSH_CONNECT_SUCCESS' | 'SSH_CONNECT_FAILURE' | 'SSH_SHELL_FAILURE' + // System/Error + | 'SERVER_STARTED' | 'SERVER_ERROR' | 'DATABASE_MIGRATION' | 'ADMIN_SETUP_COMPLETE'; + // Settings (Specific) - Keep aligned with AuditLogActionType + // Note: IP_BLACKLISTED was in NotificationEvent but not AuditLogActionType, removed for consistency based on user request export interface WebhookConfig { url: string; diff --git a/packages/frontend/src/components/NotificationSettingForm.vue b/packages/frontend/src/components/NotificationSettingForm.vue index 2c2b094..715f452 100644 --- a/packages/frontend/src/components/NotificationSettingForm.vue +++ b/packages/frontend/src/components/NotificationSettingForm.vue @@ -265,13 +265,20 @@ const canTestUnsaved = computed(() => { }); -// Define all possible events +// Define all possible events (aligned with AuditLogView's allActionTypes) const allNotificationEvents: NotificationEvent[] = [ - 'LOGIN_SUCCESS', 'LOGIN_FAILURE', 'CONNECTION_ADDED', 'CONNECTION_UPDATED', 'CONNECTION_DELETED', - 'SETTINGS_UPDATED', 'PROXY_ADDED', 'PROXY_UPDATED', 'PROXY_DELETED', 'TAG_ADDED', 'TAG_UPDATED', - 'TAG_DELETED', /* 'API_KEY_ADDED', 'API_KEY_DELETED', */ 'PASSKEY_ADDED', 'PASSKEY_DELETED', // Removed API Key events - 'IP_BLACKLISTED', // Add the new event here - 'SERVER_ERROR' + 'LOGIN_SUCCESS', 'LOGIN_FAILURE', 'LOGOUT', 'PASSWORD_CHANGED', // Added LOGOUT, PASSWORD_CHANGED + '2FA_ENABLED', '2FA_DISABLED', 'PASSKEY_REGISTERED', 'PASSKEY_DELETED', // Added 2FA, changed PASSKEY_ADDED + 'CONNECTION_CREATED', 'CONNECTION_UPDATED', 'CONNECTION_DELETED', 'CONNECTION_TESTED', // Changed _ADDED, added _TESTED + 'CONNECTIONS_IMPORTED', 'CONNECTIONS_EXPORTED', // Added IMPORT/EXPORT + 'PROXY_CREATED', 'PROXY_UPDATED', 'PROXY_DELETED', // Changed _ADDED + 'TAG_CREATED', 'TAG_UPDATED', 'TAG_DELETED', // Changed _ADDED + 'SETTINGS_UPDATED', 'IP_WHITELIST_UPDATED', // Added IP_WHITELIST_UPDATED + 'NOTIFICATION_SETTING_CREATED', 'NOTIFICATION_SETTING_UPDATED', 'NOTIFICATION_SETTING_DELETED', // Added NOTIFICATION types + 'SFTP_ACTION', // Added SFTP_ACTION + 'SSH_CONNECT_SUCCESS', 'SSH_CONNECT_FAILURE', 'SSH_SHELL_FAILURE', // Added SSH types + 'SERVER_STARTED', 'SERVER_ERROR', 'DATABASE_MIGRATION', 'ADMIN_SETUP_COMPLETE' // Added SERVER_STARTED, DB_MIGRATION, ADMIN_SETUP + // Removed IP_BLACKLISTED as it's not in the Audit Log list source ]; // Reactive form data structure diff --git a/packages/frontend/src/locales/en.json b/packages/frontend/src/locales/en.json index 5b050eb..8678218 100644 --- a/packages/frontend/src/locales/en.json +++ b/packages/frontend/src/locales/en.json @@ -603,22 +603,37 @@ "events": { "LOGIN_SUCCESS": "Login Success", "LOGIN_FAILURE": "Login Failure", - "CONNECTION_ADDED": "Connection Added", + "LOGOUT": "Logout", + "PASSWORD_CHANGED": "Password Changed", + "2FA_ENABLED": "2FA Enabled", + "2FA_DISABLED": "2FA Disabled", + "PASSKEY_REGISTERED": "Passkey Registered", + "PASSKEY_DELETED": "Passkey Deleted", + "CONNECTION_CREATED": "Connection Created", "CONNECTION_UPDATED": "Connection Updated", "CONNECTION_DELETED": "Connection Deleted", - "SETTINGS_UPDATED": "Settings Updated", - "PROXY_ADDED": "Proxy Added", + "CONNECTION_TESTED": "Connection Tested", + "CONNECTIONS_IMPORTED": "Connections Imported", + "CONNECTIONS_EXPORTED": "Connections Exported", + "PROXY_CREATED": "Proxy Created", "PROXY_UPDATED": "Proxy Updated", "PROXY_DELETED": "Proxy Deleted", - "TAG_ADDED": "Tag Added", + "TAG_CREATED": "Tag Created", "TAG_UPDATED": "Tag Updated", "TAG_DELETED": "Tag Deleted", - "API_KEY_ADDED": "API Key Added", - "API_KEY_DELETED": "API Key Deleted", - "PASSKEY_ADDED": "Passkey Added", - "PASSKEY_DELETED": "Passkey Deleted", - "IP_BLACKLISTED": "IP Blacklisted", - "SERVER_ERROR": "Server Error" + "SETTINGS_UPDATED": "Settings Updated", + "IP_WHITELIST_UPDATED": "IP Whitelist Updated", + "NOTIFICATION_SETTING_CREATED": "Notification Setting Created", + "NOTIFICATION_SETTING_UPDATED": "Notification Setting Updated", + "NOTIFICATION_SETTING_DELETED": "Notification Setting Deleted", + "SFTP_ACTION": "SFTP Action", + "SSH_CONNECT_SUCCESS": "SSH Connection Successful", + "SSH_CONNECT_FAILURE": "SSH Connection Failed", + "SSH_SHELL_FAILURE": "SSH Shell Open Failed", + "SERVER_STARTED": "Server Started", + "SERVER_ERROR": "Server Error", + "DATABASE_MIGRATION": "Database Migration", + "ADMIN_SETUP_COMPLETE": "Initial Admin Setup Completed" } }, "appearance": { diff --git a/packages/frontend/src/locales/zh.json b/packages/frontend/src/locales/zh.json index 9cd0be4..62e3c8f 100644 --- a/packages/frontend/src/locales/zh.json +++ b/packages/frontend/src/locales/zh.json @@ -603,22 +603,37 @@ "events": { "LOGIN_SUCCESS": "登录成功", "LOGIN_FAILURE": "登录失败", - "CONNECTION_ADDED": "连接已添加", + "LOGOUT": "登出", + "PASSWORD_CHANGED": "密码已修改", + "2FA_ENABLED": "两步验证已启用", + "2FA_DISABLED": "两步验证已禁用", + "PASSKEY_REGISTERED": "Passkey 已注册", + "PASSKEY_DELETED": "Passkey 已删除", + "CONNECTION_CREATED": "连接已创建", "CONNECTION_UPDATED": "连接已更新", "CONNECTION_DELETED": "连接已删除", - "SETTINGS_UPDATED": "设置已更新", - "PROXY_ADDED": "代理已添加", + "CONNECTION_TESTED": "连接已测试", + "CONNECTIONS_IMPORTED": "连接已导入", + "CONNECTIONS_EXPORTED": "连接已导出", + "PROXY_CREATED": "代理已创建", "PROXY_UPDATED": "代理已更新", "PROXY_DELETED": "代理已删除", - "TAG_ADDED": "标签已添加", + "TAG_CREATED": "标签已创建", "TAG_UPDATED": "标签已更新", "TAG_DELETED": "标签已删除", - "API_KEY_ADDED": "API 密钥已添加", - "API_KEY_DELETED": "API 密钥已删除", - "PASSKEY_ADDED": "Passkey 已添加", - "PASSKEY_DELETED": "Passkey 已删除", - "IP_BLACKLISTED": "IP 已被拉黑", - "SERVER_ERROR": "服务器错误" + "SETTINGS_UPDATED": "设置已更新", + "IP_WHITELIST_UPDATED": "IP 白名单已更新", + "NOTIFICATION_SETTING_CREATED": "通知设置已创建", + "NOTIFICATION_SETTING_UPDATED": "通知设置已更新", + "NOTIFICATION_SETTING_DELETED": "通知设置已删除", + "SFTP_ACTION": "SFTP 操作", + "SSH_CONNECT_SUCCESS": "SSH 连接成功", + "SSH_CONNECT_FAILURE": "SSH 连接失败", + "SSH_SHELL_FAILURE": "SSH Shell 打开失败", + "SERVER_STARTED": "服务器已启动", + "SERVER_ERROR": "服务器错误", + "DATABASE_MIGRATION": "数据库迁移", + "ADMIN_SETUP_COMPLETE": "初始管理员设置完成" } }, "appearance": { diff --git a/packages/frontend/src/types/server.types.ts b/packages/frontend/src/types/server.types.ts index db1f955..787f786 100644 --- a/packages/frontend/src/types/server.types.ts +++ b/packages/frontend/src/types/server.types.ts @@ -18,25 +18,23 @@ export interface ServerStatus { export type NotificationChannelType = 'webhook' | 'email' | 'telegram'; +// Align NotificationEvent with AuditLogActionType as requested export type NotificationEvent = - | 'LOGIN_SUCCESS' - | 'LOGIN_FAILURE' - | 'CONNECTION_ADDED' - | 'CONNECTION_UPDATED' - | 'CONNECTION_DELETED' - | 'SETTINGS_UPDATED' - | 'PROXY_ADDED' - | 'PROXY_UPDATED' - | 'PROXY_DELETED' - | 'TAG_ADDED' - | 'TAG_UPDATED' - | 'TAG_DELETED' - // | 'API_KEY_ADDED' // Removed API Key events - // | 'API_KEY_DELETED' - | 'PASSKEY_ADDED' - | 'PASSKEY_DELETED' - | 'IP_BLACKLISTED' // Add the new event type here as well - | 'SERVER_ERROR'; + | 'LOGIN_SUCCESS' | 'LOGIN_FAILURE' | 'LOGOUT' | 'PASSWORD_CHANGED' + | '2FA_ENABLED' | '2FA_DISABLED' | 'PASSKEY_REGISTERED' | 'PASSKEY_DELETED' + | 'CONNECTION_CREATED' | 'CONNECTION_UPDATED' | 'CONNECTION_DELETED' | 'CONNECTION_TESTED' + | 'CONNECTIONS_IMPORTED' | 'CONNECTIONS_EXPORTED' + | 'PROXY_CREATED' | 'PROXY_UPDATED' | 'PROXY_DELETED' + | 'TAG_CREATED' | 'TAG_UPDATED' | 'TAG_DELETED' + | 'SETTINGS_UPDATED' | 'IP_WHITELIST_UPDATED' + | 'NOTIFICATION_SETTING_CREATED' | 'NOTIFICATION_SETTING_UPDATED' | 'NOTIFICATION_SETTING_DELETED' + | 'SFTP_ACTION' + // SSH Actions + | 'SSH_CONNECT_SUCCESS' | 'SSH_CONNECT_FAILURE' | 'SSH_SHELL_FAILURE' + // System/Error + | 'SERVER_STARTED' | 'SERVER_ERROR' | 'DATABASE_MIGRATION' | 'ADMIN_SETUP_COMPLETE'; + // Settings (Specific) - Keep aligned with AuditLogActionType + // Note: IP_BLACKLISTED was in NotificationEvent but not AuditLogActionType, removed for consistency based on user request export interface WebhookConfig { url: string;