def login(self, request):
    if not current_user.is_anonymous:
        return None
    app = current_app._get_current_object()
    criteria = [
        request.is_secure, app.debug == False,
        request.headers.get('X-Forwarded-Proto', 'http') == 'https'
    ]
    scheme = 'http'
    if any(criteria):
        scheme = 'https'
    oauth = OAuthSignIn.get_provider('google')
    return oauth.authorize(scheme)
def login(self, request):
    if not current_user.is_anonymous:
        return None
    app = current_app._get_current_object()
    criteria = [
        request.is_secure,
        app.debug == False,
        request.headers.get('X-Forwarded-Proto', 'http') == 'https'
    ]
    scheme = 'http'
    if any(criteria):
        scheme = 'https'
    oauth = OAuthSignIn.get_provider('google')
    return oauth.authorize(scheme)
def oauth_callback(provider):
    if not current_user.is_anonymous():
        return redirect(url_for('index'))
    oauth = OAuthSignIn.get_provider(provider)
    username, uid, email = oauth.callback()
    if uid is None:
        print "failed auth"
        flash('Authentication failed.')
        return redirect(url_for('index'))

    session = settings.Session()
    user = session.query(
        models.User).filter(models.User.provider_id == uid).first()
    if not user:
        user = models.User(username=username, provider_id=uid, email=email)
        session.add(user)
        session.flush()
        session.commit()
    flask_login.login_user(user)
    session.close()
    return redirect(url_for('index'))
def oauth_callback(provider):
    if not current_user.is_anonymous():
        return redirect(url_for('index'))
    oauth = OAuthSignIn.get_provider(provider)
    username, uid, email = oauth.callback()
    if uid is None:
        print "failed auth"
        flash('Authentication failed.')
        return redirect(url_for('index'))

    session = settings.Session()
    user = session.query(models.User).filter(
        models.User.provider_id == uid).first()
    if not user:
        user = models.User(
                username=username,
                provider_id=uid,
                email=email)
        session.add(user)
        session.flush()
        session.commit()
    flask_login.login_user(user)
    session.close()
    return redirect(url_for('index'))