Exemple #1
0
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": {}})
Exemple #2
0
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": {}})
Exemple #3
0
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": {}})