Exemplo n.º 1
0
def trigger_reset():
    """
    Allow user to trigger a reset of the password in case they forget it
    """

    values = {"csrf_token": generate_csrf_token()}

    # If it's a simple GET method we return the form
    if request.method == 'GET':
        return render_template('account/trigger_reset.html', form_fill=values)

    # Get the email
    email = request.form.get('email')

    # Simple check to see if the email was provided. Flash error if not
    if email is None or not len(email):
        flash_error("Please enter an email address!")
        return render_template('account/trigger_reset.html', form_fill=values)

    # Get the account for this email
    account = Account.by_email(email)

    # If no account is found we let the user know that it's not registered
    if account is None:
        flash_error("No user is registered under this address!")
        return render_template('account/trigger_reset.html', form_fill=values)

    account.reset_loginhash()
    db.session.commit()

    # Send the reset link to the email of this account
    sendhash(account)

    # Redirect to the login page
    return redirect(url_for('account.email_message', id=account.id))
Exemplo n.º 2
0
def trigger_reset():
    """
    Allow user to trigger a reset of the password in case they forget it
    """

    values = {"csrf_token": generate_csrf_token()}

    # If it's a simple GET method we return the form
    if request.method == 'GET':
        return render_template('account/trigger_reset.html', form_fill=values)

    # Get the email
    email = request.form.get('email')

    # Simple check to see if the email was provided. Flash error if not
    if email is None or not len(email):
        flash_error("Please enter an email address!")
        return render_template('account/trigger_reset.html',  form_fill=values)

    # Get the account for this email
    account = Account.by_email(email)

    # If no account is found we let the user know that it's not registered
    if account is None:
        flash_error("No user is registered under this address!")
        return render_template('account/trigger_reset.html',  form_fill=values)

    account.reset_loginhash()
    db.session.commit()



    # Send the reset link to the email of this account
    sendhash(account)


    # Redirect to the login page
    return redirect(url_for('account.email_message', id=account.id))
Exemplo n.º 3
0
def email_message():

    user_id = request.args.get('id')

    useraccount = Account.by_id(user_id)

    if not useraccount:
        message = "There is no user with this account"
        return render_template('account/email_message.jade', message=message)

    if useraccount.admin:
        message = "This operation is not possible for this user type"
        return render_template('account/email_message.jade', message=message)

    message_dict = sendhash(useraccount, gettext=True)
    message = str(message_dict) + "<br/><br/><a href='" + message_dict['verifylink'] + "'><h3>Click to Verify</h3></a>"

    return render_template('account/email_message.jade', message=message)
Exemplo n.º 4
0
def email_message():

    user_id = request.args.get('id')

    useraccount = Account.by_id(user_id)

    if not useraccount:
        message = "There is no user with this account"
        return render_template('account/email_message.jade', message=message)

    if useraccount.admin:
        message = "This operation is not possible for this user type"
        return render_template('account/email_message.jade', message=message)

    message_dict = sendhash(useraccount, gettext=True)
    message = str(message_dict) + "<br/><br/><a href='" + message_dict[
        'verifylink'] + "'><h3>Click to Verify</h3></a>"

    return render_template('account/email_message.jade', message=message)
Exemplo n.º 5
0
def register():
    """ Perform registration of a new user """
    errors, values = {}, dict(request.form.items())

    try:
        # Grab the actual data and validate it
        data = AccountRegister().deserialize(values)

        #check if email is already registered
            # it is, then send the email hash for the login

        #check that email is real
        #get the domain
        print data['email']
        if (data['email'].find('@') == -1 or data['email'].find('.') == -1):
            raise colander.Invalid(AccountRegister.email,
                    "You must use a valid USG email address")

        domain = data['email'][data['email'].find('@') + 1:]

        if 'EMAIL_WHITELIST' not in current_app.config.keys():
            raise colander.Invalid(AccountRegister.email,
                "System not set correctly.  Please contact the administrator.")

        domainvalid = False

        for domainemail in current_app.config['EMAIL_WHITELIST']:
            if domain.lower() == domainemail.lower():
                domainvalid = True

        if not domainvalid:
            raise colander.Invalid(AccountRegister.email,
                "Your email is not available for registration.  Currently it is only available for US Government emails.")



        # Check if the username already exists, return an error if so
        if Account.by_email(data['email']):
            #resend the hash here to the email and notify the user
            raise colander.Invalid(
                AccountRegister.email,
                "Login Name already exists.  Click reset password.")



        # Create the account
        account = Account()
        account.fullname = data['fullname']
        account.email = data['email']
        

        db.session.add(account)
        db.session.commit()

        # Perform a login for the user
        #login_user(account, remember=True)

        sendhash(account)


        # TO DO redirect to email sent page
        return redirect(url_for('account.email_message', id=account.id))
    except colander.Invalid as i:
        errors = i.asdict()
    values["csrf_token"] = generate_csrf_token()
    return render_template('account/login.jade', form_fill=values,
                           form_errors=errors)
Exemplo n.º 6
0
def register():
    """ Perform registration of a new user """
    errors, values = {}, dict(request.form.items())

    try:
        # Grab the actual data and validate it
        data = AccountRegister().deserialize(values)

        #check if email is already registered
        # it is, then send the email hash for the login

        #check that email is real
        #get the domain
        if (data['email'].find('@') == -1 or data['email'].find('.') == -1):
            flash_error("You must use a valid USG email address")
            raise colander.Invalid(AccountRegister.email,
                                   "You must use a valid USG email address")

        domain = data['email'][data['email'].find('@') + 1:]

        if 'EMAIL_WHITELIST' not in current_app.config.keys():
            flash_error(
                "Your email is not current supported.  The login option is only available for US Government offices at this time."
            )
            raise colander.Invalid(
                AccountRegister.email,
                "System not set correctly.  Please contact the administrator.")

        domainvalid = False

        for domainemail in current_app.config['EMAIL_WHITELIST']:
            if domain.lower() == domainemail.lower():
                domainvalid = True

        if not domainvalid:
            flash_error(
                "Your email is not current supported.  The login option is only available for US Government offices at this time."
            )
            raise colander.Invalid(
                AccountRegister.email,
                "Your email is not available for registration.  Currently it is only available for US Government emails."
            )

        # Check if the username already exists, return an error if so
        if Account.by_email(data['email']):
            flash_error(
                "Login Name already exists.  Click request password reset to change your password."
            )

            #resend the hash here to the email and notify the user
            raise colander.Invalid(
                AccountRegister.email,
                "Login Name already exists.  Click request password reset to change your password."
            )

        # Create the account
        account = Account()
        account.fullname = data['fullname']
        account.email = data['email']

        db.session.add(account)
        db.session.commit()

        # Perform a login for the user
        #login_user(account, remember=True)

        sendhash(account)

        # TO DO redirect to email sent page
        return redirect(url_for('account.email_message', id=account.id))
    except colander.Invalid as i:
        errors = i.asdict()
    if request.form.get("csrf_token", None):
        values['csrf_token'] = request.form.get('csrf_token')
    else:
        values["csrf_token"] = generate_csrf_token()
    return render_template(
        'account/login.jade',
        form_fill=values,
        form_errors=errors,
        form_fill_login={'csrf_token': values['csrf_token']})