liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 286:c587d8762e62

Registration process updated for Core 2.0, lockable member fields, notification settings
author bsw
date Sat Feb 25 11:51:37 2012 +0100 (2012-02-25)
parents 08705cd76b3a
children 2a20b9b547ac
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@91 6 :optional_object_mode()
bsw@91 7 :for_update()
bsw@91 8 :exec()
bsw/jbe@5 9
bsw@286 10 if not member then
bsw@286 11 slot.put_into("error", _"The code you've entered is invalid")
bsw/jbe@5 12 request.redirect{
bsw/jbe@5 13 mode = "forward",
bsw/jbe@5 14 module = "index",
bsw/jbe@5 15 view = "register"
bsw/jbe@5 16 }
bsw/jbe@5 17 return false
bsw/jbe@5 18 end
bsw/jbe@5 19
bsw/jbe@6 20 local notify_email = param.get("notify_email")
bsw/jbe@5 21
bsw@286 22 if not config.locked_profile_fields.notify_email and notify_email then
bsw@286 23 if #notify_email < 5 then
bsw@286 24 slot.put_into("error", _"Email address too short!")
bsw@286 25 request.redirect{
bsw@286 26 mode = "redirect",
bsw@286 27 module = "index",
bsw@286 28 view = "register",
bsw@286 29 params = { code = member.invite_code }
bsw@286 30 }
bsw@286 31 return false
bsw@286 32 end
bsw@286 33 member.notify_email = notify_email
bsw/jbe@6 34 end
bsw/jbe@6 35
bsw@286 36 if member and not member.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@286 52 slot.put_into("error", _"This username 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@286 59 notify_email = member.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@286 66 if Member:by_name(name) then
bsw@286 67 slot.put_into("error", _"This name is already taken, please choose another one!")
bsw@286 68 request.redirect{
bsw@286 69 mode = "redirect",
bsw@286 70 module = "index",
bsw@286 71 view = "register",
bsw@286 72 params = {
bsw@286 73 code = member.invite_code,
bsw@286 74 notify_email = member.notify_email,
bsw@286 75 step = 1
bsw@286 76 }
bsw@286 77 }
bsw@286 78 return false
bsw@286 79 end
bsw@286 80
bsw@286 81 member.name = name
bsw@286 82
bsw/jbe@6 83 end
bsw/jbe@6 84
bsw@286 85 if member.notify_email and not member.name then
bsw/jbe@6 86 request.redirect{
bsw/jbe@6 87 mode = "redirect",
bsw/jbe@6 88 module = "index",
bsw/jbe@6 89 view = "register",
bsw/jbe@6 90 params = {
bsw@286 91 code = member.invite_code,
bsw@286 92 notify_email = member.notify_email,
bsw@286 93 step = 1
bsw/jbe@5 94 }
bsw/jbe@5 95 }
bsw/jbe@5 96 return false
bsw/jbe@5 97 end
bsw/jbe@5 98
bsw@286 99
bsw@286 100 local login = util.trim(param.get("login"))
bsw@286 101
bsw@286 102 if not config.locked_profile_fields.login and login then
bsw@286 103 if #login < 3 then
bsw@286 104 slot.put_into("error", _"This login is too short!")
bsw@286 105 request.redirect{
bsw@286 106 mode = "redirect",
bsw@286 107 module = "index",
bsw@286 108 view = "register",
bsw@286 109 params = {
bsw@286 110 code = member.invite_code,
bsw@286 111 notify_email = member.notify_email,
bsw@286 112 name = member.name,
bsw@286 113 step = 1
bsw@286 114 }
bsw/jbe@5 115 }
bsw@286 116 return false
bsw@286 117 end
bsw@286 118
bsw@286 119 if Member:by_login(login) then
bsw@286 120 slot.put_into("error", _"This login is already taken, please choose another one!")
bsw@286 121 request.redirect{
bsw@286 122 mode = "redirect",
bsw@286 123 module = "index",
bsw@286 124 view = "register",
bsw@286 125 params = {
bsw@286 126 code = member.invite_code,
bsw@286 127 notify_email = member.notify_email,
bsw@286 128 name = member.name,
bsw@286 129 step = 1
bsw@286 130 }
bsw@286 131 }
bsw@286 132 return false
bsw@286 133 end
bsw@286 134 member.login = login
bsw/jbe@5 135 end
bsw/jbe@5 136
bsw@286 137 if member.name and not member.login then
bsw/jbe@5 138 request.redirect{
bsw/jbe@5 139 mode = "redirect",
bsw/jbe@5 140 module = "index",
bsw/jbe@5 141 view = "register",
bsw/jbe@5 142 params = {
bsw@286 143 code = member.invite_code,
bsw@286 144 notify_email = member.notify_email,
bsw@286 145 name = member.name,
bsw@286 146 step = 1
bsw/jbe@5 147 }
bsw/jbe@5 148 }
bsw/jbe@5 149 return false
bsw/jbe@5 150 end
bsw/jbe@5 151
bsw@286 152 local step = param.get("step", atom.integer)
bsw@286 153
bsw@286 154 if step > 2 then
bsw/jbe@5 155
bsw@286 156 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 157 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 158 if not accepted then
bsw@286 159 slot.put_into("error", checkbox.not_accepted_error)
bsw@286 160 return false
bsw@286 161 end
bsw@286 162 end
bsw@286 163
bsw@286 164 local password1 = param.get("password1")
bsw@286 165 local password2 = param.get("password2")
bsw/jbe@6 166
bsw@286 167 if login and not password1 then
bsw@286 168 request.redirect{
bsw@286 169 mode = "redirect",
bsw@286 170 module = "index",
bsw@286 171 view = "register",
bsw@286 172 params = {
bsw@286 173 code = member.invite_code,
bsw@286 174 notify_email = member.notify_email,
bsw@286 175 name = member.name,
bsw@286 176 login = member.login
bsw@286 177 }
bsw@286 178 }
bsw@286 179 --]]
bsw@286 180 return false
bsw@286 181 end
bsw/jbe@6 182
bsw@286 183 if password1 ~= password2 then
bsw@286 184 slot.put_into("error", _"Passwords don't match!")
bsw@286 185 return false
bsw@286 186 end
bsw@83 187
bsw@286 188 if #password1 < 8 then
bsw@286 189 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
bsw@286 190 return false
bsw@286 191 end
bsw@286 192
bsw@286 193 member.login = login
bsw@286 194 member.name = name
bsw@286 195
bsw@286 196 local success = member:set_notify_email(notify_email)
bsw@286 197 if not success then
bsw@286 198 slot.put_into("error", _"Can't send confirmation email")
bsw@286 199 return
bsw@286 200 end
bsw@286 201
bsw@286 202 member:set_password(password1)
bsw@286 203
bsw@286 204 local now = db:query("SELECT now() AS now", "object").now
bsw@79 205
bsw@286 206 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 207 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 208 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
bsw@286 209 end
bsw/jbe@5 210
bsw@286 211 member.activated = 'now'
bsw@286 212 member.active = true
bsw@286 213 member.last_activity = 'now'
bsw@286 214 member:save()
bsw/jbe@5 215
bsw@286 216 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
bsw@286 217
bsw@286 218 request.redirect{
bsw@286 219 mode = "redirect",
bsw@286 220 module = "index",
bsw@286 221 view = "login",
bsw@286 222 }
bsw@286 223 end
bsw@286 224

Impressum / About Us