liquid_feedback_frontend

view app/main/index/_action/register.lua @ 83:8d760110ee4a

Trace timestamp when user accepts a use term checkbox
author bsw
date Wed Jul 28 17:20:49 2010 +0200 (2010-07-28)
parents 26c8177ef348
children 3da86120cadd
line source
1 local invite_code = InviteCode:by_code(param.get("code"))
3 if not invite_code or invite_code.used then
4 slot.put_into("error", _"The code you've entered is invalid")
5 request.redirect{
6 mode = "forward",
7 module = "index",
8 view = "register"
9 }
10 return false
11 end
13 local notify_email = param.get("notify_email")
15 if invite_code and not notify_email then
16 request.redirect{
17 mode = "redirect",
18 module = "index",
19 view = "register",
20 params = { code = invite_code.code }
21 }
22 return false
23 end
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 = invite_code.code }
32 }
33 return false
34 end
36 local name = param.get("name")
38 if notify_email and not name then
39 request.redirect{
40 mode = "redirect",
41 module = "index",
42 view = "register",
43 params = {
44 code = invite_code.code,
45 notify_email = notify_email
46 }
47 }
48 return false
49 end
51 name = util.trim(name)
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 = invite_code.code,
61 notify_email = notify_email
62 }
63 }
64 return false
65 end
67 if Member:by_name(name) 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 = invite_code.code,
75 notify_email = notify_email
76 }
77 }
78 return false
79 end
81 local login = param.get("login")
83 if name and not login then
84 request.redirect{
85 mode = "redirect",
86 module = "index",
87 view = "register",
88 params = {
89 code = invite_code.code,
90 notify_email = notify_email,
91 name = name
92 }
93 }
94 return false
95 end
97 login = util.trim(login)
99 if #login < 3 then
100 slot.put_into("error", _"This login is too short!")
101 request.redirect{
102 mode = "redirect",
103 module = "index",
104 view = "register",
105 params = {
106 code = invite_code.code,
107 notify_email = notify_email,
108 name = name
109 }
110 }
111 return false
112 end
114 if Member:by_login(login) then
115 slot.put_into("error", _"This login is already taken, please choose another one!")
116 request.redirect{
117 mode = "redirect",
118 module = "index",
119 view = "register",
120 params = {
121 code = invite_code.code,
122 notify_email = notify_email,
123 name = name
124 }
125 }
126 return false
127 end
129 if login and param.get("step") ~= "5" then
130 request.redirect{
131 mode = "redirect",
132 module = "index",
133 view = "register",
134 params = {
135 code = invite_code.code,
136 notify_email = notify_email,
137 name = name,
138 login = login
139 }
140 }
141 return false
142 end
144 for i, checkbox in ipairs(config.use_terms_checkboxes) do
145 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
146 if not accepted then
147 slot.put_into("error", checkbox.not_accepted_error)
148 return false
149 end
150 end
152 local password1 = param.get("password1")
153 local password2 = param.get("password2")
155 if login and not password1 then
156 request.redirect{
157 mode = "redirect",
158 module = "index",
159 view = "register",
160 params = {
161 code = invite_code.code,
162 notify_email = notify_email,
163 name = name,
164 login = login
165 }
166 }
167 --]]
168 return false
169 end
171 if password1 ~= password2 then
172 slot.put_into("error", _"Passwords don't match!")
173 return false
174 end
176 if #password1 < 8 then
177 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
178 return false
179 end
181 local member = Member:new()
183 member.login = login
184 member.name = name
186 local success = member:set_notify_email(notify_email)
187 if not success then
188 slot.put_into("error", _"Can't send confirmation email")
189 return
190 end
192 member:set_password(password1)
193 member:save()
195 local now = db:query("SELECT now() AS now", "object").now
197 for i, checkbox in ipairs(config.use_terms_checkboxes) do
198 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
199 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
200 end
202 invite_code.member_id = member.id
203 invite_code.used = "now"
204 invite_code:save()
206 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
208 request.redirect{
209 mode = "redirect",
210 module = "index",
211 view = "login",
212 }

Impressum / About Us