liquid_feedback_frontend

view app/main/index/_action/register.lua @ 391:4cc560fb92d4

Fix error in registration process
author bsw
date Mon Mar 05 20:17:25 2012 +0100 (2012-03-05)
parents cf25fef4b202
children 05b357bee352
line source
1 local code = util.trim(param.get("code"))
3 local member = Member:new_selector()
4 :add_where{ "invite_code = ?", code }
5 :add_where{ "activated ISNULL" }
6 :optional_object_mode()
7 :for_update()
8 :exec()
10 local old_notify_email = member.notify_email
12 if not member then
13 slot.put_into("error", _"The code you've entered is invalid")
14 request.redirect{
15 mode = "forward",
16 module = "index",
17 view = "register"
18 }
19 return false
20 end
22 local notify_email = param.get("notify_email")
24 if not config.locked_profile_fields.notify_email and notify_email then
25 if #notify_email < 5 then
26 slot.put_into("error", _"Email address too short!")
27 request.redirect{
28 mode = "redirect",
29 module = "index",
30 view = "register",
31 params = { code = member.invite_code }
32 }
33 return false
34 end
35 member.notify_email = notify_email
36 end
38 if member and not member.notify_email then
39 request.redirect{
40 mode = "redirect",
41 module = "index",
42 view = "register",
43 params = { code = member.invite_code, step = 1 }
44 }
45 return false
46 end
49 local name = util.trim(param.get("name"))
51 if not config.locked_profile_fields.name and name then
53 if #name < 3 then
54 slot.put_into("error", _"This username is too short!")
55 request.redirect{
56 mode = "redirect",
57 module = "index",
58 view = "register",
59 params = {
60 code = member.invite_code,
61 notify_email = member.notify_email,
62 step = 1
63 }
64 }
65 return false
66 end
68 local check_member = Member:by_name(name)
69 if check_member and check_member.id ~= member.id then
70 slot.put_into("error", _"This name is already taken, please choose another one!")
71 request.redirect{
72 mode = "redirect",
73 module = "index",
74 view = "register",
75 params = {
76 code = member.invite_code,
77 notify_email = member.notify_email,
78 step = 1
79 }
80 }
81 return false
82 end
84 member.name = name
86 end
88 if member.notify_email and not member.name then
89 request.redirect{
90 mode = "redirect",
91 module = "index",
92 view = "register",
93 params = {
94 code = member.invite_code,
95 notify_email = member.notify_email,
96 step = 1
97 }
98 }
99 return false
100 end
103 local login = util.trim(param.get("login"))
105 if not config.locked_profile_fields.login and login then
106 if #login < 3 then
107 slot.put_into("error", _"This login is too short!")
108 request.redirect{
109 mode = "redirect",
110 module = "index",
111 view = "register",
112 params = {
113 code = member.invite_code,
114 notify_email = member.notify_email,
115 name = member.name,
116 step = 1
117 }
118 }
119 return false
120 end
122 local check_member = Member:by_login(login)
123 if check_member and check_member.id ~= member.id then
124 slot.put_into("error", _"This login is already taken, please choose another one!")
125 request.redirect{
126 mode = "redirect",
127 module = "index",
128 view = "register",
129 params = {
130 code = member.invite_code,
131 notify_email = member.notify_email,
132 name = member.name,
133 step = 1
134 }
135 }
136 return false
137 end
138 member.login = login
139 end
141 if member.name and not member.login then
142 request.redirect{
143 mode = "redirect",
144 module = "index",
145 view = "register",
146 params = {
147 code = member.invite_code,
148 notify_email = member.notify_email,
149 name = member.name,
150 step = 1
151 }
152 }
153 return false
154 end
156 local step = param.get("step", atom.integer)
158 if step > 2 then
160 for i, checkbox in ipairs(config.use_terms_checkboxes) do
161 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
162 if not accepted then
163 slot.put_into("error", checkbox.not_accepted_error)
164 return false
165 end
166 end
168 local password1 = param.get("password1")
169 local password2 = param.get("password2")
171 if login and not password1 then
172 request.redirect{
173 mode = "redirect",
174 module = "index",
175 view = "register",
176 params = {
177 code = member.invite_code,
178 notify_email = member.notify_email,
179 name = member.name,
180 login = member.login
181 }
182 }
183 --]]
184 return false
185 end
187 if password1 ~= password2 then
188 slot.put_into("error", _"Passwords don't match!")
189 return false
190 end
192 if #password1 < 8 then
193 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
194 return false
195 end
197 member.login = login
198 member.name = name
200 if notify_email ~= old_notify_email then
201 local success = member:set_notify_email(notify_email)
202 if not success then
203 slot.put_into("error", _"Can't send confirmation email")
204 return
205 end
206 end
208 member:set_password(password1)
210 local now = db:query("SELECT now() AS now", "object").now
212 for i, checkbox in ipairs(config.use_terms_checkboxes) do
213 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
214 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
215 end
217 member.activated = 'now'
218 member.active = true
219 member.last_activity = 'now'
220 member:save()
222 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
224 request.redirect{
225 mode = "redirect",
226 module = "index",
227 view = "login",
228 }
229 end

Impressum / About Us