Exemple #1
0
def dummy_stageuser(ipa_testing_config):
    now = datetime.datetime.utcnow().replace(microsecond=0)
    user = ipa_admin.stageuser_add(
        "dummy",
        "Dummy",
        'User',
        mail="*****@*****.**",
        login_shell='/bin/bash',
        fascreationtime=f"{now.isoformat()}Z",
    )
    yield User(user)
    try:
        ipa_admin.stageuser_del("dummy")
    except python_freeipa.exceptions.NotFound:
        pass
Exemple #2
0
def dummy_stageuser(ipa_testing_config):
    now = datetime.datetime.utcnow().replace(microsecond=0)
    user = ipa_admin.stageuser_add(
        a_uid="dummy",
        o_givenname="Dummy",
        o_sn="User",
        o_cn="Dummy User",
        o_mail="*****@*****.**",
        o_loginshell='/bin/bash',
        fascreationtime=f"{now.isoformat()}Z",
    )['result']
    yield User(user)
    try:
        ipa_admin.stageuser_del(a_uid="dummy")
    except python_freeipa.exceptions.NotFound:
        pass
Exemple #3
0
def handle_register_form(form):
    username = form.username.data
    now = datetime.datetime.utcnow().replace(microsecond=0)
    # First, create the stage user.
    try:
        user = ipa_admin.stageuser_add(
            a_uid=username,
            o_givenname=form.firstname.data,
            o_sn=form.lastname.data,
            o_cn=form.firstname.data + " " + form.lastname.data,
            o_mail=form.mail.data,
            o_loginshell='/bin/bash',
            fascreationtime=f"{now.isoformat()}Z",
            faslocale=guess_locale(),
            fastimezone=app.config["USER_DEFAULTS"]["timezone"],
            fasstatusnote=app.config["USER_DEFAULTS"]["status_note"],
        )['result']
        user = User(user)
    except python_freeipa.exceptions.DuplicateEntry:
        raise FormError(
            "username",
            _("This username is already taken, please choose another one."))
    except python_freeipa.exceptions.ValidationError as e:
        # for example: invalid username. We don't know which field to link it to
        _handle_registration_validation_error(username, e)
    except python_freeipa.exceptions.FreeIPAError as e:
        app.logger.error(
            f'An unhandled error {e.__class__.__name__} happened while registering user '
            f'{username}: {e.message}')
        raise FormError(
            "non_field_errors",
            _('An error occurred while creating the account, please try again.'
              ),
        )

    stageuser_created.send(user, request=request._get_current_object())
    if app.config["BASSET_URL"]:
        return redirect(f"{url_for('spamcheck_wait')}?username={username}")
    else:
        # Send the address validation email
        _send_validation_email(user)
        return redirect(
            f"{url_for('confirm_registration')}?username={username}")
Exemple #4
0
def handle_register_form(form):
    username = form.username.data
    now = datetime.datetime.utcnow().replace(microsecond=0)

    # First, create the stage user.
    try:
        user = ipa_admin.stageuser_add(
            username,
            form.firstname.data,
            form.lastname.data,
            mail=form.mail.data,
            login_shell='/bin/bash',
            fascreationtime=f"{now.isoformat()}Z",
            faslocale=guess_locale(),
            fastimezone=app.config["USER_DEFAULTS"]["user_timezone"],
        )
        user = User(user)
    except python_freeipa.exceptions.DuplicateEntry:
        raise FormError(
            "username",
            _("This username is already taken, please choose another one."))
    except python_freeipa.exceptions.ValidationError as e:
        # for example: invalid username. We don't know which field to link it to
        _handle_registration_validation_error(username, e)
    except python_freeipa.exceptions.FreeIPAError as e:
        app.logger.error(
            f'An unhandled error {e.__class__.__name__} happened while registering user '
            f'{username}: {e.message}')
        raise FormError(
            "non_field_errors",
            _('An error occurred while creating the account, please try again.'
              ),
        )

    # Send the address validation email
    _send_validation_email(user)
    return redirect(f"{url_for('confirm_registration')}?username={username}")