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