liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 111:bf885faf3452

add initiator support in delegation

if a delegation is issued from the initiative view, the initiators
from that one are added to the delegation target list. this makes it easier to delegate to the author without the need to add him to the contact list.
author Daniel Poelzleithner <poelzi@poelzi.org>
date Mon Sep 20 20:32:04 2010 +0200 (2010-09-20)
parents 3da86120cadd
children 217653875fbb 9345ea6af3b2
rev   line source
bsw@91 1 local code = param.get("code")
bsw@91 2
bsw@91 3 local invite_code = InviteCode:new_selector()
bsw@91 4 :add_where{ "code = ?", code }
bsw@91 5 :optional_object_mode()
bsw@91 6 :for_update()
bsw@91 7 :exec()
bsw/jbe@5 8
bsw/jbe@5 9 if not invite_code or invite_code.used then
bsw/jbe@5 10 slot.put_into("error", _"The code you've entered is invalid")
bsw/jbe@5 11 request.redirect{
bsw/jbe@5 12 mode = "forward",
bsw/jbe@5 13 module = "index",
bsw/jbe@5 14 view = "register"
bsw/jbe@5 15 }
bsw/jbe@5 16 return false
bsw/jbe@5 17 end
bsw/jbe@5 18
bsw/jbe@6 19 local notify_email = param.get("notify_email")
bsw/jbe@5 20
bsw/jbe@6 21 if invite_code and not notify_email then
bsw/jbe@6 22 request.redirect{
bsw/jbe@6 23 mode = "redirect",
bsw/jbe@6 24 module = "index",
bsw/jbe@6 25 view = "register",
bsw/jbe@6 26 params = { code = invite_code.code }
bsw/jbe@6 27 }
bsw/jbe@6 28 return false
bsw/jbe@6 29 end
bsw/jbe@6 30
bsw/jbe@6 31 if #notify_email < 5 then
bsw/jbe@6 32 slot.put_into("error", _"Email address too short!")
bsw/jbe@5 33 request.redirect{
bsw/jbe@5 34 mode = "redirect",
bsw/jbe@5 35 module = "index",
bsw/jbe@5 36 view = "register",
bsw/jbe@5 37 params = { code = invite_code.code }
bsw/jbe@5 38 }
bsw/jbe@5 39 return false
bsw/jbe@5 40 end
bsw/jbe@5 41
bsw/jbe@6 42 local name = param.get("name")
bsw/jbe@6 43
bsw/jbe@6 44 if notify_email and not name then
bsw/jbe@6 45 request.redirect{
bsw/jbe@6 46 mode = "redirect",
bsw/jbe@6 47 module = "index",
bsw/jbe@6 48 view = "register",
bsw/jbe@6 49 params = {
bsw/jbe@6 50 code = invite_code.code,
bsw/jbe@6 51 notify_email = notify_email
bsw/jbe@6 52 }
bsw/jbe@6 53 }
bsw/jbe@6 54 return false
bsw/jbe@6 55 end
bsw/jbe@6 56
bsw/jbe@6 57 name = util.trim(name)
bsw/jbe@6 58
bsw/jbe@6 59 if #name < 3 then
bsw/jbe@6 60 slot.put_into("error", _"This username is too short!")
bsw/jbe@6 61 request.redirect{
bsw/jbe@6 62 mode = "redirect",
bsw/jbe@6 63 module = "index",
bsw/jbe@6 64 view = "register",
bsw/jbe@6 65 params = {
bsw/jbe@6 66 code = invite_code.code,
bsw/jbe@6 67 notify_email = notify_email
bsw/jbe@6 68 }
bsw/jbe@6 69 }
bsw/jbe@6 70 return false
bsw/jbe@6 71 end
bsw/jbe@6 72
bsw/jbe@5 73 if Member:by_name(name) then
bsw/jbe@5 74 slot.put_into("error", _"This name is already taken, please choose another one!")
bsw/jbe@5 75 request.redirect{
bsw/jbe@5 76 mode = "redirect",
bsw/jbe@5 77 module = "index",
bsw/jbe@5 78 view = "register",
bsw/jbe@6 79 params = {
bsw/jbe@6 80 code = invite_code.code,
bsw/jbe@6 81 notify_email = notify_email
bsw/jbe@6 82 }
bsw/jbe@5 83 }
bsw/jbe@5 84 return false
bsw/jbe@5 85 end
bsw/jbe@5 86
bsw/jbe@5 87 local login = param.get("login")
bsw/jbe@5 88
bsw/jbe@5 89 if name and not login then
bsw/jbe@5 90 request.redirect{
bsw/jbe@5 91 mode = "redirect",
bsw/jbe@5 92 module = "index",
bsw/jbe@5 93 view = "register",
bsw/jbe@5 94 params = {
bsw/jbe@5 95 code = invite_code.code,
bsw/jbe@6 96 notify_email = notify_email,
bsw/jbe@6 97 name = name
bsw/jbe@6 98 }
bsw/jbe@6 99 }
bsw/jbe@6 100 return false
bsw/jbe@6 101 end
bsw/jbe@6 102
bsw/jbe@6 103 login = util.trim(login)
bsw/jbe@6 104
bsw/jbe@6 105 if #login < 3 then
bsw/jbe@6 106 slot.put_into("error", _"This login is too short!")
bsw/jbe@6 107 request.redirect{
bsw/jbe@6 108 mode = "redirect",
bsw/jbe@6 109 module = "index",
bsw/jbe@6 110 view = "register",
bsw/jbe@6 111 params = {
bsw/jbe@6 112 code = invite_code.code,
bsw/jbe@6 113 notify_email = notify_email,
bsw/jbe@5 114 name = name
bsw/jbe@5 115 }
bsw/jbe@5 116 }
bsw/jbe@5 117 return false
bsw/jbe@5 118 end
bsw/jbe@5 119
bsw/jbe@5 120 if Member:by_login(login) then
bsw/jbe@5 121 slot.put_into("error", _"This login is already taken, please choose another one!")
bsw/jbe@5 122 request.redirect{
bsw/jbe@5 123 mode = "redirect",
bsw/jbe@5 124 module = "index",
bsw/jbe@5 125 view = "register",
bsw/jbe@5 126 params = {
bsw/jbe@5 127 code = invite_code.code,
bsw/jbe@6 128 notify_email = notify_email,
bsw/jbe@5 129 name = name
bsw/jbe@5 130 }
bsw/jbe@5 131 }
bsw/jbe@5 132 return false
bsw/jbe@5 133 end
bsw/jbe@5 134
bsw@79 135 if login and param.get("step") ~= "5" then
bsw/jbe@6 136 request.redirect{
bsw/jbe@6 137 mode = "redirect",
bsw/jbe@6 138 module = "index",
bsw/jbe@6 139 view = "register",
bsw/jbe@6 140 params = {
bsw/jbe@6 141 code = invite_code.code,
bsw/jbe@6 142 notify_email = notify_email,
bsw/jbe@6 143 name = name,
bsw/jbe@6 144 login = login
bsw/jbe@6 145 }
bsw/jbe@6 146 }
bsw/jbe@6 147 return false
bsw/jbe@6 148 end
bsw/jbe@6 149
bsw@79 150 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@79 151 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@79 152 if not accepted then
bsw@79 153 slot.put_into("error", checkbox.not_accepted_error)
bsw@79 154 return false
bsw@79 155 end
bsw@79 156 end
bsw/jbe@6 157
bsw/jbe@5 158 local password1 = param.get("password1")
bsw/jbe@5 159 local password2 = param.get("password2")
bsw/jbe@5 160
bsw/jbe@5 161 if login and not password1 then
bsw/jbe@5 162 request.redirect{
bsw/jbe@5 163 mode = "redirect",
bsw/jbe@5 164 module = "index",
bsw/jbe@5 165 view = "register",
bsw/jbe@5 166 params = {
bsw/jbe@5 167 code = invite_code.code,
bsw/jbe@6 168 notify_email = notify_email,
bsw/jbe@5 169 name = name,
bsw/jbe@5 170 login = login
bsw/jbe@5 171 }
bsw/jbe@5 172 }
bsw@79 173 --]]
bsw/jbe@5 174 return false
bsw/jbe@5 175 end
bsw/jbe@5 176
bsw/jbe@5 177 if password1 ~= password2 then
bsw/jbe@5 178 slot.put_into("error", _"Passwords don't match!")
bsw/jbe@5 179 return false
bsw/jbe@5 180 end
bsw/jbe@5 181
bsw/jbe@5 182 if #password1 < 8 then
bsw/jbe@5 183 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
bsw/jbe@5 184 return false
bsw/jbe@5 185 end
bsw/jbe@5 186
bsw/jbe@5 187 local member = Member:new()
bsw/jbe@5 188
bsw/jbe@5 189 member.login = login
bsw/jbe@5 190 member.name = name
bsw/jbe@6 191
bsw/jbe@6 192 local success = member:set_notify_email(notify_email)
bsw/jbe@6 193 if not success then
bsw/jbe@6 194 slot.put_into("error", _"Can't send confirmation email")
bsw/jbe@6 195 return
bsw/jbe@6 196 end
bsw/jbe@6 197
bsw/jbe@5 198 member:set_password(password1)
bsw/jbe@5 199 member:save()
bsw/jbe@5 200
bsw@83 201 local now = db:query("SELECT now() AS now", "object").now
bsw@83 202
bsw@79 203 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@79 204 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@83 205 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
bsw@79 206 end
bsw@79 207
bsw/jbe@5 208 invite_code.member_id = member.id
bsw/jbe@5 209 invite_code.used = "now"
bsw/jbe@5 210 invite_code:save()
bsw/jbe@5 211
bsw/jbe@5 212 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
bsw/jbe@5 213
bsw/jbe@6 214 request.redirect{
bsw/jbe@6 215 mode = "redirect",
bsw/jbe@6 216 module = "index",
bsw/jbe@6 217 view = "login",
bsw/jbe@6 218 }

Impressum / About Us