decidim-cleaner 3.0.0 → 3.1.0
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/README.md +13 -0
- data/app/helpers/decidim/cleaner/delays_helper.rb +15 -0
- data/app/jobs/decidim/cleaner/clean_admin_logs_job.rb +7 -1
- data/app/jobs/decidim/cleaner/clean_inactive_users_job.rb +21 -5
- data/app/mailers/decidim/cleaner/inactive_users_mailer.rb +1 -0
- data/app/views/decidim/cleaner/inactive_users_mailer/warning_deletion.html.erb +1 -1
- data/app/views/decidim/cleaner/inactive_users_mailer/warning_inactive.html.erb +2 -2
- data/config/locales/en.yml +2 -1
- data/config/locales/fr.yml +2 -2
- data/db/migrate/20230328094652_add_warning_date_to_users.rb +7 -0
- data/lib/decidim/cleaner/version.rb +1 -1
- data/lib/decidim/cleaner.rb +13 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dda43559128f10de066d98d4ffc56eb53c6b46e3a49d4d49373cf62e054fcb3
|
4
|
+
data.tar.gz: a22f580ae6fde675ca5c572005b224ac17d9546c861b343432ee919e67400420
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 746f6a5f4048779b2fa841a8911c7d8596c5a1c6363472f3bb0ede9b648d555f09d3069f22ee1fad1c514aef8409a5cf86447a7f25b6ab6684843dd9cf6b82c1
|
7
|
+
data.tar.gz: 6a1fd5e673054d0ffad860b6bb1441c4d5a91986bff9f2611d7d45d24d0df0e8b1d68db0ca0024774e322f4e7fb7a1da35351e9cb4e07742a900d812c2264656
|
data/README.md
CHANGED
@@ -22,6 +22,19 @@ bundle exec rails decidim_cleaner:install:migrations
|
|
22
22
|
bundle exec rails db:migrate
|
23
23
|
```
|
24
24
|
|
25
|
+
You can then modify the default values of the cleaner in your .ENV with the following variables:
|
26
|
+
|
27
|
+
```bash
|
28
|
+
# Delay until a user is considered inactive and receive a warning email (in days)
|
29
|
+
DECIDIM_CLEANER_INACTIVE_USERS_MAIL=
|
30
|
+
|
31
|
+
# Delay until a user is deleted after receiving an email (in days)
|
32
|
+
DECIDIM_CLEANER_DELETE_INACTIVE_USERS=
|
33
|
+
|
34
|
+
# Delay until an admin log is deleted (in days)
|
35
|
+
DECIDIM_CLEANER_DELETE_ADMIN_LOGS=
|
36
|
+
```
|
37
|
+
|
25
38
|
### Sidekiq Scheduler
|
26
39
|
[Further documentation](https://github.com/sidekiq-scheduler/sidekiq-scheduler)
|
27
40
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Cleaner
|
5
|
+
module DelaysHelper
|
6
|
+
def email_inactive_after(organization)
|
7
|
+
organization.delete_inactive_users_email_after || Decidim::Cleaner.delete_inactive_users_email_after
|
8
|
+
end
|
9
|
+
|
10
|
+
def delete_inactive_after(organization)
|
11
|
+
organization.delete_inactive_users_after || Decidim::Cleaner.delete_inactive_users_after
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -10,10 +10,16 @@ module Decidim
|
|
10
10
|
next unless organization.delete_admin_logs?
|
11
11
|
|
12
12
|
Decidim::ActionLog.where(organization: organization)
|
13
|
-
.where("created_at < ?",
|
13
|
+
.where("created_at < ?", delete_admin_logs_before_date(organization))
|
14
14
|
.delete_all
|
15
15
|
end
|
16
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def delete_admin_logs_before_date(organization)
|
21
|
+
Time.zone.now - (organization.delete_admin_logs_after || Decidim::Cleaner.delete_admin_logs_after).days
|
22
|
+
end
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -12,25 +12,31 @@ module Decidim
|
|
12
12
|
send_warning(Decidim::User.where(organization: organization)
|
13
13
|
.not_deleted
|
14
14
|
.where.not(email: "")
|
15
|
-
.where("last_sign_in_at < ?",
|
16
|
-
.where("last_sign_in_at > ?", Time.zone.now - (organization.delete_inactive_users_email_after || 365).days - 1.day))
|
17
|
-
|
15
|
+
.where("last_sign_in_at < ?", email_inactive_before_date(organization)))
|
18
16
|
delete_user_and_send_email(Decidim::User.where(organization: organization)
|
19
17
|
.not_deleted
|
20
18
|
.where.not(email: "")
|
21
|
-
.where("
|
19
|
+
.where("warning_date < ?", delete_inactive_before_date(organization)))
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
23
|
def send_warning(users)
|
26
24
|
users.find_each do |user|
|
27
|
-
|
25
|
+
next if user.warning_date.present?
|
26
|
+
|
27
|
+
user.update!(warning_date: Time.zone.now) if InactiveUsersMailer.warning_inactive(user).deliver_now
|
28
28
|
Rails.logger.info "Inactive warning sent to #{user.email}"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
def delete_user_and_send_email(users)
|
33
33
|
users.find_each do |user|
|
34
|
+
if user.last_sign_in_at > user.warning_date
|
35
|
+
user.update!(warning_date: nil)
|
36
|
+
Rails.logger.info "User with id #{user.id} has logged in again, warning date reset"
|
37
|
+
next
|
38
|
+
end
|
39
|
+
|
34
40
|
InactiveUsersMailer.warning_deletion(user).deliver_now
|
35
41
|
Rails.logger.info "Deletion warning sent to #{user.email}"
|
36
42
|
|
@@ -38,6 +44,16 @@ module Decidim
|
|
38
44
|
Rails.logger.info "User with id #{user.id} destroyed"
|
39
45
|
end
|
40
46
|
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def email_inactive_before_date(organization)
|
51
|
+
Time.zone.now - (organization.delete_inactive_users_email_after || Decidim::Cleaner.delete_inactive_users_email_after).days
|
52
|
+
end
|
53
|
+
|
54
|
+
def delete_inactive_before_date(organization)
|
55
|
+
Time.zone.now - (organization.delete_inactive_users_after || Decidim::Cleaner.delete_inactive_users_after).days
|
56
|
+
end
|
41
57
|
end
|
42
58
|
end
|
43
59
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<p class="email-greeting"><%= t ".hello" %></p>
|
2
2
|
|
3
|
-
<p class="email-instructions"><%= t(".body_1", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host), days: @organization
|
3
|
+
<p class="email-instructions"><%= t(".body_1", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host), days: email_inactive_after(@organization) + delete_inactive_after(@organization)).html_safe %></p>
|
4
4
|
|
5
5
|
<p class="email-instructions"><%= t ".body_2" %></p>
|
6
6
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<p class="email-greeting"><%= t ".hello" %></p>
|
2
2
|
|
3
|
-
<p class="email-instructions"><%= t ".body_1", organization_name: h(@organization.name), days: @organization
|
3
|
+
<p class="email-instructions"><%= t ".body_1", organization_name: h(@organization.name), days: email_inactive_after(@organization) %></p>
|
4
4
|
|
5
|
-
<p class="email-instructions"><%= t(".body_2", remaining_days: (@organization
|
5
|
+
<p class="email-instructions"><%= t(".body_2", remaining_days: delete_inactive_after(@organization), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
|
6
6
|
|
7
7
|
<p class="email-closing"><%= t(".greetings", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
|
data/config/locales/en.yml
CHANGED
@@ -6,7 +6,8 @@ en:
|
|
6
6
|
delete_admin_logs: Enable admin logs deletion
|
7
7
|
delete_admin_logs_after: Delete admin logs after (days, default 365)
|
8
8
|
delete_inactive_users: Enable inactive users deletion
|
9
|
-
delete_inactive_users_after: Delete inactive users after (days,
|
9
|
+
delete_inactive_users_after: Delete inactive users x days after the mail(days,
|
10
|
+
default 30)
|
10
11
|
delete_inactive_users_email_after: Send email to inactive users before deletion
|
11
12
|
(days, default 365)
|
12
13
|
decidim:
|
data/config/locales/fr.yml
CHANGED
@@ -7,8 +7,8 @@ fr:
|
|
7
7
|
delete_admin_logs_after: Supprimer l'historique d'administration après (jours,
|
8
8
|
par défaut 365)
|
9
9
|
delete_inactive_users: Activer la suppression des utilisateurs inactifs
|
10
|
-
delete_inactive_users_after: Supprimer les utilisateurs inactifs
|
11
|
-
par défaut
|
10
|
+
delete_inactive_users_after: Supprimer les utilisateurs inactifs au bout de
|
11
|
+
x jours après le courriel (jours, par défaut 30)
|
12
12
|
delete_inactive_users_email_after: Envoyer un courriel aux utilisateurs inactifs
|
13
13
|
avant la suppression (jours, par défaut 365)
|
14
14
|
decidim:
|
data/lib/decidim/cleaner.rb
CHANGED
@@ -7,5 +7,18 @@ require "decidim/cleaner/admin_engine"
|
|
7
7
|
module Decidim
|
8
8
|
# This namespace holds the logic of the `Cleaner` module.
|
9
9
|
module Cleaner
|
10
|
+
include ActiveSupport::Configurable
|
11
|
+
|
12
|
+
config_accessor :delete_admin_logs_after do
|
13
|
+
ENV.fetch("DECIDIM_CLEANER_DELETE_ADMIN_LOGS", "365").to_i
|
14
|
+
end
|
15
|
+
|
16
|
+
config_accessor :delete_inactive_users_after do
|
17
|
+
ENV.fetch("DECIDIM_CLEANER_DELETE_INACTIVE_USERS", "30").to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
config_accessor :delete_inactive_users_email_after do
|
21
|
+
ENV.fetch("DECIDIM_CLEANER_INACTIVE_USERS_MAIL", "365").to_i
|
22
|
+
end
|
10
23
|
end
|
11
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Quentinchampenois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim-core
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- app/controllers/decidim/cleaner/admin/application_controller.rb
|
67
67
|
- app/controllers/decidim/cleaner/admin/organization_cleaner_controller.rb
|
68
68
|
- app/forms/decidim/cleaner/admin/organization_cleaner_form.rb
|
69
|
+
- app/helpers/decidim/cleaner/delays_helper.rb
|
69
70
|
- app/jobs/decidim/cleaner/clean_admin_logs_job.rb
|
70
71
|
- app/jobs/decidim/cleaner/clean_inactive_users_job.rb
|
71
72
|
- app/mailers/decidim/cleaner/inactive_users_mailer.rb
|
@@ -80,6 +81,7 @@ files:
|
|
80
81
|
- config/routes.rb
|
81
82
|
- db/migrate/20230106105014_add_delete_admin_logs_to_organization.rb
|
82
83
|
- db/migrate/20230110150032_add_delete_inactive_users_to_organization.rb
|
84
|
+
- db/migrate/20230328094652_add_warning_date_to_users.rb
|
83
85
|
- lib/decidim/cleaner.rb
|
84
86
|
- lib/decidim/cleaner/admin.rb
|
85
87
|
- lib/decidim/cleaner/admin_engine.rb
|