liquid_feedback_frontend

diff app/main/index/_action/register.lua @ 1309:32cc544d5a5b

Cumulative patch for upcoming frontend version 4
author bsw/jbe
date Sun Jul 15 14:07:29 2018 +0200 (2018-07-15)
parents b298a0534642
children 18831d75ea87
line diff
     1.1 --- a/app/main/index/_action/register.lua	Thu Jun 23 03:30:57 2016 +0200
     1.2 +++ b/app/main/index/_action/register.lua	Sun Jul 15 14:07:29 2018 +0200
     1.3 @@ -4,13 +4,13 @@
     1.4  
     1.5  if app.session.authority == "ldap" then
     1.6    if not config.ldap.member or config.ldap.member.registration ~= "manual" then
     1.7 -    error("access denied")
     1.8 +    return execute.view { module = "index", view = "403" }
     1.9    end
    1.10    member = ldap.create_member(app.session.authority_uid, true)
    1.11    
    1.12  else
    1.13    if config.registration_disabled then
    1.14 -    error("registration disabled")
    1.15 +    return execute.view { module = "index", view = "403" }
    1.16    end
    1.17    member = Member:new_selector()
    1.18      :add_where{ "invite_code = ?", code }
    1.19 @@ -21,38 +21,58 @@
    1.20      :exec()
    1.21  end
    1.22  
    1.23 -  
    1.24 +
    1.25  if not member then
    1.26    slot.put_into("error", _"The code you've entered is invalid")
    1.27    request.redirect{
    1.28      mode   = "forward",
    1.29      module = "index",
    1.30 -    view   = "register"
    1.31 +    view   = "register", params = {
    1.32 +      redirect_module = param.get("redirect_module"),
    1.33 +      redirect_view = param.get("redirect_view"),
    1.34 +      redirect_id = param.get("redirect_id"),
    1.35 +      redirect_params = param.get("redirect_params")
    1.36 +    }
    1.37    }
    1.38    return false
    1.39  end
    1.40  
    1.41  local notify_email = param.get("notify_email")
    1.42  
    1.43 -if not util.is_profile_field_locked(member, "notify_email") and notify_email then
    1.44 +if not util.is_profile_field_locked(member, "notify_email") and not member.notify_email and notify_email then
    1.45    if #notify_email < 5 then
    1.46      slot.put_into("error", _"Email address too short!")
    1.47      request.redirect{
    1.48        mode   = "redirect",
    1.49        module = "index",
    1.50        view   = "register",
    1.51 -      params = { code = member.invite_code }
    1.52 +      params = { 
    1.53 +        code = member.invite_code,
    1.54 +        skip = param.get("skip"),
    1.55 +        redirect_module = param.get("redirect_module"),
    1.56 +        redirect_view = param.get("redirect_view"),
    1.57 +        redirect_id = param.get("redirect_id"),
    1.58 +        redirect_params = param.get("redirect_params")
    1.59 +      }
    1.60      }
    1.61      return false
    1.62    end
    1.63  end
    1.64  
    1.65 -if member and not util.is_profile_field_locked(member, "notify_email") and not notify_email then
    1.66 +if member and not util.is_profile_field_locked(member, "notify_email") and not member.notify_email and not notify_email then
    1.67    request.redirect{
    1.68      mode   = "redirect",
    1.69      module = "index",
    1.70      view   = "register",
    1.71 -    params = { code = member.invite_code, step = 1 }
    1.72 +    params = {
    1.73 +      code = member.invite_code, 
    1.74 +      skip = param.get("skip"),
    1.75 +      step = 1, 
    1.76 +      redirect_module = param.get("redirect_module"),
    1.77 +      redirect_view = param.get("redirect_view"),
    1.78 +      redirect_id = param.get("redirect_id"),
    1.79 +      redirect_params = param.get("redirect_params")
    1.80 +    }
    1.81    }
    1.82    return false
    1.83  end
    1.84 @@ -71,7 +91,12 @@
    1.85        params = {
    1.86          code = member.invite_code,
    1.87          notify_email = notify_email,
    1.88 -        step = 1
    1.89 +        step = 1,
    1.90 +        skip = param.get("skip"),
    1.91 +        redirect_module = param.get("redirect_module"),
    1.92 +        redirect_view = param.get("redirect_view"),
    1.93 +        redirect_id = param.get("redirect_id"),
    1.94 +        redirect_params = param.get("redirect_params")
    1.95        }
    1.96      }
    1.97      return false
    1.98 @@ -87,7 +112,12 @@
    1.99        params = {
   1.100          code = member.invite_code,
   1.101          notify_email = notify_email,
   1.102 -        step = 1
   1.103 +        step = 1,
   1.104 +        skip = param.get("skip"),
   1.105 +        redirect_module = param.get("redirect_module"),
   1.106 +        redirect_view = param.get("redirect_view"),
   1.107 +        redirect_id = param.get("redirect_id"),
   1.108 +        redirect_params = param.get("redirect_params")
   1.109        }
   1.110      }
   1.111      return false
   1.112 @@ -105,7 +135,12 @@
   1.113      params = {
   1.114        code = member.invite_code,
   1.115        notify_email = notify_email,
   1.116 -      step = 1
   1.117 +      step = 1,
   1.118 +      skip = param.get("skip"),
   1.119 +      redirect_module = param.get("redirect_module"),
   1.120 +      redirect_view = param.get("redirect_view"),
   1.121 +      redirect_id = param.get("redirect_id"),
   1.122 +      redirect_params = param.get("redirect_params")
   1.123      }
   1.124    }
   1.125    return false
   1.126 @@ -124,7 +159,12 @@
   1.127          code = member.invite_code,
   1.128          notify_email = notify_email,
   1.129          name = member.name,
   1.130 -        step = 1
   1.131 +        step = 1,
   1.132 +        skip = param.get("skip"),
   1.133 +        redirect_module = param.get("redirect_module"),
   1.134 +        redirect_view = param.get("redirect_view"),
   1.135 +        redirect_id = param.get("redirect_id"),
   1.136 +        redirect_params = param.get("redirect_params")
   1.137        }
   1.138      }
   1.139      return false
   1.140 @@ -141,7 +181,12 @@
   1.141          code = member.invite_code,
   1.142          notify_email = notify_email,
   1.143          name = member.name,
   1.144 -        step = 1
   1.145 +        step = 1,
   1.146 +        skip = param.get("skip"),
   1.147 +        redirect_module = param.get("redirect_module"),
   1.148 +        redirect_view = param.get("redirect_view"),
   1.149 +        redirect_id = param.get("redirect_id"),
   1.150 +        redirect_params = param.get("redirect_params")
   1.151        }
   1.152      }
   1.153      return false
   1.154 @@ -158,7 +203,12 @@
   1.155        code = member.invite_code,
   1.156        notify_email = notify_email,
   1.157        name = member.name,
   1.158 -      step = 1
   1.159 +      step = 1,
   1.160 +      skip = param.get("skip"),
   1.161 +      redirect_module = param.get("redirect_module"),
   1.162 +      redirect_view = param.get("redirect_view"),
   1.163 +      redirect_id = param.get("redirect_id"),
   1.164 +      redirect_params = param.get("redirect_params")
   1.165      }
   1.166    }
   1.167    return false
   1.168 @@ -169,10 +219,16 @@
   1.169  if step > 2 then
   1.170  
   1.171    for i, checkbox in ipairs(config.use_terms_checkboxes) do
   1.172 -    local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
   1.173 -    if not accepted then
   1.174 -      slot.put_into("error", checkbox.not_accepted_error)
   1.175 -      return false
   1.176 +    local member_useterms = MemberUseterms:new_selector()
   1.177 +      :add_where{ "member_id = ?", member.id }
   1.178 +      :add_where{ "contract_identifier = ?", checkbox.name }
   1.179 +      :exec()
   1.180 +    if #member_useterms == 0 then
   1.181 +      local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
   1.182 +      if not accepted then
   1.183 +        slot.put_into("error", checkbox.not_accepted_error)
   1.184 +        return false
   1.185 +      end
   1.186      end
   1.187    end  
   1.188  
   1.189 @@ -190,7 +246,12 @@
   1.190            code = member.invite_code,
   1.191            notify_email = notify_email,
   1.192            name = member.name,
   1.193 -          login = member.login
   1.194 +          login = member.login,
   1.195 +          skip = param.get("skip"),
   1.196 +          redirect_module = param.get("redirect_module"),
   1.197 +          redirect_view = param.get("redirect_view"),
   1.198 +          redirect_id = param.get("redirect_id"),
   1.199 +          redirect_params = param.get("redirect_params")
   1.200          }
   1.201        }
   1.202      --]]
   1.203 @@ -219,7 +280,7 @@
   1.204      member.name = name
   1.205    end
   1.206  
   1.207 -  if notify_email ~= member.notify_email then
   1.208 +  if not member.notify_email then
   1.209      local success = member:set_notify_email(notify_email)
   1.210      if not success then
   1.211        slot.put_into("error", _"Can't send confirmation email")
   1.212 @@ -231,7 +292,10 @@
   1.213  
   1.214    for i, checkbox in ipairs(config.use_terms_checkboxes) do
   1.215      local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
   1.216 -    member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted at " .. tostring(now))
   1.217 +    local member_useterms = MemberUseterms:new()
   1.218 +    member_useterms.member_id = member.id
   1.219 +    member_useterms.contract_identifier = checkbox.name
   1.220 +    member_useterms:save()
   1.221    end
   1.222  
   1.223    member.activated = 'now'
   1.224 @@ -239,12 +303,24 @@
   1.225    member.last_activity = 'now'
   1.226    member:save()
   1.227    
   1.228 -  slot.put_into("notice", _"You've successfully registered and you can login now with your login and password!")
   1.229 +  if not member.profile then
   1.230 +    local profile = MemberProfile:new()
   1.231 +    profile.member_id = member.id
   1.232 +    profile.profile = json.object()
   1.233 +    profile:save()
   1.234 +  end
   1.235 +  
   1.236 +  slot.put_into("notice", _"Registration succeeded")
   1.237 +  
   1.238 +  app.session.member_id = member.id
   1.239 +  app.session:save()
   1.240  
   1.241    request.redirect{
   1.242      mode   = "redirect",
   1.243 -    module = "index",
   1.244 -    view   = "login",
   1.245 +    module = param.get("redirect_module") or "index",
   1.246 +    view   = param.get("redirect_view") or "index",
   1.247 +    id     = param.get("redirect_id"),
   1.248 +    params = param.get("redirect_params")
   1.249    }
   1.250  end
   1.251    

Impressum / About Us