Skip to content
Snippets Groups Projects
Commit 3b56b36b authored by admiralobvious's avatar admiralobvious
Browse files

added example using blueprints/factories

parent fe26cdf8
No related branches found
No related tags found
No related merge requests found
from flask import Flask, g, session
from .config import BaseConfig
from .extensions import ldap
from .core import core
from .foo import foo
DEFAULT_BLUEPRINTS = (
core,
foo
)
def create_app(config=None, app_name=None, blueprints=None):
if app_name is None:
app_name = BaseConfig.PROJECT
if blueprints is None:
blueprints = DEFAULT_BLUEPRINTS
app = Flask(app_name)
configure_app(app, config)
register_hooks(app)
register_blueprints(app, blueprints)
register_extensions(app)
return app
def configure_app(app, config=None):
if config:
app.config.from_object(config)
def register_hooks(app):
@app.before_request
def before_request():
g.user = None
if 'user_id' in session:
# This is where you'd query your database to get the user info.
g.user = {}
# Create a global with the LDAP groups the user is a member of.
g.ldap_groups = ldap.get_user_groups(user=session['user_id'])
def register_blueprints(app, blueprints):
for blueprint in blueprints:
app.register_blueprint(blueprint)
def register_extensions(app):
ldap.init_app(app)
class BaseConfig(object):
PROJECT = 'foo'
SECRET_KEY = 'dev key'
DEBUG = True
# LDAP
LDAP_HOST = 'ldap.example.org'
LDAP_BASE_DN = 'OU=users,dc=example,dc=org'
LDAP_USERNAME = 'CN=user,OU=Users,DC=example,DC=org'
LDAP_PASSWORD = 'password'
LDAP_LOGIN_VIEW = 'core.login'
from .views import core
from flask import Blueprint, g, request, session, redirect, url_for
from ..extensions import ldap
core = Blueprint('core', __name__)
@core.route('/')
@ldap.login_required
def index():
return 'Successfully logged in!'
@core.route('/login', methods=['GET', 'POST'])
def login():
if g.user:
return redirect(url_for('index'))
if request.method == 'POST':
user = request.form['user']
passwd = request.form['passwd']
test = ldap.bind_user(user, passwd)
if test is None:
return 'Invalid credentials'
else:
session['user_id'] = request.form['user']
return redirect('/')
return """<form action="" method="post">
user: <input name="user"><br>
password:<input type="password" name="passwd"><br>
<input type="submit" value="Submit"></form>"""
@core.route('/group')
@ldap.group_required(groups=['Web Developers', 'QA'])
def group():
return 'Group restricted page'
@core.route('/logout')
def logout():
session.pop('user_id', None)
return redirect(url_for('index'))
from flask.ext.simpleldap import LDAP
ldap = LDAP()
from .views import foo
from flask import Blueprint
from ..extensions import ldap
foo = Blueprint('foo', __name__, url_prefix='/foo')
@foo.route('/group')
@ldap.group_required(groups=['Web Developers', 'QA'])
def group():
return 'Group restricted page in foo module'
from blueprints.app import create_app
from blueprints.config import BaseConfig
app = create_app(BaseConfig)
if __name__ == "__main__":
app.run()
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment