liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 351:2a20b9b547ac

While registering with invite key allow to choose the name the member already has
author bsw
date Wed Feb 29 20:12:41 2012 +0100 (2012-02-29)
parents c587d8762e62
children 07b7826487c0
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@351 66 local check_member = Member:by_name(name)
bsw@351 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@286 75 notify_email = member.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@286 86 if member.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@286 93 notify_email = member.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@286 112 notify_email = member.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@286 120 if Member:by_login(login) then
bsw@286 121 slot.put_into("error", _"This login is already taken, please choose another one!")
bsw@286 122 request.redirect{
bsw@286 123 mode = "redirect",
bsw@286 124 module = "index",
bsw@286 125 view = "register",
bsw@286 126 params = {
bsw@286 127 code = member.invite_code,
bsw@286 128 notify_email = member.notify_email,
bsw@286 129 name = member.name,
bsw@286 130 step = 1
bsw@286 131 }
bsw@286 132 }
bsw@286 133 return false
bsw@286 134 end
bsw@286 135 member.login = login
bsw/jbe@5 136 end
bsw/jbe@5 137
bsw@286 138 if member.name and not member.login then
bsw/jbe@5 139 request.redirect{
bsw/jbe@5 140 mode = "redirect",
bsw/jbe@5 141 module = "index",
bsw/jbe@5 142 view = "register",
bsw/jbe@5 143 params = {
bsw@286 144 code = member.invite_code,
bsw@286 145 notify_email = member.notify_email,
bsw@286 146 name = member.name,
bsw@286 147 step = 1
bsw/jbe@5 148 }
bsw/jbe@5 149 }
bsw/jbe@5 150 return false
bsw/jbe@5 151 end
bsw/jbe@5 152
bsw@286 153 local step = param.get("step", atom.integer)
bsw@286 154
bsw@286 155 if step > 2 then
bsw/jbe@5 156
bsw@286 157 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 158 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 159 if not accepted then
bsw@286 160 slot.put_into("error", checkbox.not_accepted_error)
bsw@286 161 return false
bsw@286 162 end
bsw@286 163 end
bsw@286 164
bsw@286 165 local password1 = param.get("password1")
bsw@286 166 local password2 = param.get("password2")
bsw/jbe@6 167
bsw@286 168 if login and not password1 then
bsw@286 169 request.redirect{
bsw@286 170 mode = "redirect",
bsw@286 171 module = "index",
bsw@286 172 view = "register",
bsw@286 173 params = {
bsw@286 174 code = member.invite_code,
bsw@286 175 notify_email = member.notify_email,
bsw@286 176 name = member.name,
bsw@286 177 login = member.login
bsw@286 178 }
bsw@286 179 }
bsw@286 180 --]]
bsw@286 181 return false
bsw@286 182 end
bsw/jbe@6 183
bsw@286 184 if password1 ~= password2 then
bsw@286 185 slot.put_into("error", _"Passwords don't match!")
bsw@286 186 return false
bsw@286 187 end
bsw@83 188
bsw@286 189 if #password1 < 8 then
bsw@286 190 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
bsw@286 191 return false
bsw@286 192 end
bsw@286 193
bsw@286 194 member.login = login
bsw@286 195 member.name = name
bsw@286 196
bsw@286 197 local success = member:set_notify_email(notify_email)
bsw@286 198 if not success then
bsw@286 199 slot.put_into("error", _"Can't send confirmation email")
bsw@286 200 return
bsw@286 201 end
bsw@286 202
bsw@286 203 member:set_password(password1)
bsw@286 204
bsw@286 205 local now = db:query("SELECT now() AS now", "object").now
bsw@79 206
bsw@286 207 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 208 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 209 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
bsw@286 210 end
bsw/jbe@5 211
bsw@286 212 member.activated = 'now'
bsw@286 213 member.active = true
bsw@286 214 member.last_activity = 'now'
bsw@286 215 member:save()
bsw/jbe@5 216
bsw@286 217 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
bsw@286 218
bsw@286 219 request.redirect{
bsw@286 220 mode = "redirect",
bsw@286 221 module = "index",
bsw@286 222 view = "login",
bsw@286 223 }
bsw@286 224 end
bsw@286 225

Impressum / About Us