rev |
line source |
bsw@91
|
1 local code = param.get("code")
|
bsw@91
|
2
|
bsw@91
|
3 local invite_code = InviteCode:new_selector()
|
bsw@91
|
4 :add_where{ "code = ?", code }
|
bsw@91
|
5 :optional_object_mode()
|
bsw@91
|
6 :for_update()
|
bsw@91
|
7 :exec()
|
bsw/jbe@5
|
8
|
bsw/jbe@5
|
9 if not invite_code or invite_code.used then
|
bsw/jbe@5
|
10 slot.put_into("error", _"The code you've entered is invalid")
|
bsw/jbe@5
|
11 request.redirect{
|
bsw/jbe@5
|
12 mode = "forward",
|
bsw/jbe@5
|
13 module = "index",
|
bsw/jbe@5
|
14 view = "register"
|
bsw/jbe@5
|
15 }
|
bsw/jbe@5
|
16 return false
|
bsw/jbe@5
|
17 end
|
bsw/jbe@5
|
18
|
bsw/jbe@6
|
19 local notify_email = param.get("notify_email")
|
bsw/jbe@5
|
20
|
bsw/jbe@6
|
21 if invite_code and not notify_email then
|
bsw/jbe@6
|
22 request.redirect{
|
bsw/jbe@6
|
23 mode = "redirect",
|
bsw/jbe@6
|
24 module = "index",
|
bsw/jbe@6
|
25 view = "register",
|
bsw/jbe@6
|
26 params = { code = invite_code.code }
|
bsw/jbe@6
|
27 }
|
bsw/jbe@6
|
28 return false
|
bsw/jbe@6
|
29 end
|
bsw/jbe@6
|
30
|
bsw/jbe@6
|
31 if #notify_email < 5 then
|
bsw/jbe@6
|
32 slot.put_into("error", _"Email address too short!")
|
bsw/jbe@5
|
33 request.redirect{
|
bsw/jbe@5
|
34 mode = "redirect",
|
bsw/jbe@5
|
35 module = "index",
|
bsw/jbe@5
|
36 view = "register",
|
bsw/jbe@5
|
37 params = { code = invite_code.code }
|
bsw/jbe@5
|
38 }
|
bsw/jbe@5
|
39 return false
|
bsw/jbe@5
|
40 end
|
bsw/jbe@5
|
41
|
bsw/jbe@6
|
42 local name = param.get("name")
|
bsw/jbe@6
|
43
|
bsw/jbe@6
|
44 if notify_email and not name then
|
bsw/jbe@6
|
45 request.redirect{
|
bsw/jbe@6
|
46 mode = "redirect",
|
bsw/jbe@6
|
47 module = "index",
|
bsw/jbe@6
|
48 view = "register",
|
bsw/jbe@6
|
49 params = {
|
bsw/jbe@6
|
50 code = invite_code.code,
|
bsw/jbe@6
|
51 notify_email = notify_email
|
bsw/jbe@6
|
52 }
|
bsw/jbe@6
|
53 }
|
bsw/jbe@6
|
54 return false
|
bsw/jbe@6
|
55 end
|
bsw/jbe@6
|
56
|
bsw/jbe@6
|
57 name = util.trim(name)
|
bsw/jbe@6
|
58
|
bsw/jbe@6
|
59 if #name < 3 then
|
bsw/jbe@6
|
60 slot.put_into("error", _"This username is too short!")
|
bsw/jbe@6
|
61 request.redirect{
|
bsw/jbe@6
|
62 mode = "redirect",
|
bsw/jbe@6
|
63 module = "index",
|
bsw/jbe@6
|
64 view = "register",
|
bsw/jbe@6
|
65 params = {
|
bsw/jbe@6
|
66 code = invite_code.code,
|
bsw/jbe@6
|
67 notify_email = notify_email
|
bsw/jbe@6
|
68 }
|
bsw/jbe@6
|
69 }
|
bsw/jbe@6
|
70 return false
|
bsw/jbe@6
|
71 end
|
bsw/jbe@6
|
72
|
bsw/jbe@5
|
73 if Member:by_name(name) then
|
bsw/jbe@5
|
74 slot.put_into("error", _"This name is already taken, please choose another one!")
|
bsw/jbe@5
|
75 request.redirect{
|
bsw/jbe@5
|
76 mode = "redirect",
|
bsw/jbe@5
|
77 module = "index",
|
bsw/jbe@5
|
78 view = "register",
|
bsw/jbe@6
|
79 params = {
|
bsw/jbe@6
|
80 code = invite_code.code,
|
bsw/jbe@6
|
81 notify_email = notify_email
|
bsw/jbe@6
|
82 }
|
bsw/jbe@5
|
83 }
|
bsw/jbe@5
|
84 return false
|
bsw/jbe@5
|
85 end
|
bsw/jbe@5
|
86
|
bsw/jbe@5
|
87 local login = param.get("login")
|
bsw/jbe@5
|
88
|
bsw/jbe@5
|
89 if name and not login then
|
bsw/jbe@5
|
90 request.redirect{
|
bsw/jbe@5
|
91 mode = "redirect",
|
bsw/jbe@5
|
92 module = "index",
|
bsw/jbe@5
|
93 view = "register",
|
bsw/jbe@5
|
94 params = {
|
bsw/jbe@5
|
95 code = invite_code.code,
|
bsw/jbe@6
|
96 notify_email = notify_email,
|
bsw/jbe@6
|
97 name = name
|
bsw/jbe@6
|
98 }
|
bsw/jbe@6
|
99 }
|
bsw/jbe@6
|
100 return false
|
bsw/jbe@6
|
101 end
|
bsw/jbe@6
|
102
|
bsw/jbe@6
|
103 login = util.trim(login)
|
bsw/jbe@6
|
104
|
bsw/jbe@6
|
105 if #login < 3 then
|
bsw/jbe@6
|
106 slot.put_into("error", _"This login is too short!")
|
bsw/jbe@6
|
107 request.redirect{
|
bsw/jbe@6
|
108 mode = "redirect",
|
bsw/jbe@6
|
109 module = "index",
|
bsw/jbe@6
|
110 view = "register",
|
bsw/jbe@6
|
111 params = {
|
bsw/jbe@6
|
112 code = invite_code.code,
|
bsw/jbe@6
|
113 notify_email = notify_email,
|
bsw/jbe@5
|
114 name = name
|
bsw/jbe@5
|
115 }
|
bsw/jbe@5
|
116 }
|
bsw/jbe@5
|
117 return false
|
bsw/jbe@5
|
118 end
|
bsw/jbe@5
|
119
|
bsw/jbe@5
|
120 if Member:by_login(login) then
|
bsw/jbe@5
|
121 slot.put_into("error", _"This login is already taken, please choose another one!")
|
bsw/jbe@5
|
122 request.redirect{
|
bsw/jbe@5
|
123 mode = "redirect",
|
bsw/jbe@5
|
124 module = "index",
|
bsw/jbe@5
|
125 view = "register",
|
bsw/jbe@5
|
126 params = {
|
bsw/jbe@5
|
127 code = invite_code.code,
|
bsw/jbe@6
|
128 notify_email = notify_email,
|
bsw/jbe@5
|
129 name = name
|
bsw/jbe@5
|
130 }
|
bsw/jbe@5
|
131 }
|
bsw/jbe@5
|
132 return false
|
bsw/jbe@5
|
133 end
|
bsw/jbe@5
|
134
|
bsw@79
|
135 if login and param.get("step") ~= "5" then
|
bsw/jbe@6
|
136 request.redirect{
|
bsw/jbe@6
|
137 mode = "redirect",
|
bsw/jbe@6
|
138 module = "index",
|
bsw/jbe@6
|
139 view = "register",
|
bsw/jbe@6
|
140 params = {
|
bsw/jbe@6
|
141 code = invite_code.code,
|
bsw/jbe@6
|
142 notify_email = notify_email,
|
bsw/jbe@6
|
143 name = name,
|
bsw/jbe@6
|
144 login = login
|
bsw/jbe@6
|
145 }
|
bsw/jbe@6
|
146 }
|
bsw/jbe@6
|
147 return false
|
bsw/jbe@6
|
148 end
|
bsw/jbe@6
|
149
|
bsw@79
|
150 for i, checkbox in ipairs(config.use_terms_checkboxes) do
|
bsw@79
|
151 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
|
bsw@79
|
152 if not accepted then
|
bsw@79
|
153 slot.put_into("error", checkbox.not_accepted_error)
|
bsw@79
|
154 return false
|
bsw@79
|
155 end
|
bsw@79
|
156 end
|
bsw/jbe@6
|
157
|
bsw/jbe@5
|
158 local password1 = param.get("password1")
|
bsw/jbe@5
|
159 local password2 = param.get("password2")
|
bsw/jbe@5
|
160
|
bsw/jbe@5
|
161 if login and not password1 then
|
bsw/jbe@5
|
162 request.redirect{
|
bsw/jbe@5
|
163 mode = "redirect",
|
bsw/jbe@5
|
164 module = "index",
|
bsw/jbe@5
|
165 view = "register",
|
bsw/jbe@5
|
166 params = {
|
bsw/jbe@5
|
167 code = invite_code.code,
|
bsw/jbe@6
|
168 notify_email = notify_email,
|
bsw/jbe@5
|
169 name = name,
|
bsw/jbe@5
|
170 login = login
|
bsw/jbe@5
|
171 }
|
bsw/jbe@5
|
172 }
|
bsw@79
|
173 --]]
|
bsw/jbe@5
|
174 return false
|
bsw/jbe@5
|
175 end
|
bsw/jbe@5
|
176
|
bsw/jbe@5
|
177 if password1 ~= password2 then
|
bsw/jbe@5
|
178 slot.put_into("error", _"Passwords don't match!")
|
bsw/jbe@5
|
179 return false
|
bsw/jbe@5
|
180 end
|
bsw/jbe@5
|
181
|
bsw/jbe@5
|
182 if #password1 < 8 then
|
bsw/jbe@5
|
183 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
|
bsw/jbe@5
|
184 return false
|
bsw/jbe@5
|
185 end
|
bsw/jbe@5
|
186
|
bsw/jbe@5
|
187 local member = Member:new()
|
bsw/jbe@5
|
188
|
bsw/jbe@5
|
189 member.login = login
|
bsw/jbe@5
|
190 member.name = name
|
bsw/jbe@6
|
191
|
bsw/jbe@6
|
192 local success = member:set_notify_email(notify_email)
|
bsw/jbe@6
|
193 if not success then
|
bsw/jbe@6
|
194 slot.put_into("error", _"Can't send confirmation email")
|
bsw/jbe@6
|
195 return
|
bsw/jbe@6
|
196 end
|
bsw/jbe@6
|
197
|
bsw/jbe@5
|
198 member:set_password(password1)
|
bsw/jbe@5
|
199 member:save()
|
bsw/jbe@5
|
200
|
bsw@83
|
201 local now = db:query("SELECT now() AS now", "object").now
|
bsw@83
|
202
|
bsw@79
|
203 for i, checkbox in ipairs(config.use_terms_checkboxes) do
|
bsw@79
|
204 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
|
bsw@83
|
205 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
|
bsw@79
|
206 end
|
bsw@79
|
207
|
bsw/jbe@5
|
208 invite_code.member_id = member.id
|
bsw/jbe@5
|
209 invite_code.used = "now"
|
bsw/jbe@5
|
210 invite_code:save()
|
bsw/jbe@5
|
211
|
bsw/jbe@5
|
212 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
|
bsw/jbe@5
|
213
|
bsw/jbe@6
|
214 request.redirect{
|
bsw/jbe@6
|
215 mode = "redirect",
|
bsw/jbe@6
|
216 module = "index",
|
bsw/jbe@6
|
217 view = "login",
|
bsw/jbe@6
|
218 }
|