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