Skip to main content

A Flask Blueprint for managing users.

Project description

flask_login_dictabase_blueprint

A Flask Blueprint for managing users.

Example App

import time

from flask import render_template, flash, jsonify

from flask_login_dictabase_blueprint import (
    verify_is_user,
    verify_is_admin,
    new_user,
    forgot_password,
    on_magic_link_created,
    add_admin,
    get_users,
    get_current_user,
    on_signin,
    do_render_template,
    menu,
    get_app
)

app = get_app({
    'SECRET_KEY': 'random_string',
})


@app.route('/')
def index():
    """This page is visible to anyone (logged in or not)."""
    return render_template('index.html', user=get_current_user())


@app.route('/private')
@verify_is_user
def private():
    """This page is only viewable to logged-in users."""
    return render_template('private.html', user=get_current_user())


add_admin('grant@grant-miller.com')  # You can add one or more "admins"


@app.route('/admin')
@verify_is_admin
def admin():
    """This page is only viewable by the admins."""
    return render_template(
        'admin.html',
        users=get_users(),
        user=get_current_user(),
    )


@new_user
def new_user_callback(user):
    """Called whenever a new user is created."""
    print('NewUserCallback(user=', user)
    flash(f'Welcome new user {user["email"]}')


@forgot_password
def forgot_password_callback(user, forgot_url):
    """Called when a user requests to reset their password. You should email the forgot_url to the user."""
    print('ForgotPasswordCallback(user=', user, forgot_url)
    flash('Send an email with the forgot_url to the user', 'info')


@on_magic_link_created
def magic_link_callback(user, magic_link):
    """Used to simplify login. Email the magic_link to the user. If they click on the magic_link, they will be logged in."""
    print('MagicLinkCallback(user=', user, magic_link)
    flash('Send an email with the magic link to the user', 'info')


@on_signin
def signed_in_callback(user):
    print(f'SignedIn {user["email"]}')


@do_render_template
def render_template_callback(template_name):
    print('RenderTemplateCallback(templateName=', template_name)
    return {
        'message': f'The time is {time.asctime()}',
        'title': 'My Title',
    }


menu.AddMenuOption('Test Title', '/test_url', adminOnly=False)
menu.AddMenuOption('Admin Title', '/admin_url', adminOnly=True)
menu.AddMenuOption('User Title', '/user_url', userOnly=True)


@app.route('/menu')
def menu_view():
    return jsonify(menu.GetMenu())


if __name__ == '__main__':
    app.run(debug=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_login_dictabase_blueprint-2.0.3.tar.gz (6.1 kB view details)

Uploaded Source

File details

Details for the file flask_login_dictabase_blueprint-2.0.3.tar.gz.

File metadata

File hashes

Hashes for flask_login_dictabase_blueprint-2.0.3.tar.gz
Algorithm Hash digest
SHA256 1a905c3d6f27e70f21f575a31cda3f2678459cd8ffdb1aef1fdf5a5ea0a61c9f
MD5 9263018bda93326613f60f9ff7047eaf
BLAKE2b-256 f18016b26d3620b07e0b9decfb8927c255a838c1f52d44dcb3d24e6da9213a56

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page