liquid_feedback_frontend

view app/main/index/_action/register.lua @ 952:ba824959fc1f

Fixed handling of notify_email while registering
author bsw
date Mon Dec 10 19:59:07 2012 +0100 (2012-12-10)
parents 26a6d3330bab
children 58f48a8a202a
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 :add_where{ "NOT locked" }
7 :optional_object_mode()
8 :for_update()
9 :exec()
11 if not member then
12 slot.put_into("error", _"The code you've entered is invalid")
13 request.redirect{
14 mode = "forward",
15 module = "index",
16 view = "register"
17 }
18 return false
19 end
21 local notify_email = param.get("notify_email")
23 if not config.locked_profile_fields.notify_email and notify_email then
24 if #notify_email < 5 then
25 slot.put_into("error", _"Email address too short!")
26 request.redirect{
27 mode = "redirect",
28 module = "index",
29 view = "register",
30 params = { code = member.invite_code }
31 }
32 return false
33 end
34 end
36 if member and not notify_email then
37 request.redirect{
38 mode = "redirect",
39 module = "index",
40 view = "register",
41 params = { code = member.invite_code, step = 1 }
42 }
43 return false
44 end
47 local name = util.trim(param.get("name"))
49 if not config.locked_profile_fields.name and name then
51 if #name < 3 then
52 slot.put_into("error", _"This screen name is too short!")
53 request.redirect{
54 mode = "redirect",
55 module = "index",
56 view = "register",
57 params = {
58 code = member.invite_code,
59 notify_email = notify_email,
60 step = 1
61 }
62 }
63 return false
64 end
66 local check_member = Member:by_name(name)
67 if check_member and check_member.id ~= member.id then
68 slot.put_into("error", _"This name is already taken, please choose another one!")
69 request.redirect{
70 mode = "redirect",
71 module = "index",
72 view = "register",
73 params = {
74 code = member.invite_code,
75 notify_email = notify_email,
76 step = 1
77 }
78 }
79 return false
80 end
82 member.name = name
84 end
86 if notify_email and not member.name then
87 request.redirect{
88 mode = "redirect",
89 module = "index",
90 view = "register",
91 params = {
92 code = member.invite_code,
93 notify_email = notify_email,
94 step = 1
95 }
96 }
97 return false
98 end
101 local login = util.trim(param.get("login"))
103 if not config.locked_profile_fields.login and login then
104 if #login < 3 then
105 slot.put_into("error", _"This login is too short!")
106 request.redirect{
107 mode = "redirect",
108 module = "index",
109 view = "register",
110 params = {
111 code = member.invite_code,
112 notify_email = notify_email,
113 name = member.name,
114 step = 1
115 }
116 }
117 return false
118 end
120 local check_member = Member:by_login(login)
121 if check_member and check_member.id ~= member.id then
122 slot.put_into("error", _"This login is already taken, please choose another one!")
123 request.redirect{
124 mode = "redirect",
125 module = "index",
126 view = "register",
127 params = {
128 code = member.invite_code,
129 notify_email = notify_email,
130 name = member.name,
131 step = 1
132 }
133 }
134 return false
135 end
136 member.login = login
137 end
139 if member.name and not member.login then
140 request.redirect{
141 mode = "redirect",
142 module = "index",
143 view = "register",
144 params = {
145 code = member.invite_code,
146 notify_email = notify_email,
147 name = member.name,
148 step = 1
149 }
150 }
151 return false
152 end
154 local step = param.get("step", atom.integer)
156 if step > 2 then
158 for i, checkbox in ipairs(config.use_terms_checkboxes) do
159 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
160 if not accepted then
161 slot.put_into("error", checkbox.not_accepted_error)
162 return false
163 end
164 end
166 local password1 = param.get("password1")
167 local password2 = param.get("password2")
169 if login and not password1 then
170 request.redirect{
171 mode = "redirect",
172 module = "index",
173 view = "register",
174 params = {
175 code = member.invite_code,
176 notify_email = notify_email,
177 name = member.name,
178 login = member.login
179 }
180 }
181 --]]
182 return false
183 end
185 if password1 ~= password2 then
186 slot.put_into("error", _"Passwords don't match!")
187 return false
188 end
190 if #password1 < 8 then
191 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
192 return false
193 end
195 if not config.locked_profile_fields.login then
196 member.login = login
197 end
199 if not config.locked_profile_fields.name then
200 member.name = name
201 end
203 if notify_email ~= member.notify_email then
204 local success = member:set_notify_email(notify_email)
205 if not success then
206 slot.put_into("error", _"Can't send confirmation email")
207 return
208 end
209 end
211 member:set_password(password1)
213 local now = db:query("SELECT now() AS now", "object").now
215 for i, checkbox in ipairs(config.use_terms_checkboxes) do
216 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
217 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
218 end
220 member.activated = 'now'
221 member.active = true
222 member.last_activity = 'now'
223 member:save()
225 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
227 request.redirect{
228 mode = "redirect",
229 module = "index",
230 view = "login",
231 }
232 end

Impressum / About Us