liquid_feedback_frontend
diff app/main/index/_action/register.lua @ 1071:58f48a8a202a
Imported and merged LDAP patch
| author | bsw |
|---|---|
| date | Fri Jul 18 21:42:59 2014 +0200 (2014-07-18) |
| parents | ba824959fc1f |
| children | aefef1556d55 |
line diff
1.1 --- a/app/main/index/_action/register.lua Thu Jul 17 23:38:35 2014 +0200 1.2 +++ b/app/main/index/_action/register.lua Fri Jul 18 21:42:59 2014 +0200 1.3 @@ -1,12 +1,26 @@ 1.4 local code = util.trim(param.get("code")) 1.5 1.6 -local member = Member:new_selector() 1.7 - :add_where{ "invite_code = ?", code } 1.8 - :add_where{ "activated ISNULL" } 1.9 - :add_where{ "NOT locked" } 1.10 - :optional_object_mode() 1.11 - :for_update() 1.12 - :exec() 1.13 +local member 1.14 + 1.15 +if app.session.authority == "ldap" then 1.16 + if not config.ldap.member or not config.ldap.member.registration == "manual" then 1.17 + error("access denied") 1.18 + end 1.19 + member = ldap.create_member(app.session.authority_data_uid, true) 1.20 + 1.21 +else 1.22 + if config.registration_disabled then 1.23 + error("registration disabled") 1.24 + end 1.25 + member = Member:new_selector() 1.26 + :add_where{ "invite_code = ?", code } 1.27 + :add_where{ "activated ISNULL" } 1.28 + :add_where{ "NOT locked" } 1.29 + :optional_object_mode() 1.30 + :for_update() 1.31 + :exec() 1.32 +end 1.33 + 1.34 1.35 if not member then 1.36 slot.put_into("error", _"The code you've entered is invalid") 1.37 @@ -20,7 +34,7 @@ 1.38 1.39 local notify_email = param.get("notify_email") 1.40 1.41 -if not config.locked_profile_fields.notify_email and notify_email then 1.42 +if not util.is_profile_field_locked(member, "notify_email") and notify_email then 1.43 if #notify_email < 5 then 1.44 slot.put_into("error", _"Email address too short!") 1.45 request.redirect{ 1.46 @@ -33,7 +47,7 @@ 1.47 end 1.48 end 1.49 1.50 -if member and not notify_email then 1.51 +if member and not util.is_profile_field_locked(member, "notify_email") and not notify_email then 1.52 request.redirect{ 1.53 mode = "redirect", 1.54 module = "index", 1.55 @@ -46,7 +60,7 @@ 1.56 1.57 local name = util.trim(param.get("name")) 1.58 1.59 -if not config.locked_profile_fields.name and name then 1.60 +if not util.is_profile_field_locked(member, "name") and name then 1.61 1.62 if #name < 3 then 1.63 slot.put_into("error", _"This screen name is too short!") 1.64 @@ -83,7 +97,7 @@ 1.65 1.66 end 1.67 1.68 -if notify_email and not member.name then 1.69 +if notify_email and not util.is_profile_field_locked(member, "name") and not member.name then 1.70 request.redirect{ 1.71 mode = "redirect", 1.72 module = "index", 1.73 @@ -97,10 +111,9 @@ 1.74 return false 1.75 end 1.76 1.77 - 1.78 local login = util.trim(param.get("login")) 1.79 1.80 -if not config.locked_profile_fields.login and login then 1.81 +if not util.is_profile_field_locked(member, "login") and login then 1.82 if #login < 3 then 1.83 slot.put_into("error", _"This login is too short!") 1.84 request.redirect{ 1.85 @@ -136,7 +149,7 @@ 1.86 member.login = login 1.87 end 1.88 1.89 -if member.name and not member.login then 1.90 +if member.name and not util.is_profile_field_locked(member, "login") and not member.login then 1.91 request.redirect{ 1.92 mode = "redirect", 1.93 module = "index", 1.94 @@ -163,40 +176,43 @@ 1.95 end 1.96 end 1.97 1.98 - local password1 = param.get("password1") 1.99 - local password2 = param.get("password2") 1.100 + if not member.authority == "ldap" then 1.101 + 1.102 + local password1 = param.get("password1") 1.103 + local password2 = param.get("password2") 1.104 1.105 - if login and not password1 then 1.106 - request.redirect{ 1.107 - mode = "redirect", 1.108 - module = "index", 1.109 - view = "register", 1.110 - params = { 1.111 - code = member.invite_code, 1.112 - notify_email = notify_email, 1.113 - name = member.name, 1.114 - login = member.login 1.115 + if login and not password1 then 1.116 + request.redirect{ 1.117 + mode = "redirect", 1.118 + module = "index", 1.119 + view = "register", 1.120 + params = { 1.121 + code = member.invite_code, 1.122 + notify_email = notify_email, 1.123 + name = member.name, 1.124 + login = member.login 1.125 + } 1.126 } 1.127 - } 1.128 - --]] 1.129 - return false 1.130 + --]] 1.131 + return false 1.132 + end 1.133 + 1.134 + if password1 ~= password2 then 1.135 + slot.put_into("error", _"Passwords don't match!") 1.136 + return false 1.137 + end 1.138 + 1.139 + if #password1 < 8 then 1.140 + slot.put_into("error", _"Passwords must consist of at least 8 characters!") 1.141 + return false 1.142 + end 1.143 end 1.144 1.145 - if password1 ~= password2 then 1.146 - slot.put_into("error", _"Passwords don't match!") 1.147 - return false 1.148 - end 1.149 - 1.150 - if #password1 < 8 then 1.151 - slot.put_into("error", _"Passwords must consist of at least 8 characters!") 1.152 - return false 1.153 - end 1.154 - 1.155 - if not config.locked_profile_fields.login then 1.156 + if not util.is_profile_field_locked(member, "login") then 1.157 member.login = login 1.158 end 1.159 1.160 - if not config.locked_profile_fields.name then 1.161 + if not util.is_profile_field_locked(member, "name") then 1.162 member.name = name 1.163 end 1.164 1.165 @@ -208,7 +224,9 @@ 1.166 end 1.167 end 1.168 1.169 - member:set_password(password1) 1.170 + if not member.authority == "ldap" then 1.171 + member:set_password(password1) 1.172 + end 1.173 1.174 local now = db:query("SELECT now() AS now", "object").now 1.175 1.176 @@ -221,7 +239,7 @@ 1.177 member.active = true 1.178 member.last_activity = 'now' 1.179 member:save() 1.180 - 1.181 + 1.182 slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!") 1.183 1.184 request.redirect{