bsw/jbe@1309: local id = param.get_id() bsw/jbe@1309: local verification = Verification:by_id(id) bsw/jbe@1309: bsw/jbe@1309: if not verification then bsw/jbe@1309: return false bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: local pin = param.get("pin") bsw/jbe@1309: bsw/jbe@1309: if param.get("manual_verification") then bsw/jbe@1309: verification.comment = (verification.comment or "") .. " /// User requested manual verification (during step 2)" bsw/jbe@1309: verification:save() bsw/jbe@1309: request.redirect{ external = encode.url { module = "registration", view = "register_manual_check_needed" } } bsw/jbe@1309: return false bsw/jbe@1309: elseif verification.request_data.sms_code ~= pin then bsw/jbe@1309: verification.request_data.sms_code_tries = verification.request_data.sms_code_tries - 1 bsw/jbe@1309: verification.comment = (verification.comment or "") .. " /// User entered wrong PIN " .. pin bsw/jbe@1309: if verification.request_data.sms_code_tries > 0 then bsw/jbe@1309: verification:save() bsw/jbe@1309: request.redirect{ external = encode.url { module = "registration", view = "register_enter_pin", id = verification.id, params = { invalid_pin = true } } } bsw/jbe@1309: return false bsw/jbe@1309: else bsw/jbe@1309: verification.comment = (verification.comment or "") .. " /// Manual verification needed: user entered invalid PIN three times" bsw/jbe@1309: verification:save() bsw/jbe@1309: request.redirect{ external = encode.url { module = "registration", view = "register_manual_check_needed" } } bsw/jbe@1309: return false bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: verification.comment = (verification.comment or "").. " /// User entered correct PIN code" bsw/jbe@1309: bsw/jbe@1309: verification.verified = "now" bsw/jbe@1309: verification.verification_data = verification.request_data bsw/jbe@1309: bsw/jbe@1309: local identification = config.self_registration.identification_func(verification.request_data) bsw/jbe@1309: bsw/jbe@1309: local members_with_same_identification = Member:new_selector() bsw/jbe@1309: :add_where{ "identification = ?", identification } bsw/jbe@1309: :exec() bsw/jbe@1309: bsw/jbe@1309: if #members_with_same_identification > 0 then bsw/jbe@1309: verification.comment = (verification.comment or "").. " /// Manual verification needed: user with same name already exists" bsw/jbe@1309: verification:save() bsw/jbe@1309: request.redirect{ external = encode.url { module = "registration", view = "register_manual_check_needed" } } bsw/jbe@1309: return false bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: local member = Member:by_id(verification.requesting_member_id) bsw/jbe@1309: bsw/jbe@1309: member.identification = identification bsw/jbe@1309: member.notify_email = verification.request_data.email bsw/jbe@1309: bsw/jbe@1309: member:send_invitation() bsw/jbe@1309: bsw/jbe@1309: for i, unit_id in ipairs(config.self_registration.grant_privileges_for_unit_ids) do bsw/jbe@1309: local privilege = Privilege:new() bsw/jbe@1309: privilege.member_id = member.id bsw/jbe@1309: privilege.unit_id = unit_id bsw/jbe@1309: privilege.initiative_right = true bsw/jbe@1309: privilege.voting_right = true bsw/jbe@1309: privilege:save() bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: verification.verified_member_id = member.id bsw/jbe@1309: bsw/jbe@1309: verification.comment = (verification.comment or "").. " /// Account created" bsw/jbe@1309: bsw/jbe@1309: verification:save() bsw/jbe@1309: bsw/jbe@1309: bsw/jbe@1309: request.redirect{ external = encode.url { module = "registration", view = "register_completed" } }