bsw@989: --trace.disable() bsw@989: bsw@989: local email = param.get("email") bsw@989: bsw@989: local members = Member:new_selector() bsw@989: :add_where{ "notify_email = ? OR notify_email_unconfirmed = ?", email, email } bsw@989: :add_where("login_recovery_expiry ISNULL OR login_recovery_expiry < now()") bsw@989: :exec() bsw@989: bsw@989: if #members < 1 then bsw@989: return bsw@989: end bsw@989: bsw@989: local logins = {} bsw@989: bsw@989: for i, member in ipairs(members) do bsw@989: local expiry = db:query("SELECT now() + '7 days'::interval as expiry", "object").expiry bsw@989: member.login_recovery_expiry = expiry bsw@989: member:save() bsw@989: logins[#logins+1] = member.login bsw@989: end bsw@989: bsw@989: local content = slot.use_temporary(function() bsw@989: slot.put(_"Hello,\n\n") bsw@989: slot.put(_"the following login is connected to this email address:\n\n") bsw@989: for i, login in ipairs(logins) do bsw@989: slot.put(_"Login-Name: " .. login .. "\n") bsw@989: end bsw@989: end) bsw@989: bsw@989: trace.debug(content) bsw@989: if true then return end bsw@989: bsw@989: local success = net.send_mail{ bsw@989: envelope_from = config.mail_envelope_from, bsw@989: from = config.mail_from, bsw@989: reply_to = config.mail_reply_to, bsw@989: to = email, bsw@989: subject = config.mail_subject_prefix .. _"Login name request", bsw@989: content_type = "text/plain; charset=UTF-8", bsw@989: content = content bsw@989: }