谷歌暑期代码计划:记录操作日志,超级管理员可访问(状态更新)
想象一下,如果超级用户能够记录用户的操作:他们做了什么,在哪里,什么时候。这就是我在我的 Joomla! 谷歌暑期代码项目中开发这个扩展的原因。
项目
记录操作日志,超级管理员可访问的项目分为两部分:一个插件记录用户的操作,一个组件使其可供查看、删除和导出用户操作日志。
功能列表
以下列表是我和我的导师们认为在项目的最终产品中实现的功能
- 全局设置以启用或禁用记录(一些网站寻求性能或只有一位管理员则不需要记录)
- 设置在特定时间后自动清理日志,例如:滚动记录过去90天的日志。
-
设置通过电子邮件通知管理员特定操作(例如:成功的管理员登录向超级管理员发送通知邮件,新内容的创建生成电子邮件等)。
-
通过管理员屏幕查看所有日志,具有日期、扩展类型、用户账户的过滤器。
-
在用户管理页面下查看特定用户操作日志
-
一般日志记录包括用户IP、用户名、用户ID、事件操作、事件位置、时间/日期。
-
系统将利用 Joomla 权限系统允许超级管理员选择哪些组可以查看此扩展?
-
按钮将日志导出到 CSV 文件
-
如果启用 IP 记录,则应显示通知告知管理员正在发生此操作(可能是同意一次的通知?)
- 超级用户可以从组件仪表板撤消用户操作
更多详细信息请参阅我的上一篇文章 记录操作日志,超级管理员可访问。
插件
概述
我开始使用此插件,因为我需要组件能够检索日志。我选择了这个列表中的事件进行记录,因为它们与用户的行为相关。
- onContentAfterSave
- onContentAfterDelete
- onContentChangeState
- onExtensionAfterInstall
- onExtensionAfterUninstall
- onExtensionAfterUpdate
- onUserAfterSave
- onUserAfterDelete
- onUserAfterDeleteGroup
插件配置
当你进入插件的配置页面,如图所示
你会找到两个选项“目前”:第一个是指定你希望在数据库中保留日志的天数(删除在此天数之前创建的所有日志)。第二个是选择是否记录用户的IP地址。
还将实施另一个选项,即要记录哪些事件。
您可以通过以下链接查看插件的代码(在github的项目仓库中):https://github.com/joomla-projects/gsoc16_recording-action-logs/tree/staging/plugins/system/userlogs
组件
概述
该组件用于向超级用户显示日志。由于它是为超级用户设计的,因此它只有后端。
要查看日志,只需进入组件,如图所示
在此页面上,您可以查看用户行为日志的列表,如下面的图片所示
超级用户有权查看、排序、按用户、扩展和日期范围搜索日志。
扩展名称
当用户的行为被记录时,扩展的名称被存储如下“com_content.article”,如果它是文章组件,这可能不是用户友好的,因此我使用了安装插件显示扩展名称的方式。当显示扩展名称时,我通过一个名为translateExtensionName的函数来获取扩展的翻译名称。您可以从以下链接查看它:https://github.com/joomla-projects/gsoc16_recording-action-logs/blob/staging/administrator/components/com_userlogs/views/userlogs/view.html.php#L81
消息翻译
如我之前提到的,每个事件都有自己的日志消息,因此我以JSON格式记录了消息。当显示日志时,会触发一个名为onLogMessagePrepare的事件,将消息从JSON格式转换为可读文本。在插件方面,我编写了一个观察函数来写入可读文本。您可以在以下位置找到它:https://github.com/joomla-projects/gsoc16_recording-action-logs/blob/staging/plugins/system/userlogs/userlogs.php#L245
您可以从以下链接在github上查看组件:https://github.com/joomla-projects/gsoc16_recording-action-logs/tree/staging/administrator/components/com_userlogs
结束语
在本文的结尾,我想感谢我的导师Allan Walker和Llewellyn van der Merwe在我开发过程中提供的巨大帮助。我还想感谢整个Joomla GSoC团队在讨论我在开发过程中遇到的一些问题时提供的帮助。
在Joomla社区杂志上发表的一些文章代表了作者在特定主题上的个人观点或经验,可能不代表Joomla项目的官方立场。
通过接受,您将访问由 https://magazine.joomla.net.cn/ 外部第三方提供的服务
评论