def facebook_authorized(resp): next_url = session.get('next_url', url_for('ui')) if resp is None or 'access_token' not in resp: return redirect(next_url) session['facebook_token'] = (resp.get('access_token'), '') profile = PROVIDERS.get('facebook').get('/me').data data = { 'display_name': profile.get('name'), 'email': profile.get('email'), 'facebook_id': profile.get('id') } user = User.load(data) db.session.commit() login_user(user, remember=True) return redirect(next_url)
def twitter_authorized(resp): next_url = session.get('next_url', url_for('ui')) if resp is None or 'oauth_token' not in resp: return redirect(next_url) session['twitter_token'] = (resp['oauth_token'], resp['oauth_token_secret']) provider = PROVIDERS.get('twitter') res = provider.get('users/show.json?user_id=%s' % resp.get('user_id')) data = { 'display_name': res.data.get('name'), 'twitter_id': res.data.get('id') } user = User.load(data) db.session.commit() login_user(user, remember=True) return redirect(next_url)
def google_authorized(resp): next_url = session.get('next_url', url_for('ui')) if resp is None or 'access_token' not in resp: return redirect(next_url) session['google_token'] = (resp.get('access_token'), '') profile_url = 'https://www.googleapis.com/plus/v1/people/me' google = PROVIDERS.get('google') headers = {'Authorization': 'Bearer ' + google.get_request_token().key} profile = google.get(profile_url, headers=headers).data data = { 'display_name': profile.get('displayName'), 'email': profile.get('emails')[0]['value'], 'google_id': profile.get('id') } user = User.load(data) db.session.commit() login_user(user, remember=True) return redirect(next_url)
return redirect(request.args.get('next_url', url_for('ui'))) @blueprint.route('/api/1/sessions/login/<provider>') def login(provider): if provider not in PROVIDERS: raise BadRequest('Unknown provider: %s' % provider) if current_user.is_authenticated(): return redirect(url_for('ui')) session.clear() callback = url_for('.%s_authorized' % provider) session['next_url'] = request.args.get('next_url', url_for('ui')) return PROVIDERS[provider].authorize(callback=callback) handler = PROVIDERS.get('twitter') @blueprint.route('/api/1/sessions/callback/ooemail') def ooemail_authorized(): ''' This is a callback for when we are returning from the external auth provider. So, we use this to handle our sign-in ''' usr = User.by_email(request.args.get('email')) if usr is None: abort(403) ok = usr.check_pw(request.args.get('password')) if ok: login_user(usr) return 'oo email authorized'
return redirect(request.args.get('next_url', url_for('ui'))) @blueprint.route('/api/1/sessions/login/<provider>') def login(provider): if provider not in PROVIDERS: raise BadRequest('Unknown provider: %s' % provider) if current_user.is_authenticated(): return redirect(url_for('ui')) session.clear() callback = url_for('.%s_authorized' % provider) session['next_url'] = request.args.get('next_url', url_for('ui')) return PROVIDERS[provider].authorize(callback=callback) handler = PROVIDERS.get('twitter') @blueprint.route('/api/1/sessions/callback/twitter') @handler.authorized_handler def twitter_authorized(resp): next_url = session.get('next_url', url_for('ui')) if resp is None or 'oauth_token' not in resp: return redirect(next_url) session['twitter_token'] = (resp['oauth_token'], resp['oauth_token_secret']) provider = PROVIDERS.get('twitter') res = provider.get('users/show.json?user_id=%s' % resp.get('user_id')) data = { 'display_name': res.data.get('name'), 'twitter_id': res.data.get('id')
return redirect(request.args.get('next_url', url_for('ui'))) @blueprint.route('/api/1/sessions/login/<provider>') def login(provider): if provider not in PROVIDERS: raise BadRequest('Unknown provider: %s' % provider) if current_user.is_authenticated(): return redirect(url_for('ui')) session.clear() callback = url_for('.%s_authorized' % provider) session['next_url'] = request.args.get('next_url', url_for('ui')) return PROVIDERS[provider].authorize(callback=callback) handler = PROVIDERS.get('twitter') @blueprint.route('/api/1/sessions/callback/ooemail') def ooemail_authorized(): ''' This is a callback for when we are returning from the external auth provider. So, we use this to handle our sign-in ''' usr = User.by_email(request.args.get('email')) if usr is None: abort(403) ok = usr.check_pw(request.args.get('password')) if ok: login_user(usr)