コード例 #1
0
def init_app(app, user_datastore, LoginForm):
    def load_user(user_id):
        return user_datastore.get_user(user_id)

    def load_user_from_request(request):
        apikey = request.headers.environ.get('HTTP_X_API_KEY', None)
        if apikey:
            user = user_datastore.find_user(apikey=apikey)
            if not user:
                return None
        else:
            auth = request.headers.get('Authorization')
            if not auth or auth.count(':') != 1:
                return None
            login, password = auth.split(':')
            user = user_datastore.find_user(email=login.strip())
            if user is None:
                return None
            if not verify_and_update_password(password.strip(), user):
                return None
        return user if login_user(user) else None
    security = Security()
    security.init_app(app, user_datastore, login_form=LoginForm)
    app.login_manager.request_loader(load_user_from_request)
    app.login_manager.user_loader(load_user)
    user_logged_out.connect(invalidate_user)
コード例 #2
0
ファイル: login_manager.py プロジェクト: odtvince/APITaxi
def init_app(app):
    security = Security()
    security.init_app(app, user_datastore, login_form=LoginForm)
    app.login_manager.request_loader(load_user_from_request)
    app.login_manager.user_loader(load_user)
    user_logged_out.connect(invalidate_user)
    user_logged_in.connect(invalidate_user)
コード例 #3
0
ファイル: factory.py プロジェクト: rhizomedotorg/straw-coffin
def create_app(config=None):
    app = Flask(__name__)

    # load configuration
    if config:
        app.config.from_object(config)
    else:
        app.config.from_object('rhiz.config.Default')
        app.config.from_envvar('RHIZ_APPLICATION_SETTINGS')

    security = Security()
    security.init_app(app, user_datastore)

    assets.init_app(app)
    db.init_app(app)
    admin.init_app(app)

    mail = Mail()
    mail.init_app(app)

    feature_flag = FeatureFlag()
    feature_flag.init_app(app)

    # register routes
    register_blog_routes(app)
    return app
コード例 #4
0
ファイル: __init__.py プロジェクト: akfork/wifidog-auth-flask
def create_app():
    app = flask.Flask(__name__)
    app.config.from_object('config')

    init_db(app)

    api.init_app(app)

    security = Security()
    security.init_app(app, users)

    principals = Principal()
    principals.init_app(app)

    configure_uploads(app, logos)

    from app.views import menu, bp

    menu.init_app(app)
    app.register_blueprint(bp)

    if False:
        login_manager = LoginManager(app)

        @login_manager.request_loader
        def load_user_from_request(request):
            if request.authorization:
                email, password = request.authorization.username, request.authorization.password
                user = User.query.filter_by(email=unicode(email)).first()

                if user is not None:
                    if verify_password(password, user.password):
                        return user

    @identity_loaded.connect_via(app)
    def on_identity_loaded(sender, identity):
        if not isinstance(identity, AnonymousIdentity):
            identity.provides.add(UserNeed(identity.id))

            for role in current_user.roles:
                identity.provides.add(RoleNeed(role.name))

    @principals.identity_loader
    def read_identity_from_flask_login():
        if current_user.is_authenticated():
            return Identity(current_user.id)
        return AnonymousIdentity()

    return app
コード例 #5
0
def create_app():
    app = flask.Flask(__name__)
    app.config.from_object('config')

    init_db(app)

    api.init_app(app)

    security = Security()
    security.init_app(app, users)

    principals = Principal()
    principals.init_app(app)

    configure_uploads(app, logos)

    from app.views import menu, bp

    menu.init_app(app)
    app.register_blueprint(bp)

    if False:
        login_manager = LoginManager(app)

        @login_manager.request_loader
        def load_user_from_request(request):
            if request.authorization:
                email, password = request.authorization.username, request.authorization.password
                user = User.query.filter_by(email=unicode(email)).first()

                if user is not None:
                    if verify_password(password, user.password):
                        return user

    @identity_loaded.connect_via(app)
    def on_identity_loaded(sender, identity):
        if not isinstance(identity, AnonymousIdentity):
            identity.provides.add(UserNeed(identity.id))

            for role in current_user.roles:
                identity.provides.add(RoleNeed(role.name))

    @principals.identity_loader
    def read_identity_from_flask_login():
        if current_user.is_authenticated():
            return Identity(current_user.id)
        return AnonymousIdentity()

    return app
コード例 #6
0
ファイル: __init__.py プロジェクト: eea/art12-viewer
    def init_app(self, app):
        if app.config.get('AUTH_DEBUG'):
            DebugAuthProvider().init_app(app)

        if app.config.get('AUTH_ZOPE'):
            ZopeAuthProvider().init_app(app)

        app.config.update({
            'SECURITY_CONFIRMABLE': True,
            'SECURITY_POST_CONFIRM_VIEW': self.homepage,
            'SECURITY_PASSWORD_HASH': 'ldap_salted_sha1',
            'SECURITY_SEND_PASSWORD_CHANGE_EMAIL': False,
            'SECURITY_EMAIL_SUBJECT_REGISTER': (
                "Please confirm your email address for "
                "the Biological Diversity website"
            ),
            'SECURITY_MSG_EMAIL_CONFIRMED': (
                ("Your email has been confirmed. You can now log in by "
                 "clicking the link at the top."),
                'success',
            ),
            'SECURITY_RECOVERABLE': True,
            'SECURITY_RESET_URL': '/auth/recover_password',
            'SECURITY_POST_LOGIN_VIEW': self.homepage,
            'SECURITY_MSG_PASSWORD_RESET': (
                "You have successfully reset your password.",
                'success',
            ),
            'SECURITY_FORGOT_PASSWORD_TEMPLATE': 'auth/forgot_password.html',
            'SECURITY_RESET_PASSWORD_TEMPLATE': 'auth/reset_password.html',
            'SECURITY_PASSWORD_SCHEMES': ['ldap_salted_sha1'],
        })
        Security.init_app(self.security_ext, app)
        security_state = app.extensions['security']
        security_state.pwd_context.update(ldap_salted_sha1__salt_size=7)
        security_state.forgot_password_form = EeaForgotPasswordForm

        app.register_blueprint(auth)
        app.jinja_env.globals['AUTH_BLUEPRINT_INSTALLED'] = True
        app.jinja_env.filters['ugly_fix'] = ugly_fix
        auth.models = self.models
        auth.HOMEPAGE = self.homepage
コード例 #7
0
def create_app(**config_overrides):
    global security
    app = Flask(__name__, template_folder='templates')
    app.config.from_object('config')
    app.config.update(config_overrides
                      )
    import sys
    import logging
    app.logger.addHandler(logging.StreamHandler(sys.stdout))
    app.logger.setLevel(logging.ERROR)
    engine_db.init_app(app)

    # setup security
    from wsgi import admin_views

    def security_context_processor():
        return dict(
            admin_base_template=admin.base_template,
            admin_view=admin.index_view,
            h=admin_helpers,
        )

    from wsgi.authentication_models import User, Role
    user_datastore = MongoEngineUserDatastore(engine_db, User, Role)
    security = Security(app)
    security._state = security.init_app(app, user_datastore)
    security.context_processor(security_context_processor)
    admin.init_app(app)

    app.register_blueprint(frontend)
    app.register_blueprint(filters)

    from wsgi.api import api
    from wsgi.resume_api import resume_api
    api.init_app(app)
    resume_api.init_app(app)

    return app
コード例 #8
0
ファイル: __init__.py プロジェクト: penshield/justlogmein
    confirmed_at = db.DateTimeField()
    birthdate = db.DateTimeField(required=True)
    gender = db.IntField(required=True)
    roles = db.ListField(db.ReferenceField(Role), default=[])
    gcm = db.ListField(required=False,default=[])

User.ensure_index([('password',ASCENDING)],index_name='password_idx')
User.ensure_index([('mobile',ASCENDING)],index_name='mobile_idx')
User.ensure_index([('name',ASCENDING)],index_name='mobile_idx')
# Setup Flask-Security
user_datastore = MongoEngineUserDatastore(db, User, Role)


#create the system wide security
security = Security()
security.init_app(app,user_datastore)



"""
This section attaches the login manager of the application
"""
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view='login'
login_manager.anonymous_user = AnonymousUser




コード例 #9
0
def configure_login_manager(app):
    security = Security(app)
    security.init_app(app, UserDataStore)

    app.config['SECURITY_LOGIN_URL'] = '/auth/login'
    app.config['SECURITY_LOGIN_USER_TEMPLATE'] = 'mod_auth/log_in.html'
コード例 #10
0
ファイル: __init__.py プロジェクト: maxnovais/Flapy_Blog
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.mail import Mail
from flask.ext.security import Security, SQLAlchemyUserDatastore
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.pagedown import PageDown

app = Flask(__name__)
app.config.from_object('config')

db = SQLAlchemy(app)
bootstrap = Bootstrap(app)
security = Security(app)
moment = Moment(app)
pagedown = PageDown(app)
mail = Mail(app)

from models import User, Role
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security.init_app(
    app,
    user_datastore,
)

from .main import main as main_blueprint
app.register_blueprint(main_blueprint)

from .admin import admin as admin_blueprint
app.register_blueprint(admin_blueprint, url_prefix='/admin')
コード例 #11
0
def make_app():

    babel = Babel()
    security = Security()
    social = Social()
    user_datastore = SQLAlchemyUserDatastore(mdl.DB, mdl.User, mdl.Role)

    app = Flask(__name__)

    @login_failed.connect_via(app)
    def auto_add_user(sender, provider, oauth_response):
        connection_values = get_connection_values_from_oauth_response(
            provider, oauth_response)
        email = connection_values['email']
        if not email or not email.strip():
            email = ''

        if provider.name.lower() == 'facebook':
            fname = connection_values['full_name']
            email = fb.get_email(oauth_response)
        elif provider.name.lower() == 'twitter':
            fname = connection_values['display_name'][1:]  # cut off leading @
        else:
            fname = connection_values['display_name']

        user = user_datastore.create_user(
            email=email,
            name=fname,
            active=True,
            confirmed_at=datetime.now(),
        )

        role_query = mdl.DB.session.query(mdl.Role).filter_by(
            name='authenticated')
        try:
            role = role_query.one()
        except NoResultFound:
            role = mdl.Role(name='authenticated')

        user.roles.append(role)
        user_datastore.commit()
        connection_values['user_id'] = user.id
        connect_handler(connection_values, provider)
        login_user(user)
        mdl.DB.session.commit()
        flash(gettext(
            'Successfully linked login with {}. '
            'Ignore the message saying: "{}"').format(
            provider.name, '... account not associated with an existing user'),
            'info')
        return redirect(url_for('root.profile'))

    app.user_datastore = user_datastore
    app.localconf = lconf = Config('mamerwiselen', 'lost-tracker',
                                   version='2.0', require_load=True)
    app.config['SECRET_KEY'] = lconf.get('app', 'secret_key')
    app.config['SQLALCHEMY_DATABASE_URI'] = lconf.get('db', 'dsn')
    mdl.DB.init_app(app)

    # Social connections
    social_connections = {}
    _add_social_params(social_connections, 'facebook', app.localconf)
    _add_social_params(social_connections, 'twitter', app.localconf)
    _add_social_params(social_connections, 'google', app.localconf)

    if len(social_connections) < 1:
        LOG.error('No Social/OAuth providers defined! Users will not be '
                  'able to log-in!')

    app.config.update(social_connections)

    social.init_app(app, SQLAlchemyConnectionDatastore(mdl.DB, mdl.Connection))
    security.init_app(app, user_datastore)

    app.register_blueprint(COMMENT, url_prefix=COMMENT_PREFIX)
    app.register_blueprint(GROUP, url_prefix=GROUP_PREFIX)
    app.register_blueprint(PHOTO, url_prefix=PHOTO_PREFIX)
    app.register_blueprint(QR, url_prefix=QR_PREFIX)
    app.register_blueprint(REGISTRATION, url_prefix=REGISTRATION_PREFIX)
    app.register_blueprint(ROOT)
    app.register_blueprint(STATION, url_prefix=STATION_PREFIX)
    app.register_blueprint(TABULAR, url_prefix=TABULAR_PREFIX)
    app.register_blueprint(USER, url_prefix=USER_PREFIX)
    babel.init_app(app)
    babel.localeselector(get_locale)
    return app
コード例 #12
0
def create_app():
    app = flask.Flask(__name__)
    app.config.from_object("config")

    init_db(app)

    api.init_app(app)

    security = Security()
    security.init_app(app, users)

    principals = Principal()
    principals.init_app(app)

    configure_uploads(app, logos)

    from app.views import menu, bp

    from app.signals import init_signals

    init_signals(app)

    menu.init_app(app)
    app.register_blueprint(bp)

    if False:
        login_manager = LoginManager(app)

        @login_manager.request_loader
        def load_user_from_request(request):
            if request.authorization:
                email, password = request.authorization.username, request.authorization.password
                user = User.query.filter_by(email=unicode(email)).first()

                if user is not None:
                    if verify_password(password, user.password):
                        return user

    @identity_loaded.connect_via(app)
    def on_identity_loaded(sender, identity):
        if not isinstance(identity, AnonymousIdentity):
            identity.provides.add(UserNeed(identity.id))

            for role in current_user.roles:
                identity.provides.add(RoleNeed(role.name))

    @principals.identity_loader
    def read_identity_from_flask_login():
        if current_user.is_authenticated():
            return Identity(current_user.id)
        return AnonymousIdentity()

    @app.after_request
    def somefunc(response):
        if "cid" not in flask.request.cookies:
            cid = str(uuid.uuid4())
            expires = datetime.datetime.now() + datetime.timedelta(days=365 * 2)
            response.set_cookie("cid", cid, expires=expires)
        return response

    return app
コード例 #13
0
def create_app(config_name):
    app = Flask(__name__)
    env = Environments(app, default_env=config_name)
    if os.path.exists(os.path.join(basedir, 'config_local.yml')):
        env.from_yaml(os.path.join(basedir, 'config_local.yml'))
    else:
        env.from_yaml(os.path.join(basedir, 'config.yml'))

    # Uses REDIS_URL from config.yml to set the connection to the redis-server
    cache.config = {
        'CACHE_TYPE': 'redis',
        'CACHE_REDIS_URL': app.config['REDIS_URL']}

    # Adding logging capabilities.
    if app.config['LOGGING'] is True:
        import logging
        logger = logging.getLogger('replicate')
        logger.setLevel(logging.DEBUG)

        log_directory = basedir + app.config['LOG_FILE_PTAH']
        log_filename = log_directory + app.config['LOG_FILE']
        if not os.path.exists(os.path.dirname(log_filename)):
            os.makedirs(os.path.dirname(log_filename))
        file_handler = logging.FileHandler(log_filename, mode='a+')

        stream_handler = logging.StreamHandler()
        formatter = logging.Formatter(
            '%(asctime)s - %(process)d - %(name)s - ' +
            '%(module)s:%(lineno)d - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        stream_handler.setFormatter(formatter)
        app.logger.addHandler(file_handler)
        # app.logger.addHandler(stream_handler)
        app.logger.setLevel(logging.DEBUG)
        app.logger.info('Application Process Started')

    # SSL
    if not app.debug and not app.testing and app.config['SSL_DISABLE']:
        from flask.ext.sslify import SSLify
        sslify = SSLify(app)

    # handle proxy server headers
    from werkzeug.contrib.fixers import ProxyFix
    app.wsgi_app = ProxyFix(app.wsgi_app)

    db.init_app(app)
    login_manager.init_app(app)
    cache.init_app(app)
    csrf.init_app(app)
    redis_store.init_app(app)
    cors.init_app(app)

    # Flask-Security Init
    from ooiservices.app.models import User, Role
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    security = Security(app, user_datastore)
    security.init_app(app, register_blueprint=False)

    from ooiservices.app.main import api as main_blueprint
    app.register_blueprint(main_blueprint)

    from ooiservices.app.uframe import uframe as uframe_blueprint
    app.register_blueprint(uframe_blueprint, url_prefix='/uframe')

    from ooiservices.app.redmine import redmine as redmine_blueprint
    app.register_blueprint(redmine_blueprint, url_prefix='/redmine')

    from ooiservices.app.alfresco import alfresco as alfresco_blueprint
    app.register_blueprint(alfresco_blueprint, url_prefix='/alfresco')

    from ooiservices.app.m2m import m2m as m2m_blueprint
    app.register_blueprint(m2m_blueprint, url_prefix='/m2m')

    # If debug is enabled add route for site-map
    if app.config['DEBUG']:
        app.add_url_rule('/site-map', 'site_map', site_map)

    return app