first pass, non-working

This commit is contained in:
Matthew Scragg 2015-10-13 22:52:30 -05:00
parent 459a9c2c59
commit 3c2f4a0445
17 changed files with 295 additions and 121 deletions

View file

View file

@ -0,0 +1,36 @@
from flask import render_template
from flask_oauthlib.client import OAuth
from realms import config
from ..models import BaseUser
oauth = OAuth()
class OAuthUser(BaseUser):
# OAuth remote app
app = None
class TwitterUser(OAuthUser):
app = oauth.remote_app(
'twitter',
base_url='https://api.twitter.com/1/',
request_token_url='https://api.twitter.com/oauth/request_token',
access_token_url='https://api.twitter.com/oauth/access_token',
authorize_url='https://api.twitter.com/oauth/authenticate',
consumer_key=config.TWITTER_KEY,
consumer_secret=config.TWITTER_SECRET)
def __init__(self, id_, username, email=None):
self.id = id_
self.username = username
self.email = email
@staticmethod
def load_user(*args, **kwargs):
return TwitterUser(args[0])
@staticmethod
def login_form():
return render_template('auth/oauth/twitter.html')

View file

@ -0,0 +1,30 @@
from flask import Blueprint, url_for, request, flash, redirect
from .models import TwitterUser
blueprint = Blueprint('auth.oauth', __name__)
def oauth_failed(next_url):
flash(u'You denied the request to sign in.')
return redirect(next_url)
@blueprint.route("/login/twitter")
def login_twitter():
return TwitterUser.app.authorize(callback=url_for('twitter_callback',
next=request.args.get('next') or request.referrer or None))
@blueprint.route('/login/twitter/callback')
def twitter_callback():
next_url = request.args.get('next') or url_for('index')
resp = TwitterUser.app.authorized_response()
if resp is None:
return oauth_failed(next_url)
session['twitter_token'] = (
resp['oauth_token'],
resp['oauth_token_secret']
)
session['twitter_user'] = resp['screen_name']
flash('You were signed in as %s' % resp['screen_name'])
return redirect(next_url)