ref: master
app/models/change_password.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
class ChangePassword < Task attr_accessor :password, :password_confirmation def self.human_attribute_name_with_customization(attrib, options={}) case attrib.to_sym when :password _('Password') when :password_confirmation _('Password Confirmation') else _(self.human_attribute_name_without_customization(attrib)) end end class << self alias_method_chain :human_attribute_name, :customization end validates_presence_of :requestor validates :requestor, kind_of: {kind: Person} ################################################### # validations for updating a ChangePassword task # only require the new password when actually changing it. validates_presence_of :password, :on => :update, :if => lambda { |change| change.status != Task::Status::CANCELLED } validates_presence_of :password_confirmation, :on => :update, :if => lambda { |change| change.status != Task::Status::CANCELLED } validates_confirmation_of :password, :if => lambda { |change| change.status != Task::Status::CANCELLED } before_save :set_email_template def set_email_template template = environment.email_templates.find_by_template_type(:user_change_password) data[:email_template_id] = template.id unless template.nil? end def environment requestor.environment unless requestor.nil? end def title _("Change password") end def information {:message => _('%{requestor} wants to change its password.')} end def icon {:type => :profile_image, :profile => requestor, :url => requestor.url} end def perform user = self.requestor.user user.force_change_password!(self.password, self.password_confirmation) end def target_notification_description _('%{requestor} wants to change its password.') % {:requestor => requestor.name} end # overriding messages def task_cancelled_message _('Your password change request was cancelled at %s.') % Time.now.to_s end def task_finished_message _('Your password was changed successfully.') end include Rails.application.routes.url_helpers def task_created_message hostname = self.requestor.environment.default_hostname code = self.code url = url_for(:host => hostname, :controller => 'account', :action => 'new_password', :code => code) proc do _("In order to change your password, please visit the following address:\n\n%s\n\nIf you did not required any change to your password just desconsider this email.") % url end end end |