def add_survey(_): form = EnrolmentCodeForm(request.form) if request.method == 'POST' and form.validate(): logger.info('Enrolment code submitted') enrolment_code = request.form.get('enrolment_code').lower() # Validate the enrolment code try: iac = iac_controller.get_iac_from_enrolment(enrolment_code) if iac is None: logger.info('Enrolment code not found') template_data = {"error": {"type": "failed"}} return render_template('surveys/surveys-add.html', form=form, data=template_data), 200 if not iac['active']: logger.info('Enrolment code not active') template_data = {"error": {"type": "failed"}} return render_template('surveys/surveys-add.html', form=form, data=template_data) except ApiError as exc: if exc.status_code == 400: logger.info('Enrolment code already used', status_code=exc.status_code) template_data = {"error": {"type": "failed"}} return render_template('surveys/surveys-add.html', form=form, data=template_data) else: logger.error('Failed to submit enrolment code', status_code=exc.status_code) raise cryptographer = Cryptographer() encrypted_enrolment_code = cryptographer.encrypt( enrolment_code.encode()).decode() logger.info('Successful enrolment code submitted') return redirect( url_for('surveys_bp.survey_confirm_organisation', encrypted_enrolment_code=encrypted_enrolment_code, _external=True, _scheme=getenv('SCHEME', 'http'))) elif request.method == 'POST' and not form.validate(): logger.info('Invalid character length, must be 12 characters') template_data = {"error": {"type": "failed"}} return render_template('surveys/surveys-add.html', form=form, data=template_data) return render_template('surveys/surveys-add.html', form=form, data={"error": {}})
def register(): cryptographer = Cryptographer() form = EnrolmentCodeForm(request.form) if form.enrolment_code.data: form.enrolment_code.data = form.enrolment_code.data.strip() if request.method == 'POST' and form.validate(): logger.info('Enrolment code submitted') enrolment_code = form.enrolment_code.data.lower() # Validate the enrolment code try: iac = iac_controller.get_iac_from_enrolment(enrolment_code) if iac is None: template_data = {"error": {"type": "failed"}} return render_template( 'register/register.enter-enrolment-code.html', form=form, data=template_data), 200 except ApiError as exc: if exc.status_code == 400: logger.info('Enrolment code already used') template_data = {"error": {"type": "failed"}} return render_template( 'register/register.enter-enrolment-code.html', form=form, data=template_data), 200 else: logger.error('Failed to submit enrolment code') raise exc # This is the initial submission of enrolment code so post a case event for authentication attempt case_id = iac['caseId'] case = case_controller.get_case_by_enrolment_code(enrolment_code) business_party_id = case['partyId'] case_controller.post_case_event( case_id, party_id=business_party_id, category='ACCESS_CODE_AUTHENTICATION_ATTEMPT', description='Access code authentication attempted') encrypted_enrolment_code = cryptographer.encrypt( enrolment_code.encode()).decode() logger.info('Successful enrolment code submitted') return redirect( url_for('register_bp.register_confirm_organisation_survey', encrypted_enrolment_code=encrypted_enrolment_code, _external=True, _scheme=os.getenv('SCHEME', 'http'))) return render_template('register/register.enter-enrolment-code.html', form=form, data={"error": {}})
def add_survey(_): form = EnrolmentCodeForm(request.form) if request.method == "POST" and form.validate(): enrolment_code = request.form.get("enrolment_code").lower() logger.info("Enrolment code submitted when attempting to add survey", enrolment_code=enrolment_code) # Validate the enrolment code try: iac = iac_controller.get_iac_from_enrolment(enrolment_code) if iac is None: logger.info( "Enrolment code not found when attempting to add survey", enrolment_code=enrolment_code) template_data = {"error": {"type": "failed"}} return render_template("surveys/surveys-add.html", form=form, data=template_data), 200 if not iac["active"]: logger.info( "Enrolment code not active when attempting to add survey", enrolment_code=enrolment_code) template_data = {"error": {"type": "failed"}} return render_template("surveys/surveys-add.html", form=form, data=template_data) except ApiError as exc: if exc.status_code == 400: logger.info( "Enrolment code already used when attempting to add survey", status_code=exc.status_code, enrolment_code=enrolment_code, ) template_data = {"error": {"type": "failed"}} return render_template("surveys/surveys-add.html", form=form, data=template_data) else: logger.error( "Failed to submit enrolment code when attempting to add survey", status_code=exc.status_code, enrolment_code=enrolment_code, ) raise logger.info( "Enrolment code validation complete; now attempting encryption", enrolment_code=enrolment_code) cryptographer = Cryptographer() encrypted_enrolment_code = cryptographer.encrypt( enrolment_code.encode()).decode() logger.info("Enrolment code decoding successful", enrolment_code=enrolment_code) return redirect( url_for( "surveys_bp.survey_confirm_organisation", encrypted_enrolment_code=encrypted_enrolment_code, _external=True, _scheme=getenv("SCHEME", "http"), )) elif request.method == "POST" and not form.validate(): logger.info("Invalid character length, must be 12 characters") template_data = {"error": {"type": "failed"}} return render_template("surveys/surveys-add.html", form=form, data=template_data) return render_template("surveys/surveys-add.html", form=form, data={"error": {}})
def register(): cryptographer = Cryptographer() form = EnrolmentCodeForm(request.form) if form.enrolment_code.data: form.enrolment_code.data = form.enrolment_code.data.strip() if request.method == "POST" and form.validate(): enrolment_code = form.enrolment_code.data.lower() logger.info( "Enrolment code submitted when attempting to create account", enrolment_code=enrolment_code) # Validate the enrolment code try: iac = iac_controller.get_iac_from_enrolment(enrolment_code) if iac is None: logger.info( "Enrolment code not found when attempting to create account", enrolment_code=enrolment_code) template_data = {"error": {"type": "failed"}} return ( render_template( "register/register.enter-enrolment-code.html", form=form, data=template_data), 200, ) if not iac["active"]: logger.info( "Enrolment code not active when attempting to create account", enrolment_code=enrolment_code) template_data = {"error": {"type": "failed"}} return render_template( "register/register.enter-enrolment-code.html", form=form, data=template_data) except ApiError as exc: if exc.status_code == 400: logger.info( "Enrolment code already used when attempting to create account", enrolment_code=enrolment_code) template_data = {"error": {"type": "failed"}} return ( render_template( "register/register.enter-enrolment-code.html", form=form, data=template_data), 200, ) else: logger.error( "Failed to submit enrolment code when attempting to create account", enrolment_code=enrolment_code) raise exc # This is the initial submission of enrolment code so post a case event for authentication attempt case_id = iac["caseId"] case = case_controller.get_case_by_enrolment_code(enrolment_code) business_party_id = case["partyId"] case_controller.post_case_event( case_id, party_id=business_party_id, category="ACCESS_CODE_AUTHENTICATION_ATTEMPT", description="Access code authentication attempted", ) encrypted_enrolment_code = cryptographer.encrypt( enrolment_code.encode()).decode() logger.info( "Successful enrolment code submitted when attempting to create account", enrolment_code=enrolment_code) return redirect( url_for( "register_bp.register_confirm_organisation_survey", encrypted_enrolment_code=encrypted_enrolment_code, _external=True, _scheme=os.getenv("SCHEME", "http"), )) return render_template("register/register.enter-enrolment-code.html", form=form, data={"error": {}})