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)
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)
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())
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)
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)
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)
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)
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)
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)
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'))
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)
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'))
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())