liquid_feedback_frontend

annotate app/main/index/_action/register.lua @ 1076:b298a0534642

Save password when registering
author bsw
date Tue Jul 22 22:57:57 2014 +0200 (2014-07-22)
parents aefef1556d55
children 32cc544d5a5b
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@1071 7 error("access denied")
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@1071 13 error("registration disabled")
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@391 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@5 30 view = "register"
bsw/jbe@5 31 }
bsw/jbe@5 32 return false
bsw/jbe@5 33 end
bsw/jbe@5 34
bsw/jbe@6 35 local notify_email = param.get("notify_email")
bsw/jbe@5 36
bsw@1071 37 if not util.is_profile_field_locked(member, "notify_email") and notify_email then
bsw@286 38 if #notify_email < 5 then
bsw@286 39 slot.put_into("error", _"Email address too short!")
bsw@286 40 request.redirect{
bsw@286 41 mode = "redirect",
bsw@286 42 module = "index",
bsw@286 43 view = "register",
bsw@286 44 params = { code = member.invite_code }
bsw@286 45 }
bsw@286 46 return false
bsw@286 47 end
bsw/jbe@6 48 end
bsw/jbe@6 49
bsw@1071 50 if member and not util.is_profile_field_locked(member, "notify_email") and not notify_email then
bsw/jbe@5 51 request.redirect{
bsw/jbe@5 52 mode = "redirect",
bsw/jbe@5 53 module = "index",
bsw/jbe@5 54 view = "register",
bsw@286 55 params = { code = member.invite_code, step = 1 }
bsw/jbe@5 56 }
bsw/jbe@5 57 return false
bsw/jbe@5 58 end
bsw/jbe@5 59
bsw@286 60
bsw@286 61 local name = util.trim(param.get("name"))
bsw@286 62
bsw@1071 63 if not util.is_profile_field_locked(member, "name") and name then
bsw/jbe@6 64
bsw@286 65 if #name < 3 then
bsw@753 66 slot.put_into("error", _"This screen name is too short!")
bsw@286 67 request.redirect{
bsw@286 68 mode = "redirect",
bsw@286 69 module = "index",
bsw@286 70 view = "register",
bsw@286 71 params = {
bsw@286 72 code = member.invite_code,
bsw@952 73 notify_email = notify_email,
bsw@286 74 step = 1
bsw@286 75 }
bsw/jbe@6 76 }
bsw@286 77 return false
bsw@286 78 end
bsw@286 79
bsw@351 80 local check_member = Member:by_name(name)
bsw@353 81 if check_member and check_member.id ~= member.id then
bsw@286 82 slot.put_into("error", _"This name is already taken, please choose another one!")
bsw@286 83 request.redirect{
bsw@286 84 mode = "redirect",
bsw@286 85 module = "index",
bsw@286 86 view = "register",
bsw@286 87 params = {
bsw@286 88 code = member.invite_code,
bsw@952 89 notify_email = notify_email,
bsw@286 90 step = 1
bsw@286 91 }
bsw@286 92 }
bsw@286 93 return false
bsw@286 94 end
bsw@286 95
bsw@286 96 member.name = name
bsw@286 97
bsw/jbe@6 98 end
bsw/jbe@6 99
bsw@1071 100 if notify_email and not util.is_profile_field_locked(member, "name") and not member.name then
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@286 106 code = member.invite_code,
bsw@952 107 notify_email = notify_email,
bsw@286 108 step = 1
bsw/jbe@5 109 }
bsw/jbe@5 110 }
bsw/jbe@5 111 return false
bsw/jbe@5 112 end
bsw/jbe@5 113
bsw@286 114 local login = util.trim(param.get("login"))
bsw@286 115
bsw@1071 116 if not util.is_profile_field_locked(member, "login") and login then
bsw@286 117 if #login < 3 then
bsw@286 118 slot.put_into("error", _"This login is too short!")
bsw@286 119 request.redirect{
bsw@286 120 mode = "redirect",
bsw@286 121 module = "index",
bsw@286 122 view = "register",
bsw@286 123 params = {
bsw@286 124 code = member.invite_code,
bsw@952 125 notify_email = notify_email,
bsw@286 126 name = member.name,
bsw@286 127 step = 1
bsw@286 128 }
bsw/jbe@5 129 }
bsw@286 130 return false
bsw@286 131 end
bsw@286 132
bsw@354 133 local check_member = Member:by_login(login)
bsw@354 134 if check_member and check_member.id ~= member.id then
bsw@286 135 slot.put_into("error", _"This login is already taken, please choose another one!")
bsw@286 136 request.redirect{
bsw@286 137 mode = "redirect",
bsw@286 138 module = "index",
bsw@286 139 view = "register",
bsw@286 140 params = {
bsw@286 141 code = member.invite_code,
bsw@952 142 notify_email = notify_email,
bsw@286 143 name = member.name,
bsw@286 144 step = 1
bsw@286 145 }
bsw@286 146 }
bsw@286 147 return false
bsw@286 148 end
bsw@286 149 member.login = login
bsw/jbe@5 150 end
bsw/jbe@5 151
bsw@1071 152 if member.name and not util.is_profile_field_locked(member, "login") and not member.login then
bsw/jbe@5 153 request.redirect{
bsw/jbe@5 154 mode = "redirect",
bsw/jbe@5 155 module = "index",
bsw/jbe@5 156 view = "register",
bsw/jbe@5 157 params = {
bsw@286 158 code = member.invite_code,
bsw@952 159 notify_email = notify_email,
bsw@286 160 name = member.name,
bsw@286 161 step = 1
bsw/jbe@5 162 }
bsw/jbe@5 163 }
bsw/jbe@5 164 return false
bsw/jbe@5 165 end
bsw/jbe@5 166
bsw@286 167 local step = param.get("step", atom.integer)
bsw@286 168
bsw@286 169 if step > 2 then
bsw/jbe@5 170
bsw@286 171 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 172 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 173 if not accepted then
bsw@286 174 slot.put_into("error", checkbox.not_accepted_error)
bsw@286 175 return false
bsw@286 176 end
bsw@286 177 end
bsw@286 178
bsw@1076 179 if member.authority ~= "ldap" then
bsw@1071 180
bsw@1071 181 local password1 = param.get("password1")
bsw@1071 182 local password2 = param.get("password2")
bsw/jbe@6 183
bsw@1071 184 if login and not password1 then
bsw@1071 185 request.redirect{
bsw@1071 186 mode = "redirect",
bsw@1071 187 module = "index",
bsw@1071 188 view = "register",
bsw@1071 189 params = {
bsw@1071 190 code = member.invite_code,
bsw@1071 191 notify_email = notify_email,
bsw@1071 192 name = member.name,
bsw@1071 193 login = member.login
bsw@1071 194 }
bsw@286 195 }
bsw@1071 196 --]]
bsw@1071 197 return false
bsw@1071 198 end
bsw@1071 199
bsw@1071 200 if password1 ~= password2 then
bsw@1071 201 slot.put_into("error", _"Passwords don't match!")
bsw@1071 202 return false
bsw@1071 203 end
bsw@1071 204
bsw@1071 205 if #password1 < 8 then
bsw@1071 206 slot.put_into("error", _"Passwords must consist of at least 8 characters!")
bsw@1071 207 return false
bsw@1071 208 end
bsw@1076 209
bsw@1076 210 member:set_password(password1)
bsw@1076 211
bsw@286 212 end
bsw/jbe@6 213
bsw@1071 214 if not util.is_profile_field_locked(member, "login") then
bsw@940 215 member.login = login
bsw@940 216 end
bsw@940 217
bsw@1071 218 if not util.is_profile_field_locked(member, "name") then
bsw@940 219 member.name = name
bsw@940 220 end
bsw@286 221
bsw@952 222 if notify_email ~= member.notify_email then
bsw@390 223 local success = member:set_notify_email(notify_email)
bsw@390 224 if not success then
bsw@390 225 slot.put_into("error", _"Can't send confirmation email")
bsw@390 226 return
bsw@390 227 end
bsw@286 228 end
bsw@390 229
bsw@286 230 local now = db:query("SELECT now() AS now", "object").now
bsw@79 231
bsw@286 232 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw@286 233 local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
bsw@286 234 member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
bsw@286 235 end
bsw/jbe@5 236
bsw@286 237 member.activated = 'now'
bsw@286 238 member.active = true
bsw@286 239 member.last_activity = 'now'
bsw@286 240 member:save()
bsw@1071 241
bsw@286 242 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
bsw@286 243
bsw@286 244 request.redirect{
bsw@286 245 mode = "redirect",
bsw@286 246 module = "index",
bsw@286 247 view = "login",
bsw@286 248 }
bsw@286 249 end
bsw@952 250

Impressum / About Us