def __init__(self, app): AuthController.instance = self self.manager = LoginManager(app) self.manager.login_message = None self.manager.login_view = 'certificates' self.authorize = Authorize(app) @app.errorhandler(Unauthorized) def unauthorized(_): return render_template('auth/nonresident.html'), 403 @app.route('/certificates') def certificates(): return render_template('auth/certificates.html', base=app.config['BASE_URL']) @self.manager.request_loader def load_kerberos(_): email = getenv('SSL_CLIENT_S_DN_Email') if email: return first_or_instance(User, kerberos=email.split('@')[0])
from flask import Flask from config import Config from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager from flask_authorize import Authorize from flask_mail import Mail, Message app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) migrate = Migrate(app, db) login = LoginManager(app) authorize = Authorize(app) mail = Mail(app) from app import routes, models, errors if __name__ == "__main__": app.run(debug=True)
# application # ----------- class Config(object): ENV = 'testing' TESTING = True SQLALCHEMY_ECHO = False PROPAGATE_EXCEPTIONS = False SQLALCHEMY_DATABASE_URI = 'sqlite:///{}/app.db'.format(SANDBOX) AUTHORIZE_ALLOW_ANONYMOUS_ACTIONS = True app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) authorize = Authorize(app, current_user=lambda: g.user) # models # ------ UserGroup = db.Table( 'user_group', db.Model.metadata, db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('group_id', db.Integer, db.ForeignKey('groups.id'))) UserRole = db.Table( 'user_role', db.Model.metadata, db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('role_id', db.Integer, db.ForeignKey('roles.id'))) class User(db.Model):
from flask_authorize import Authorize from flask_login import current_user authorize = Authorize()
( "The environment variable FLASK_DEBUG is being overidden by " "the configuration option 'debug' ({})" ).format(options["debug"]) ) os.environ["FLASK_DEBUG"] = options["debug"] # continue the setup mail = Mail() cors = CORS() compress = Compress() bootstrap = Bootstrap() jwt = flask_jwt_extended.JWTManager() authorize = Authorize(current_user=flask_jwt_extended.get_current_user) moment = Moment() db = SQLAlchemy() ma = Marshmallow() @jwt.user_lookup_loader def user_loader_callback(jwt_header, jwt_payload): """Function for app, to return user object""" if jwt_header: from seamm_datastore.database.models import User username = jwt_payload["sub"]["username"] user = User.query.filter_by(username=username).one_or_none()