Example #1
0
def login(provider_id):
    """Starts the provider login OAuth flow"""
    provider = get_provider_or_404(provider_id)
    callback_url = get_authorize_callback('login', provider_id)
    post_login = request.form.get('next', get_post_login_redirect())
    session[config_value('POST_OAUTH_LOGIN_SESSION_KEY')] = post_login
    return provider.authorize(callback_url)
Example #2
0
def login(provider_id):
    """Starts the provider login OAuth flow"""
    provider = get_provider_or_404(provider_id)
    callback_url = get_authorize_callback('login', provider_id)
    post_login = request.form.get('next', get_post_login_redirect())
    session['post_oauth_login_url'] = post_login
    return provider.authorize(callback_url)
Example #3
0
def remove_connection(provider_id, provider_user_id):
    """Remove a specific connection for the authenticated user to the
    specified provider
    """
    provider = get_provider_or_404(provider_id)

    ctx = dict(provider=provider.name,
               user=current_user,
               provider_user_id=provider_user_id)

    deleted = _datastore.delete_connection(user_id=current_user.get_id(),
                                           provider_id=provider_id,
                                           provider_user_id=provider_user_id)

    if deleted:
        after_this_request(_commit)
        msg = ('Connection to %(provider)s removed' % ctx, 'info')
        connection_removed.send(current_app._get_current_object(),
                                user=current_user._get_current_object(),
                                provider_id=provider_id)
    else:
        msg = ('Unabled to remove connection to %(provider)s' % ctx, 'error')

    do_flash(*msg)
    return redirect(request.referrer or get_post_login_redirect())
Example #4
0
def login_handler(response, provider, query):
    """Shared method to handle the signin process"""

    connection = _datastore.find_connection(**query)

    if connection:
        after_this_request(_commit)
        user = connection.user
        login_user(user)
        key = _social.post_oauth_login_session_key
        redirect_url = session.pop(key, get_post_login_redirect())

        login_completed.send(current_app._get_current_object(),
                             provider=provider,
                             user=user)

        return redirect(redirect_url)

    login_failed.send(current_app._get_current_object(),
                      provider=provider,
                      oauth_response=response)

    next = get_url(_security.login_manager.login_view)
    msg = '%s account not associated with an existing user' % provider.name
    do_flash(msg, 'error')
    return redirect(next)
Example #5
0
def login(provider_id):
    """Starts the provider login OAuth flow"""
    provider = get_provider_or_404(provider_id)
    callback_url = get_authorize_callback('login', provider_id)
    post_login = request.form.get('next', get_post_login_redirect())
    session['post_oauth_login_url'] = post_login
    return provider.authorize(callback_url)
Example #6
0
def login_handler(response, provider, query):
    """Shared method to handle the signin process"""

    connection = _datastore.find_connection(**query)

    if connection:
        after_this_request(_commit)
        user = connection.user
        login_user(user)
        key = _social.post_oauth_login_session_key
        redirect_url = session.pop(key, get_post_login_redirect())

        login_completed.send(current_app._get_current_object(),
                             provider=provider, user=user)

        return redirect(redirect_url)

    login_failed.send(current_app._get_current_object(),
                      provider=provider,
                      oauth_response=response)

    next = get_url(_security.login_manager.login_view)
    msg = '%s account not associated with an existing user' % provider.name
    do_flash(msg, 'error')
    return redirect(next)
Example #7
0
def login_handler(response, provider, query):
    """Shared method to handle the signin process"""

    connection = _datastore.find_connection(**query)

    if connection:
        after_this_request(_commit)
        user = connection.user
        login_user(user)
        key = _social.post_oauth_login_session_key
        redirect_url = session.pop(key, get_post_login_redirect())

        login_completed.send(current_app._get_current_object(),
                             provider=provider, user=user)

        return redirect(redirect_url)

    login_failed.send(current_app._get_current_object(),
                      provider=provider,
                      oauth_response=response)
    #_security.login_manager.login_view = "user.register"
    #next = get_url(_security.login_manager.login_view)
    next = url_for('user.register', provider_id=provider.id, login_failed=1)
    msg = '%s account not associated with an existing user' % provider.name
    #if session['login_attempt']:
    #    session['failed_login_connection'] = dict(dummy="dummy")
    do_flash(msg, 'danger' if session['login_attempt'] else 'info')
    return redirect(next)
Example #8
0
def login(provider_id):
    """Starts the provider login OAuth flow"""
    provider = get_provider_or_404(provider_id)
    callback_url = get_authorize_callback('login', provider_id)
    post_login = request.form.get('next', get_post_login_redirect())
    session[config_value('POST_OAUTH_LOGIN_SESSION_KEY')] = post_login
    return provider.authorize(callback_url)
Example #9
0
def login():

    form_class = _security.login_form
    form = form_class()

    if form.validate_on_submit():
        login_user(form.user, remember=form.remember.data)
        after_this_request(_commit)

        if not request.json:
            return redirect(get_post_login_redirect(form.next.data))

    return render_html('content/login.html', login_user_form=form)
Example #10
0
def login():

    form_class = _security.login_form
    form = form_class()

    if form.validate_on_submit():
        login_user(form.user, remember=form.remember.data)
        after_this_request(_commit)

        if not request.json:
            return redirect(get_post_login_redirect(form.next.data))

    return render_html('content/login.html', login_user_form=form)
Example #11
0
def login():
    if current_user.is_authenticated():
        return redirect(request.referrer or '/')
    
    form = LoginForm()

    if form.validate_on_submit():
        login_user(form.user, remember=form.remember.data)
        return redirect(get_post_login_redirect())

        

    return render_template('security/login.html', 
                                active_nav_band = "Login",
                                form=form)
Example #12
0
    def dispatch_request(self):
        form = forms.LoginForm()

        if form.validate_on_submit():
            utils.login_user(form.user, remember=form.remember.data)
            flask.after_this_request(security_views._commit)

            return flask.redirect(utils.get_post_login_redirect())

        form.next.data = (
            utils.get_url(flask.request.args.get('next')) or
            utils.get_url(flask.request.form.get('next')) or
            ''
        )

        return flask.render_template('login.html', form=form)
Example #13
0
def login():
    """View function for login view"""


    form = LoginForm()

    if form.validate_on_submit():
        login_user(form.user, remember=form.remember.data)
        after_this_request(_commit)

        if not request.json:
            return redirect(get_post_login_redirect())


    return render('login.html',
        login_user_form=form)
Example #14
0
def create_or_login(resp):
    session['openid'] = resp.identity_url
    
    current_app.logger.debug("User: %s", current_user)
    
    try:
        user = current_app.security.auth_provider.authenticate_openid(session['openid'])
        if user and _do_login(user):
            flash(u'Successfully signed in')
            return redirect(get_post_login_redirect())
    except BadCredentialsError, UserNotFoundError:
        if current_user.get_id() is not None:
            # Looks like the openid token changed... not sure how, so we'll wipe it and start over
            current_user['openid'] = None
            security.datastore._save_model(current_user)
            
            return redirect(url_for('login'))
Example #15
0
def foursquare_login():
    import foursquare
    client = foursquare.Foursquare(
        client_id=app.config['FOURSQUARE_CLIENT_ID'],
        client_secret=app.config['FOURSQUARE_CLIENT_SECRET'],
        redirect_uri=url_for('.foursquare_login', _external=True))

    if 'error' in request.args:
        flash('Foursquare login failed: {}'.format(request.args['error']))
        return redirect(url_for_security('login'), 307)
    elif 'code' in request.args:
        access_token = client.oauth.get_token(request.args['code'])
        client.set_access_token(access_token)
        foursquare_user = client.users()

        try:
            email = foursquare_user['user']['contact']['email']
        except KeyError:
            app.logger.debug(
                "Failed to pluck email from {}".format(foursquare_user),
                exc_info=True)
            flash("Couldn't determine your email address from Foursquare")
            return redirect(url_for_security('login'), 307)

        user = user_datastore.find_user(email=email)
        if user is None:
            user = user_datastore.create_user(email=email)
        if user.foursquare_access_token != access_token:
            user.foursquare_access_token = access_token

        user_datastore.commit()
        login_user(user)
        # TODO: stuff next into the session, pull it back out here
        declared = session.pop('FOURSQUARE_POST_LOGIN_NEXT', None)
        redirect_to = get_post_login_redirect(declared=declared)
        return redirect(redirect_to, 307)
    else:
        auth_uri = client.oauth.auth_url()
        session['FOURSQUARE_POST_LOGIN_NEXT'] = request.args.get('next')
        return redirect(auth_uri, 307)
Example #16
0
def foursquare_login():
    import foursquare
    client = foursquare.Foursquare(
        client_id=app.config['FOURSQUARE_CLIENT_ID'],
        client_secret=app.config['FOURSQUARE_CLIENT_SECRET'],
        redirect_uri=url_for('.foursquare_login', _external=True))

    if 'error' in request.args:
        flash('Foursquare login failed: {}'.format(request.args['error']))
        return redirect(url_for_security('login'), 307)
    elif 'code' in request.args:
        access_token = client.oauth.get_token(request.args['code'])
        client.set_access_token(access_token)
        foursquare_user = client.users()

        try:
            email = foursquare_user['user']['contact']['email']
        except KeyError:
            app.logger.debug(
                "Failed to pluck email from {}".format(foursquare_user),
                exc_info=True)
            flash("Couldn't determine your email address from Foursquare")
            return redirect(url_for_security('login'), 307)

        user = user_datastore.find_user(email=email)
        if user is None:
            user = user_datastore.create_user(email=email)
        if user.foursquare_access_token != access_token:
            user.foursquare_access_token = access_token

        user_datastore.commit()
        login_user(user)
        # TODO: stuff next into the session, pull it back out here
        declared = session.pop('FOURSQUARE_POST_LOGIN_NEXT', None)
        redirect_to = get_post_login_redirect(declared=declared)
        return redirect(redirect_to, 307)
    else:
        auth_uri = client.oauth.auth_url()
        session['FOURSQUARE_POST_LOGIN_NEXT'] = request.args.get('next')
        return redirect(auth_uri, 307)
Example #17
0
def remove_connection(provider_id, provider_user_id):
    """Remove a specific connection for the authenticated user to the
    specified provider
    """
    provider = get_provider_or_404(provider_id)

    ctx = dict(provider=provider.name, user=current_user,
               provider_user_id=provider_user_id)

    deleted = _datastore.delete_connection(user_id=current_user.get_id(),
                                           provider_id=provider_id,
                                           provider_user_id=provider_user_id)

    if deleted:
        after_this_request(_commit)
        msg = ('Connection to %(provider)s removed' % ctx, 'info')
        connection_removed.send(current_app._get_current_object(),
                                user=current_user._get_current_object(),
                                provider_id=provider_id)
    else:
        msg = ('Unabled to remove connection to %(provider)s' % ctx, 'error')

    do_flash(*msg)
    return redirect(request.referrer or get_post_login_redirect())
Example #18
0
def flask_login():
    """Login view with custom form validation.
    Login into site like Admin user (is_staff) 
    and like Control user (only is_authenticated).
    """

    if request.json:
        form = LoginForm(MultiDict(request.json))
    else:
        form = LoginForm()

    if form.validate_on_submit():
        login_user(form.user, remember=form.remember.data)
        after_this_request(_commit)

        if not request.json:
            return redirect(get_post_login_redirect(form.next.data))

    if request.json:
        return _render_json(form, include_auth_token=True)

    return _security.render_template(config_value('LOGIN_USER_TEMPLATE'),
                                     login_user_form=form,
                                     **_ctx('login'))
Example #19
0
    def login_user(user):
        flask_login_user(user, False)  # sets "session['user_id']"

        # if a 'next' parameter is in the request, that will be redirected to instead of the default
        return redirect(get_post_login_redirect())