liquid_feedback_frontend

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

Impressum / About Us