module Devise::Models::DecidimNewsletterable

Newsletterable adds all needed validations to acomplish GDPR standards in newsletter notification mailing

Validates that all users with notifications activated have Opt-in in some time

Constants

GDPR_DATE

Public Instance Methods

newsletter_opt_in_notify() click to toggle source
# File lib/devise/models/decidim_newsletterable.rb, line 13
def newsletter_opt_in_notify
  unless newsletter_opt_in_valid?
    set_newsletter_token!
    Decidim::NewslettersOptInJob.perform_later(self, newsletter_token)
  end
end
newsletter_opt_in_validate() click to toggle source
# File lib/devise/models/decidim_newsletterable.rb, line 20
def newsletter_opt_in_validate
  set_newsletter_opt_in! if newsletter_notifications_at.blank?
end

Protected Instance Methods

newsletter_opt_in_valid?() click to toggle source

Checks if Opt-in is valid or not An user with notifications activated, must have an Opt-in

# File lib/devise/models/decidim_newsletterable.rb, line 28
def newsletter_opt_in_valid?
  newsletter_notifications_at > Time.zone.parse(GDPR_DATE)
end
set_newsletter_opt_in() click to toggle source

Fill Opt-in value with current time & removes any token involved

# File lib/devise/models/decidim_newsletterable.rb, line 48
def set_newsletter_opt_in
  self.newsletter_notifications_at = Time.current
  self.newsletter_token = ""
end
set_newsletter_opt_in!() click to toggle source

Sets Opt-in and token values & saves

# File lib/devise/models/decidim_newsletterable.rb, line 54
def set_newsletter_opt_in!
  set_newsletter_opt_in
  save
end
set_newsletter_token() click to toggle source

Fill token value with some random value Removes opt_int timestamp Deactivate newsletter notifications

# File lib/devise/models/decidim_newsletterable.rb, line 35
def set_newsletter_token
  self.newsletter_notifications_at = nil
  self.newsletter_token = SecureRandom.base58(24)
end
set_newsletter_token!() click to toggle source

Sets token and Opt-in values & saves

# File lib/devise/models/decidim_newsletterable.rb, line 41
def set_newsletter_token!
  set_newsletter_token
  save
end