liquid_feedback_frontend

diff model/member.lua @ 1231:e7fc3fed1593

Refactored password reset functionality
author bsw
date Tue Dec 01 18:12:00 2015 +0100 (2015-12-01)
parents c80ac323dee7
children 77dc363fa0be
line diff
     1.1 --- a/model/member.lua	Tue Dec 01 17:55:08 2015 +0100
     1.2 +++ b/model/member.lua	Tue Dec 01 18:12:00 2015 +0100
     1.3 @@ -326,6 +326,8 @@
     1.4    end
     1.5    
     1.6    self.password = hash
     1.7 +  self.password_reset_secret = nil
     1.8 +  self.password_reset_secret_expiry = nil
     1.9  end
    1.10  
    1.11  function Member.object:check_password(password)
    1.12 @@ -542,6 +544,36 @@
    1.13      :add_where("activated NOTNULL AND active")
    1.14  end
    1.15  
    1.16 +function Member.object:send_password_reset_mail()
    1.17 +  trace.disable()
    1.18 +  if not self.notify_email then
    1.19 +    return false
    1.20 +  end
    1.21 +  self.password_reset_secret = multirand.string( 24, "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" )
    1.22 +  local expiry = db:query("SELECT now() + '1 days'::interval as expiry", "object").expiry
    1.23 +  self.password_reset_secret_expiry = expiry
    1.24 +  self:save()
    1.25 +  local content = slot.use_temporary(function()
    1.26 +    slot.put(_"Hello " .. self.name .. ",\n\n")
    1.27 +    slot.put(_"to reset your password please click on the following link:\n\n")
    1.28 +    slot.put(request.get_absolute_baseurl() .. "index/reset_password.html?secret=" .. self.password_reset_secret .. "\n\n")
    1.29 +    slot.put(_"If this link is not working, please open following url in your web browser:\n\n")
    1.30 +    slot.put(request.get_absolute_baseurl() .. "index/reset_password.html\n\n")
    1.31 +    slot.put(_"On that page please enter the reset code:\n\n")
    1.32 +    slot.put(self.password_reset_secret .. "\n\n")
    1.33 +  end)
    1.34 +  local success = net.send_mail{
    1.35 +    envelope_from = config.mail_envelope_from,
    1.36 +    from          = config.mail_from,
    1.37 +    reply_to      = config.mail_reply_to,
    1.38 +    to            = self.notify_email,
    1.39 +    subject       = config.mail_subject_prefix .. _"Password reset request",
    1.40 +    content_type  = "text/plain; charset=UTF-8",
    1.41 +    content       = content
    1.42 +  }
    1.43 +  return success
    1.44 +end
    1.45 +
    1.46  function Member.object:send_invitation(template_file, subject)
    1.47    trace.disable()
    1.48    self.invite_code = multirand.string( 24, "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" )

Impressum / About Us