liquid_feedback_frontend
view app/main/registration_admin/_action/update_verification.lua @ 1546:ae194d0235c2
Set session cookie only if session is needed
| author | bsw | 
|---|---|
| date | Thu Oct 22 11:57:23 2020 +0200 (2020-10-22) | 
| parents | 63ce1a5c05c1 | 
| children | 64f47fd0fa5a | 
 line source
     1 local verification = Verification:by_id(param.get_id())
     3 local function update_data()
     4   local old_verification_data = verification.verification_data or {}
     5   verification.verification_data = json.object()
     7   for i, field in ipairs(config.self_registration.fields) do
     8     local value = param.get(field.name)
     9     if field.name == "fiscal_code" then
    10       value = string.gsub(value, "[^A-Z0-9]", "")
    11     elseif field.name == "mobile_phone" then
    12       value = string.gsub(value, "[^0-9]", "")
    13     elseif field.name == "unit" then
    14       value = string.gsub(value, "[^0-9]", "")
    15       if old_verification_data.unit and old_verification_data.unit ~= "" then
    16         local old_unit_privilege = Privilege:by_pk(old_verification_data.unit, verification.requesting_member_id)
    17         if old_unit_privilege then
    18           old_unit_privilege:destroy()
    19         end
    20       end
    21       if value ~= old_verification_data.unit and value ~= "" then
    22         local unit_privilege = Privilege:new()
    23         unit_privilege.member_id = verification.requesting_member_id
    24         unit_privilege.unit_id = tonumber(value)
    25         unit_privilege.voting_right = true
    26         unit_privilege.initiative_right = true
    27         unit_privilege:save()
    28       end
    29     elseif field.name == "sequential_number" then
    30       value = old_verification_data.sequential_number 
    31       if not value then
    32         local last_sequential_number = 0
    33         db:query('LOCK TABLE "verification" IN SHARE ROW EXCLUSIVE MODE')
    34         local record = Verification:new_selector()
    35           :reset_fields()
    36           :add_field("max((verification_data->>'sequential_number')::int8)", "max_sequential_number")
    37           :optional_object_mode()
    38           :exec()
    39         if record and record.max_sequential_number then
    40           last_sequential_number = record.max_sequential_number
    41         end
    42         value = last_sequential_number + 1
    43       end
    44     elseif field.type ~= "image" then
    45       value = string.gsub(value, "^%s+", "")
    46       value = string.gsub(value, "%s+$", "")
    47       value = string.gsub(value, "%s+", " ")
    48     end
    49     verification.verification_data[field.name] = value
    50   end
    51 end
    53 if verification.verified_member_id then
    55   local member = Member:by_id(verification.verified_member_id)
    57   if param.get("cancel") then
    58     db:query({ "SELECT delete_member(?)", member.id })
    59     return
    60   end
    62   member.identification = param.get("identification")
    63   member.notify_email = param.get("email")
    64   member:save()
    66   update_data()
    68   verification:save()
    70   if param.get("invite") then
    71     member:send_invitation()
    72   end
    74 elseif param.get("drop") then
    76   verification.denied = "now"
    77   verification:save()
    78   return
    80 elseif param.get("accredit") then
    82   local member = Member:by_id(verification.requesting_member_id)
    83   member.identification = param.get("identification")
    84   member.notify_email = param.get("email")
    85   member:save()
    87   if config.self_registration.manual_invitation then
    88     local function secret_token()
    89       local parts = {}
    90       for i = 1, 5 do
    91         parts[#parts+1] = multirand.string(5, "23456789bcdfghjkmnpqrstvwxyz")
    92       end
    93       return (table.concat(parts, "-"))
    94     end
    95     member.invite_code = secret_token()
    96     member:save()
    97   else
    98     member:send_invitation()
    99   end
   101   for i, unit_id in ipairs(config.self_registration.grant_privileges_for_unit_ids) do
   102     local privilege = Privilege:new()
   103     privilege.member_id = member.id
   104     privilege.unit_id = unit_id
   105     privilege.initiative_right = true
   106     privilege.voting_right = true
   107     privilege:save()
   108   end
   110   update_data()
   112   verification.verified_member_id = verification.requesting_member_id
   113   verification.verifying_member_id = app.session.member_id
   114   verification.verified = "now"
   116   verification:save()
   119 else
   121   update_data()
   122   verification:save()
   124 end
