liquid_feedback_frontend

view app/main/index/_action/register.lua @ 390:cf25fef4b202

Send confirmation mail after registration only when email address has been changed
author bsw
date Mon Mar 05 19:53:26 2012 +0100 (2012-03-05)
parents 14929096532c
children 4cc560fb92d4
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 if not member then
11 slot.put_into("error", _"The code you've entered is invalid")
12 request.redirect{
13 mode = "forward",
14 module = "index",
15 view = "register"
16 }
17 return false
18 end
20 local notify_email = param.get("notify_email")
22 if not config.locked_profile_fields.notify_email and notify_email then
23 if #notify_email < 5 then
24 slot.put_into("error", _"Email address too short!")
25 request.redirect{
26 mode = "redirect",
27 module = "index",
28 view = "register",
29 params = { code = member.invite_code }
30 }
31 return false
32 end
33 member.notify_email = notify_email
34 end
36 if member and not member.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 username 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 = member.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 = member.notify_email,
76 step = 1
77 }
78 }
79 return false
80 end
82 member.name = name
84 end
86 if member.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 = member.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 = member.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 = member.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 = member.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 = member.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 member.login = login
196 member.name = name
198 if notify_email ~= member.notify_email then
199 local success = member:set_notify_email(notify_email)
200 if not success then
201 slot.put_into("error", _"Can't send confirmation email")
202 return
203 end
204 end
206 member:set_password(password1)
208 local now = db:query("SELECT now() AS now", "object").now
210 for i, checkbox in ipairs(config.use_terms_checkboxes) do
211 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
212 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
213 end
215 member.activated = 'now'
216 member.active = true
217 member.last_activity = 'now'
218 member:save()
220 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
222 request.redirect{
223 mode = "redirect",
224 module = "index",
225 view = "login",
226 }
227 end

Impressum / About Us