liquid_feedback_frontend
annotate app/main/index/_action/register.lua @ 172:165f4bd02cf3
don't show the first draft of a new initiative as a new draft event in the timeline
new draft should only show changes of drafts drafts of new initiatives as they are handled by the new initiative event
new draft should only show changes of drafts drafts of new initiatives as they are handled by the new initiative event
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Sun Oct 10 19:40:32 2010 +0200 (2010-10-10) |
| 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 } |