liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 940:064fcd8f784f

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

Impressum / About Us