From ac9de83e62c0d37cb4f03c8c0b12fed3ee48b3be Mon Sep 17 00:00:00 2001 From: pangbo13 <51732678+pangbo13@users.noreply.github.com> Date: Sat, 12 Aug 2023 13:52:41 +0800 Subject: [PATCH] feat: create user note when create user --- plugin.rb | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/plugin.rb b/plugin.rb index 54b22f5..06c9ff7 100644 --- a/plugin.rb +++ b/plugin.rb @@ -2,7 +2,7 @@ # name: remake-limit # about: limit user remake frequency -# version: 0.0.5 +# version: 0.0.6 # authors: dujiajun,pangbo # url: https://github.com/ShuiyuanSJTU/remake-limit # required_version: 2.7.0 @@ -16,6 +16,9 @@ enabled_site_setting :remake_limit_enabled +module ::RemakeLimit +end + after_initialize do class ::UsersController @@ -97,7 +100,6 @@ def save_penalty_counts email_history[@user.id.to_s] = current_user_pc_hash plugin_store.set(user_email, email_history) end - end module OverrideUserDestroyer @@ -127,14 +129,14 @@ def penalty_counts pc = TrustLevel3Requirements.new(object).penalty_counts_all_time penalty_counts = { "silence_count" => pc.silenced || 0, - "suspended_count" => pc.suspended || 0 + "suspend_count" => pc.suspended || 0 } user_email = user.email.gsub(SJTU_ALUMNI_EMAIL, SJTU_EMAIL) penalty_counts_history = PluginStore.get(PENALTY_HISTORY_STORE_KEY, user_email) || Hash.new penalty_counts_history.each do |key, value| next if key == user.id.to_s penalty_counts["silence_count"] += value[:silenced] - penalty_counts["suspended_count"] += value[:suspended] + penalty_counts["suspend_count"] += value[:suspended] end TrustLevel3Requirements::PenaltyCounts.new(user, penalty_counts) end @@ -144,4 +146,21 @@ class ::AdminDetailedUserSerializer prepend OverrideAdminDetailedUserSerializer end + on(:user_created) do |user| + if defined?(::DiscourseUserNotes) + plugin_store = PluginStore.new(PENALTY_HISTORY_STORE_KEY) + user_email = user.email.gsub(SJTU_ALUMNI_EMAIL, SJTU_EMAIL) + email_history = plugin_store.get(user_email) + silence_count = 0 + suspended_counts = 0 + email_history.each do |key, value| + next if key == user.id.to_s + silence_count += value[:silenced] + suspended_counts += value[:suspended] + end + if email_history.present? + ::DiscourseUserNotes.add_note(user, "查询到该用户邮箱历史账号有#{silence_count}次禁言、#{suspended_counts}次封禁记录", Discourse.system_user.id) + end + end + end end