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.
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 } |