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