add github support, fix redirect on oauth
This commit is contained in:
parent
4fede50136
commit
4375db4f8c
|
@ -17,6 +17,16 @@ providers = {
|
||||||
authorize_url='https://api.twitter.com/oauth/authenticate',
|
authorize_url='https://api.twitter.com/oauth/authenticate',
|
||||||
access_token_method='GET'),
|
access_token_method='GET'),
|
||||||
'button': '<a href="/login/oauth/twitter" class="btn btn-default"><i class="fa fa-twitter"></i> Twitter</a>'
|
'button': '<a href="/login/oauth/twitter" class="btn btn-default"><i class="fa fa-twitter"></i> Twitter</a>'
|
||||||
|
},
|
||||||
|
'github': {
|
||||||
|
'oauth': dict(
|
||||||
|
request_token_params={'scope': 'user:email'},
|
||||||
|
base_url='https://api.github.com/',
|
||||||
|
request_token_url=None,
|
||||||
|
access_token_method='POST',
|
||||||
|
access_token_url='https://github.com/login/oauth/access_token',
|
||||||
|
authorize_url='https://github.com/login/oauth/authorize'),
|
||||||
|
'button': '<a href="/login/oauth/github" class="btn btn-default"><i class="fa fa-github"></i> Github</a>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,19 +68,19 @@ class User(BaseUser):
|
||||||
if oauth.remote_apps.get(provider):
|
if oauth.remote_apps.get(provider):
|
||||||
return oauth.remote_apps.get(provider)
|
return oauth.remote_apps.get(provider)
|
||||||
return oauth.remote_app(
|
return oauth.remote_app(
|
||||||
provider,
|
provider,
|
||||||
consumer_key=config.OAUTH.get(provider, {}).get('key'),
|
consumer_key=config.OAUTH.get(provider, {}).get('key'),
|
||||||
consumer_secret=config.OAUTH.get(provider, {}).get(
|
consumer_secret=config.OAUTH.get(provider, {}).get(
|
||||||
'secret'),
|
'secret'),
|
||||||
**providers[provider]['oauth'])
|
**providers[provider]['oauth'])
|
||||||
|
|
||||||
def get_id(self):
|
def get_id(self):
|
||||||
return unicode("%s/%s/%s" % (self.type, self.provider, self.id))
|
return unicode("%s/%s/%s" % (self.type, self.provider, self.id))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def login_form():
|
def login_form():
|
||||||
buttons = ''
|
buttons = []
|
||||||
for k, v in providers.items():
|
for k, v in providers.items():
|
||||||
buttons += v.get('button')
|
buttons.append(v.get('button'))
|
||||||
|
|
||||||
return buttons
|
return " ".join(buttons)
|
||||||
|
|
|
@ -16,7 +16,7 @@ def login(provider):
|
||||||
|
|
||||||
@blueprint.route('/login/oauth/<provider>/callback')
|
@blueprint.route('/login/oauth/<provider>/callback')
|
||||||
def callback(provider):
|
def callback(provider):
|
||||||
next_url = request.args.get('next') or current_app.config['ROOT_ENDPOINT']
|
next_url = request.args.get('next') or url_for(current_app.config['ROOT_ENDPOINT'])
|
||||||
try:
|
try:
|
||||||
resp = User.get_app(provider).authorized_response()
|
resp = User.get_app(provider).authorized_response()
|
||||||
if resp is None:
|
if resp is None:
|
||||||
|
|
Loading…
Reference in a new issue