decidim-cdtb 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/lib/decidim/cdtb/participatory_spaces/add_content_blocks.rb +1 -0
- data/lib/decidim/cdtb/spam/{user_spam_detector.rb → spam_users_detector.rb} +3 -3
- data/lib/decidim/cdtb/tasks.rb +1 -1
- data/lib/decidim/cdtb/users/remover.rb +13 -14
- data/lib/decidim/cdtb/version.rb +1 -1
- data/lib/generators/cdtb/templates/validate_migrations.yml +4 -4
- data/lib/tasks/spam.rake +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cdd6e2f7b6f54ea5053222a30ff8cb106b14975261395d8fdf6cbae0e7d06f1
|
4
|
+
data.tar.gz: 3e141391b889c44fb29d640e036417cbfea23308e9392efe9e9bbf67a132d7ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b3e4166b142c0d23b7140802d669cf3833a3195625ca48d6931d000db5cc12ea7431914a2cac518efc51c70c890aad81ceda101e7c47bf63e34fdbe59778819
|
7
|
+
data.tar.gz: 1144580a008ee6e0c1ca00d14a5e30e1be7528a7d4165b1cd893c2462204a94f9248ed0801183878ae1b18f3282cf28bbbc8eec34d207515d3d097289573ab77
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.5.2] - 2025-05-23 (patch - Sense por ni flotador)
|
4
|
+
|
5
|
+
- Update validate_migrations generator template.
|
6
|
+
- Add last_sign_in_at to spam users detector.
|
7
|
+
|
8
|
+
## [0.5.1] - 2025-04-14 (minor - Diferents però igual)
|
9
|
+
|
10
|
+
- Add remove ActionLogs of users on remove users task.
|
11
|
+
- Fix error on add content blocks task.
|
12
|
+
|
3
13
|
## [0.5.0] - 2025-04-28 (minor - Unes roques molt gracioses)
|
4
14
|
|
5
15
|
- Add task to export the list of admins.
|
data/Gemfile.lock
CHANGED
@@ -73,6 +73,7 @@ module Decidim
|
|
73
73
|
|
74
74
|
current_content_blocks.each do |content_block|
|
75
75
|
# hero is usually the first content block
|
76
|
+
next if content_block.nil?
|
76
77
|
next if content_block == extra_data_content_block || content_block.manifest_name == "hero"
|
77
78
|
|
78
79
|
content_block.update(weight: content_block.weight + 10)
|
@@ -7,7 +7,7 @@ module Decidim
|
|
7
7
|
module Spam
|
8
8
|
# Detect spam behavior in users
|
9
9
|
#
|
10
|
-
class
|
10
|
+
class SpamUsersDetector < ::Decidim::Cdtb::Task
|
11
11
|
# rubocop:disable Style/RedundantRegexpEscape
|
12
12
|
URL_REGEX = %r{(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|
|
13
13
|
www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|
|
@@ -44,7 +44,7 @@ module Decidim
|
|
44
44
|
filepath= Rails.env.test? ? "tmp/#{filename}" : filename
|
45
45
|
CSV.open(filepath, "w") do |csv|
|
46
46
|
csv_headers = ["ID", "Is suspicious?", "Name", "Email", "Nickname", "Personal URL", "About",
|
47
|
-
"Organization ID", "Organization Name"]
|
47
|
+
"Organization ID", "Organization Name", "Last Sign In At"]
|
48
48
|
csv << csv_headers
|
49
49
|
|
50
50
|
@users.find_each do |user|
|
@@ -56,7 +56,7 @@ module Decidim
|
|
56
56
|
end
|
57
57
|
|
58
58
|
csv << [user.id, suspicious, user.name, user.email, user.nickname, user.personal_url, user.about,
|
59
|
-
user.organization.id, user.organization.name]
|
59
|
+
user.organization.id, user.organization.name, user.last_sign_in_at&.strftime(Decidim::Cdtb::STRFTIME_FORMAT)]
|
60
60
|
|
61
61
|
progress_bar.increment
|
62
62
|
end
|
data/lib/decidim/cdtb/tasks.rb
CHANGED
@@ -8,7 +8,7 @@ require "decidim/cdtb/users/remover"
|
|
8
8
|
require "decidim/cdtb/multitenants/org_by_host_like"
|
9
9
|
require "decidim/cdtb/participatory_spaces/add_content_blocks"
|
10
10
|
require "decidim/cdtb/participatory_spaces/move_images_to_content_block"
|
11
|
-
require "decidim/cdtb/spam/
|
11
|
+
require "decidim/cdtb/spam/spam_users_detector"
|
12
12
|
require "decidim/cdtb/storage/local_sharding"
|
13
13
|
require "decidim/cdtb/storage/set_local_on_blobs"
|
14
14
|
require "decidim/cdtb/upgrades/validate_migrations_task"
|
@@ -36,7 +36,10 @@ module Decidim
|
|
36
36
|
organization: user.organization)
|
37
37
|
comments = Decidim::Comments::Comment.where(decidim_author_id: user.id)
|
38
38
|
manage_comments(comments, user, reporter_user) unless comments.empty?
|
39
|
-
|
39
|
+
if block_user(user, reporter_user)
|
40
|
+
remove_action_logs_by(user)
|
41
|
+
destroy_user(user)
|
42
|
+
end
|
40
43
|
progress_bar.increment
|
41
44
|
end
|
42
45
|
ensure
|
@@ -53,28 +56,18 @@ module Decidim
|
|
53
56
|
def disable_email_moderations(users_emails)
|
54
57
|
log_task_step("Disabling email on moderations...")
|
55
58
|
|
56
|
-
|
57
|
-
|
58
|
-
users.find_each do |user|
|
59
|
-
user.email_on_moderations = false
|
60
|
-
user.save(validate: false)
|
61
|
-
end
|
59
|
+
Decidim::User.where(email: users_emails).update_all(email_on_moderations: false)
|
62
60
|
end
|
63
61
|
|
64
62
|
def enable_email_moderations(users_emails)
|
65
63
|
log_task_step("Enabling email on moderations...")
|
66
64
|
|
67
|
-
|
68
|
-
|
69
|
-
users.find_each do |user|
|
70
|
-
user.email_on_moderations = true
|
71
|
-
user.save(validate: false)
|
72
|
-
end
|
65
|
+
Decidim::User.where(email: users_emails).update_all(email_on_moderations: true)
|
73
66
|
end
|
74
67
|
|
75
68
|
def manage_comments(comments, user, reporter_user)
|
76
69
|
comments.find_each do |comment|
|
77
|
-
report_comment(comment, user, reporter_user)
|
70
|
+
report_comment(comment, user, reporter_user) unless comment.reported?
|
78
71
|
hide_comment(comment, user, reporter_user) unless comment.hidden?
|
79
72
|
end
|
80
73
|
end
|
@@ -163,6 +156,12 @@ module Decidim
|
|
163
156
|
current_participatory_space: comment.participatory_space
|
164
157
|
}
|
165
158
|
end
|
159
|
+
|
160
|
+
def remove_action_logs_by(user)
|
161
|
+
puts "Removing ActionLog from user #{user.id}..."
|
162
|
+
|
163
|
+
ActiveRecord::Base.connection.execute("DELETE FROM decidim_action_logs WHERE decidim_user_id = #{user.id}")
|
164
|
+
end
|
166
165
|
end
|
167
166
|
# rubocop:enable Metrics/ClassLength
|
168
167
|
end
|
data/lib/decidim/cdtb/version.rb
CHANGED
@@ -19,7 +19,7 @@ jobs:
|
|
19
19
|
runs-on: ubuntu-latest
|
20
20
|
services:
|
21
21
|
postgres:
|
22
|
-
image: postgres:
|
22
|
+
image: postgres:16
|
23
23
|
ports: ["5432:5432"]
|
24
24
|
options: >-
|
25
25
|
--health-cmd pg_isready
|
@@ -36,7 +36,7 @@ jobs:
|
|
36
36
|
SECRET_KEY_BASE: "secret_key_base"
|
37
37
|
|
38
38
|
steps:
|
39
|
-
- uses: actions/checkout@
|
39
|
+
- uses: actions/checkout@v4
|
40
40
|
with:
|
41
41
|
fetch-depth: 1
|
42
42
|
- uses: ruby/setup-ruby@master
|
@@ -44,7 +44,7 @@ jobs:
|
|
44
44
|
ruby-version: ${{ env.RUBY_VERSION }}
|
45
45
|
bundler-cache: true
|
46
46
|
- name: Recover Ruby dependency cache
|
47
|
-
uses: actions/cache@
|
47
|
+
uses: actions/cache@v4
|
48
48
|
with:
|
49
49
|
path: ./vendor/bundle
|
50
50
|
key: ${{ runner.OS }}-app-rubydeps-${{ hashFiles('Gemfile.lock') }}
|
@@ -56,7 +56,7 @@ jobs:
|
|
56
56
|
run: bundle config set --local path 'vendor/bundle'
|
57
57
|
|
58
58
|
- name: Install Ruby deps
|
59
|
-
uses: nick-
|
59
|
+
uses: nick-fields/retry@v3
|
60
60
|
with:
|
61
61
|
timeout_minutes: 10
|
62
62
|
max_attempts: 3
|
data/lib/tasks/spam.rake
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
namespace :cdtb do
|
4
4
|
namespace :spam do
|
5
|
-
desc "Show a list with users
|
5
|
+
desc "Show a list with users suspicious of being spammers"
|
6
6
|
task :users, %i[org_id] => :environment do |_task, args|
|
7
7
|
organization = args.org_id.present? ? Decidim::Organization.find(args.org_id) : nil
|
8
8
|
|
9
|
-
detector = Decidim::Cdtb::Spam::
|
9
|
+
detector = Decidim::Cdtb::Spam::SpamUsersDetector.new(organization)
|
10
10
|
detector.execute!
|
11
11
|
end
|
12
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-cdtb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Valls
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim
|
@@ -96,7 +96,7 @@ files:
|
|
96
96
|
- lib/decidim/cdtb/participatory_spaces/add_content_blocks.rb
|
97
97
|
- lib/decidim/cdtb/participatory_spaces/manages_content_blocks.rb
|
98
98
|
- lib/decidim/cdtb/participatory_spaces/move_images_to_content_block.rb
|
99
|
-
- lib/decidim/cdtb/spam/
|
99
|
+
- lib/decidim/cdtb/spam/spam_users_detector.rb
|
100
100
|
- lib/decidim/cdtb/storage/local_sharding.rb
|
101
101
|
- lib/decidim/cdtb/storage/set_local_on_blobs.rb
|
102
102
|
- lib/decidim/cdtb/task.rb
|