liquid_feedback_frontend
view app/main/index/_action/register.lua @ 330:b91269b2a43f
Added little border around help boxes and some css code cleanup
| author | bsw |
|---|---|
| date | Tue Feb 28 18:23:31 2012 +0100 (2012-02-28) |
| parents | c587d8762e62 |
| children | 2a20b9b547ac |
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 if Member:by_name(name) then
67 slot.put_into("error", _"This name is already taken, please choose another one!")
68 request.redirect{
69 mode = "redirect",
70 module = "index",
71 view = "register",
72 params = {
73 code = member.invite_code,
74 notify_email = member.notify_email,
75 step = 1
76 }
77 }
78 return false
79 end
81 member.name = name
83 end
85 if member.notify_email and not member.name then
86 request.redirect{
87 mode = "redirect",
88 module = "index",
89 view = "register",
90 params = {
91 code = member.invite_code,
92 notify_email = member.notify_email,
93 step = 1
94 }
95 }
96 return false
97 end
100 local login = util.trim(param.get("login"))
102 if not config.locked_profile_fields.login and login then
103 if #login < 3 then
104 slot.put_into("error", _"This login is too short!")
105 request.redirect{
106 mode = "redirect",
107 module = "index",
108 view = "register",
109 params = {
110 code = member.invite_code,
111 notify_email = member.notify_email,
112 name = member.name,
113 step = 1
114 }
115 }
116 return false
117 end
119 if Member:by_login(login) then
120 slot.put_into("error", _"This login is already taken, please choose another one!")
121 request.redirect{
122 mode = "redirect",
123 module = "index",
124 view = "register",
125 params = {
126 code = member.invite_code,
127 notify_email = member.notify_email,
128 name = member.name,
129 step = 1
130 }
131 }
132 return false
133 end
134 member.login = login
135 end
137 if member.name and not member.login then
138 request.redirect{
139 mode = "redirect",
140 module = "index",
141 view = "register",
142 params = {
143 code = member.invite_code,
144 notify_email = member.notify_email,
145 name = member.name,
146 step = 1
147 }
148 }
149 return false
150 end
152 local step = param.get("step", atom.integer)
154 if step > 2 then
156 for i, checkbox in ipairs(config.use_terms_checkboxes) do
157 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
158 if not accepted then
159 slot.put_into("error", checkbox.not_accepted_error)
160 return false
161 end
162 end
164 local password1 = param.get("password1")
165 local password2 = param.get("password2")
167 if login and not password1 then
168 request.redirect{
169 mode = "redirect",
170 module = "index",
171 view = "register",
172 params = {
173 code = member.invite_code,
174 notify_email = member.notify_email,
175 name = member.name,
176 login = member.login
177 }
178 }
179 --]]
180 return false
181 end
183 if password1 ~= password2 then
184 slot.put_into("error", _"Passwords don't match!")
185 return false
186 end
188 if #password1 < 8 then
189 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
190 return false
191 end
193 member.login = login
194 member.name = name
196 local success = member:set_notify_email(notify_email)
197 if not success then
198 slot.put_into("error", _"Can't send confirmation email")
199 return
200 end
202 member:set_password(password1)
204 local now = db:query("SELECT now() AS now", "object").now
206 for i, checkbox in ipairs(config.use_terms_checkboxes) do
207 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
208 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
209 end
211 member.activated = 'now'
212 member.active = true
213 member.last_activity = 'now'
214 member:save()
216 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
218 request.redirect{
219 mode = "redirect",
220 module = "index",
221 view = "login",
222 }
223 end
