liquid_feedback_frontend

view app/main/index/_action/register.lua @ 1859:02c34183b6df

Fixed wrong filename in INSTALL file
author bsw
date Tue Nov 28 18:54:51 2023 +0100 (5 months ago)
parents 00ce64d26e9e
children
line source
1 local code = util.trim(param.get("code"))
3 local member
5 if app.session.authority == "ldap" then
6 if not config.ldap.member or config.ldap.member.registration ~= "manual" then
7 return execute.view { module = "index", view = "403" }
8 end
9 member = ldap.create_member(app.session.authority_uid, true)
11 else
12 if config.registration_disabled then
13 return execute.view { module = "index", view = "403" }
14 end
15 member = Member:new_selector()
16 :add_where{ "invite_code = ?", code }
17 :add_where{ "activated ISNULL" }
18 :add_where{ "NOT locked" }
19 :optional_object_mode()
20 :for_update()
21 :exec()
22 end
25 if not member then
26 slot.put_into("error", _"The code you've entered is invalid")
27 request.redirect{
28 mode = "forward",
29 module = "index",
30 view = "register", params = {
31 redirect_module = param.get("redirect_module"),
32 redirect_view = param.get("redirect_view"),
33 redirect_id = param.get("redirect_id"),
34 redirect_params = param.get("redirect_params")
35 }
36 }
37 return false
38 end
40 local notify_email = param.get("notify_email")
42 if not util.is_profile_field_locked(member, "notify_email") and not member.notify_email and notify_email then
43 if #notify_email < 5 then
44 slot.put_into("error", _"Email address too short!")
45 request.redirect{
46 mode = "redirect",
47 module = "index",
48 view = "register",
49 params = {
50 code = member.invite_code,
51 skip = param.get("skip"),
52 redirect_module = param.get("redirect_module"),
53 redirect_view = param.get("redirect_view"),
54 redirect_id = param.get("redirect_id"),
55 redirect_params = param.get("redirect_params")
56 }
57 }
58 return false
59 end
60 end
62 if member and not util.is_profile_field_locked(member, "notify_email") and not member.notify_email and not notify_email then
63 request.redirect{
64 mode = "redirect",
65 module = "index",
66 view = "register",
67 params = {
68 code = member.invite_code,
69 skip = param.get("skip"),
70 step = 1,
71 redirect_module = param.get("redirect_module"),
72 redirect_view = param.get("redirect_view"),
73 redirect_id = param.get("redirect_id"),
74 redirect_params = param.get("redirect_params")
75 }
76 }
77 return false
78 end
81 local name = util.trim(param.get("name"))
83 if not util.is_profile_field_locked(member, "name") and name then
85 if #name < 3 then
86 slot.put_into("error", _"This screen name is too short!")
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 skip = param.get("skip"),
96 redirect_module = param.get("redirect_module"),
97 redirect_view = param.get("redirect_view"),
98 redirect_id = param.get("redirect_id"),
99 redirect_params = param.get("redirect_params")
100 }
101 }
102 return false
103 end
105 local check_member = Member:by_name(name)
106 if check_member and check_member.id ~= member.id then
107 slot.put_into("error", _"This name is already taken, please choose another one!")
108 request.redirect{
109 mode = "redirect",
110 module = "index",
111 view = "register",
112 params = {
113 code = member.invite_code,
114 notify_email = notify_email,
115 step = 1,
116 skip = param.get("skip"),
117 redirect_module = param.get("redirect_module"),
118 redirect_view = param.get("redirect_view"),
119 redirect_id = param.get("redirect_id"),
120 redirect_params = param.get("redirect_params")
121 }
122 }
123 return false
124 end
126 member.name = name
128 end
130 if notify_email and not util.is_profile_field_locked(member, "name") and not member.name then
131 request.redirect{
132 mode = "redirect",
133 module = "index",
134 view = "register",
135 params = {
136 code = member.invite_code,
137 notify_email = notify_email,
138 step = 1,
139 skip = param.get("skip"),
140 redirect_module = param.get("redirect_module"),
141 redirect_view = param.get("redirect_view"),
142 redirect_id = param.get("redirect_id"),
143 redirect_params = param.get("redirect_params")
144 }
145 }
146 return false
147 end
149 local login = util.trim(param.get("login"))
151 if not util.is_profile_field_locked(member, "login") and login then
152 if #login < 3 then
153 slot.put_into("error", _"This login is too short!")
154 request.redirect{
155 mode = "redirect",
156 module = "index",
157 view = "register",
158 params = {
159 code = member.invite_code,
160 notify_email = notify_email,
161 name = member.name,
162 step = 1,
163 skip = param.get("skip"),
164 redirect_module = param.get("redirect_module"),
165 redirect_view = param.get("redirect_view"),
166 redirect_id = param.get("redirect_id"),
167 redirect_params = param.get("redirect_params")
168 }
169 }
170 return false
171 end
173 local check_member = Member:by_login(login)
174 if check_member and check_member.id ~= member.id then
175 slot.put_into("error", _"This login is already taken, please choose another one!")
176 request.redirect{
177 mode = "redirect",
178 module = "index",
179 view = "register",
180 params = {
181 code = member.invite_code,
182 notify_email = notify_email,
183 name = member.name,
184 step = 1,
185 skip = param.get("skip"),
186 redirect_module = param.get("redirect_module"),
187 redirect_view = param.get("redirect_view"),
188 redirect_id = param.get("redirect_id"),
189 redirect_params = param.get("redirect_params")
190 }
191 }
192 return false
193 end
194 member.login = login
195 end
197 if member.name and not util.is_profile_field_locked(member, "login") and not member.login then
198 request.redirect{
199 mode = "redirect",
200 module = "index",
201 view = "register",
202 params = {
203 code = member.invite_code,
204 notify_email = notify_email,
205 name = member.name,
206 step = 1,
207 skip = param.get("skip"),
208 redirect_module = param.get("redirect_module"),
209 redirect_view = param.get("redirect_view"),
210 redirect_id = param.get("redirect_id"),
211 redirect_params = param.get("redirect_params")
212 }
213 }
214 return false
215 end
217 local step = param.get("step", atom.integer)
219 if step > 2 then
221 for i, checkbox in ipairs(config.use_terms_checkboxes) do
222 local member_useterms = MemberUseterms:new_selector()
223 :add_where{ "member_id = ?", member.id }
224 :add_where{ "contract_identifier = ?", checkbox.name }
225 :exec()
226 if #member_useterms == 0 then
227 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
228 if not accepted then
229 slot.put_into("error", checkbox.not_accepted_error)
230 return false
231 end
232 end
233 end
235 if member.authority ~= "ldap" then
237 local password1 = param.get("password1")
238 local password2 = param.get("password2")
240 if login and not password1 then
241 request.redirect{
242 mode = "redirect",
243 module = "index",
244 view = "register",
245 params = {
246 code = member.invite_code,
247 notify_email = notify_email,
248 name = member.name,
249 login = member.login,
250 skip = param.get("skip"),
251 redirect_module = param.get("redirect_module"),
252 redirect_view = param.get("redirect_view"),
253 redirect_id = param.get("redirect_id"),
254 redirect_params = param.get("redirect_params")
255 }
256 }
257 --]]
258 return false
259 end
261 if password1 ~= password2 then
262 slot.put_into("error", _"Passwords don't match!")
263 return false
264 end
266 if #password1 < 8 then
267 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
268 return false
269 end
271 member:set_password(password1)
273 end
275 if not util.is_profile_field_locked(member, "login") then
276 member.login = login
277 end
279 if not util.is_profile_field_locked(member, "name") then
280 member.name = name
281 end
283 if not member.notify_email then
284 local success = member:set_notify_email(notify_email)
285 if not success then
286 slot.put_into("error", _"Can't send confirmation email")
287 return
288 end
289 end
291 local now = db:query("SELECT now() AS now", "object").now
293 for i, checkbox in ipairs(config.use_terms_checkboxes) do
294 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
295 local member_useterms = MemberUseterms:new()
296 member_useterms.member_id = member.id
297 member_useterms.contract_identifier = checkbox.name
298 member_useterms:save()
299 end
301 member.activated = 'now'
302 member.active = true
303 member.last_activity = 'now'
304 member:save()
306 if not member.profile then
307 local profile = MemberProfile:new()
308 profile.member_id = member.id
309 profile.profile = json.object()
310 profile:save()
311 end
313 slot.put_into("notice", _"Registration succeeded")
315 app.session.member_id = member.id
316 app.session:save()
318 request.redirect{
319 mode = "redirect",
320 module = param.get("redirect_module") or "index",
321 view = param.get("redirect_view") or "index",
322 id = param.get("redirect_id"),
323 params = json.import(param.get("redirect_params") or "")
324 }
325 end

Impressum / About Us