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