liquid_feedback_frontend
annotate app/main/index/_action/register.lua @ 161:ff6162022615
add more suggestion api fields
fixes bug #325
fixes bug #325
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Sat Oct 09 14:29:19 2010 +0200 (2010-10-09) |
| 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 } |