liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 952:ba824959fc1f

Fixed handling of notify_email while registering
author bsw
date Mon Dec 10 19:59:07 2012 +0100 (2012-12-10)
parents 26a6d3330bab
children 58f48a8a202a
rev   line source
mail@237 1 local code = util.trim(param.get("code"))
bsw@91 2
bsw@286 3 local member = Member:new_selector()
bsw@286 4 :add_where{ "invite_code = ?", code }
bsw@286 5 :add_where{ "activated ISNULL" }
bsw@811 6 :add_where{ "NOT locked" }
bsw@91 7 :optional_object_mode()
bsw@91 8 :for_update()
bsw@91 9 :exec()
bsw@391 10
bsw@286 11 if not member then
bsw@286 12 slot.put_into("error", _"The code you've entered is invalid")
bsw/jbe@5 13 request.redirect{
bsw/jbe@5 14 mode = "forward",
bsw/jbe@5 15 module = "index",
bsw/jbe@5 16 view = "register"
bsw/jbe@5 17 }
bsw/jbe@5 18 return false
bsw/jbe@5 19 end
bsw/jbe@5 20
bsw/jbe@6 21 local notify_email = param.get("notify_email")
bsw/jbe@5 22
bsw@286 23 if not config.locked_profile_fields.notify_email and notify_email then
bsw@286 24 if #notify_email < 5 then
bsw@286 25 slot.put_into("error", _"Email address too short!")
bsw@286 26 request.redirect{
bsw@286 27 mode = "redirect",
bsw@286 28 module = "index",
bsw@286 29 view = "register",
bsw@286 30 params = { code = member.invite_code }
bsw@286 31 }
bsw@286 32 return false
bsw@286 33 end
bsw/jbe@6 34 end
bsw/jbe@6 35
bsw@952 36 if member and not notify_email then
bsw/jbe@5 37 request.redirect{
bsw/jbe@5 38 mode = "redirect",
bsw/jbe@5 39 module = "index",
bsw/jbe@5 40 view = "register",
bsw@286 41 params = { code = member.invite_code, step = 1 }
bsw/jbe@5 42 }
bsw/jbe@5 43 return false
bsw/jbe@5 44 end
bsw/jbe@5 45
bsw@286 46
bsw@286 47 local name = util.trim(param.get("name"))
bsw@286 48
bsw@286 49 if not config.locked_profile_fields.name and name then
bsw/jbe@6 50
bsw@286 51 if #name < 3 then
bsw@753 52 slot.put_into("error", _"This screen name is too short!")
bsw@286 53 request.redirect{
bsw@286 54 mode = "redirect",
bsw@286 55 module = "index",
bsw@286 56 view = "register",
bsw@286 57 params = {
bsw@286 58 code = member.invite_code,
bsw@952 59 notify_email = notify_email,
bsw@286 60 step = 1
bsw@286 61 }
bsw/jbe@6 62 }
bsw@286 63 return false
bsw@286 64 end
bsw@286 65
bsw@351 66 local check_member = Member:by_name(name)
bsw@353 67 if check_member and check_member.id ~= member.id then
bsw@286 68 slot.put_into("error", _"This name is already taken, please choose another one!")
bsw@286 69 request.redirect{
bsw@286 70 mode = "redirect",
bsw@286 71 module = "index",
bsw@286 72 view = "register",
bsw@286 73 params = {
bsw@286 74 code = member.invite_code,
bsw@952 75 notify_email = notify_email,
bsw@286 76 step = 1
bsw@286 77 }
bsw@286 78 }
bsw@286 79 return false
bsw@286 80 end
bsw@286 81
bsw@286 82 member.name = name
bsw@286 83
bsw/jbe@6 84 end
bsw/jbe@6 85
bsw@952 86 if notify_email and not member.name then
bsw/jbe@6 87 request.redirect{
bsw/jbe@6 88 mode = "redirect",
bsw/jbe@6 89 module = "index",
bsw/jbe@6 90 view = "register",
bsw/jbe@6 91 params = {
bsw@286 92 code = member.invite_code,
bsw@952 93 notify_email = notify_email,
bsw@286 94 step = 1
bsw/jbe@5 95 }
bsw/jbe@5 96 }
bsw/jbe@5 97 return false
bsw/jbe@5 98 end
bsw/jbe@5 99
bsw@286 100
bsw@286 101 local login = util.trim(param.get("login"))
bsw@286 102
bsw@286 103 if not config.locked_profile_fields.login and login then
bsw@286 104 if #login < 3 then
bsw@286 105 slot.put_into("error", _"This login is too short!")
bsw@286 106 request.redirect{
bsw@286 107 mode = "redirect",
bsw@286 108 module = "index",
bsw@286 109 view = "register",
bsw@286 110 params = {
bsw@286 111 code = member.invite_code,
bsw@952 112 notify_email = notify_email,
bsw@286 113 name = member.name,
bsw@286 114 step = 1
bsw@286 115 }
bsw/jbe@5 116 }
bsw@286 117 return false
bsw@286 118 end
bsw@286 119
bsw@354 120 local check_member = Member:by_login(login)
bsw@354 121 if check_member and check_member.id ~= member.id then
bsw@286 122 slot.put_into("error", _"This login is already taken, please choose another one!")
bsw@286 123 request.redirect{
bsw@286 124 mode = "redirect",
bsw@286 125 module = "index",
bsw@286 126 view = "register",
bsw@286 127 params = {
bsw@286 128 code = member.invite_code,
bsw@952 129 notify_email = notify_email,
bsw@286 130 name = member.name,
bsw@286 131 step = 1
bsw@286 132 }
bsw@286 133 }
bsw@286 134 return false
bsw@286 135 end
bsw@286 136 member.login = login
bsw/jbe@5 137 end
bsw/jbe@5 138
bsw@286 139 if member.name and not member.login then
bsw/jbe@5 140 request.redirect{
bsw/jbe@5 141 mode = "redirect",
bsw/jbe@5 142 module = "index",
bsw/jbe@5 143 view = "register",
bsw/jbe@5 144 params = {
bsw@286 145 code = member.invite_code,
bsw@952 146 notify_email = notify_email,
bsw@286 147 name = member.name,
bsw@286 148 step = 1
bsw/jbe@5 149 }
bsw/jbe@5 150 }
bsw/jbe@5 151 return false
bsw/jbe@5 152 end
bsw/jbe@5 153
bsw@286 154 local step = param.get("step", atom.integer)
bsw@286 155
bsw@286 156 if step > 2 then
bsw/jbe@5 157
bsw@286 158 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 159 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 160 if not accepted then
bsw@286 161 slot.put_into("error", checkbox.not_accepted_error)
bsw@286 162 return false
bsw@286 163 end
bsw@286 164 end
bsw@286 165
bsw@286 166 local password1 = param.get("password1")
bsw@286 167 local password2 = param.get("password2")
bsw/jbe@6 168
bsw@286 169 if login and not password1 then
bsw@286 170 request.redirect{
bsw@286 171 mode = "redirect",
bsw@286 172 module = "index",
bsw@286 173 view = "register",
bsw@286 174 params = {
bsw@286 175 code = member.invite_code,
bsw@952 176 notify_email = notify_email,
bsw@286 177 name = member.name,
bsw@286 178 login = member.login
bsw@286 179 }
bsw@286 180 }
bsw@286 181 --]]
bsw@286 182 return false
bsw@286 183 end
bsw/jbe@6 184
bsw@286 185 if password1 ~= password2 then
bsw@286 186 slot.put_into("error", _"Passwords don't match!")
bsw@286 187 return false
bsw@286 188 end
bsw@83 189
bsw@286 190 if #password1 < 8 then
bsw@286 191 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
bsw@286 192 return false
bsw@286 193 end
bsw@286 194
bsw@941 195 if not config.locked_profile_fields.login then
bsw@940 196 member.login = login
bsw@940 197 end
bsw@940 198
bsw@941 199 if not config.locked_profile_fields.name then
bsw@940 200 member.name = name
bsw@940 201 end
bsw@286 202
bsw@952 203 if notify_email ~= member.notify_email then
bsw@390 204 local success = member:set_notify_email(notify_email)
bsw@390 205 if not success then
bsw@390 206 slot.put_into("error", _"Can't send confirmation email")
bsw@390 207 return
bsw@390 208 end
bsw@286 209 end
bsw@390 210
bsw@286 211 member:set_password(password1)
bsw@286 212
bsw@286 213 local now = db:query("SELECT now() AS now", "object").now
bsw@79 214
bsw@286 215 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 216 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 217 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
bsw@286 218 end
bsw/jbe@5 219
bsw@286 220 member.activated = 'now'
bsw@286 221 member.active = true
bsw@286 222 member.last_activity = 'now'
bsw@286 223 member:save()
bsw/jbe@5 224
bsw@286 225 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
bsw@286 226
bsw@286 227 request.redirect{
bsw@286 228 mode = "redirect",
bsw@286 229 module = "index",
bsw@286 230 view = "login",
bsw@286 231 }
bsw@286 232 end
bsw@952 233

Impressum / About Us