Complete the login with GitHub functionality.

This commit is contained in:
yackob03 2014-01-15 13:55:57 -05:00
parent 55f95932a8
commit b6d4459080
3 changed files with 47 additions and 28 deletions

View file

@ -20,8 +20,9 @@ from endpoints.common import common_login
logger = logging.getLogger(__name__)
def render_page_template(name):
return make_response(render_template(name, route_data=get_route_data()))
def render_page_template(name, **kwargs):
return make_response(render_template(name, route_data=get_route_data(),
**kwargs))
@app.route('/', methods=['GET'], defaults={'path': ''})
@ -184,6 +185,10 @@ def get_github_user(token):
@app.route('/oauth2/github/callback', methods=['GET'])
def github_oauth_callback():
error = request.args.get('error', None)
if error:
return render_page_template('githuberror.html', error_message=error)
token = exchange_github_code_for_token(request.args.get('code'))
user_data = get_github_user(token)
@ -193,6 +198,10 @@ def github_oauth_callback():
v3_media_type = {
'Accept': 'application/vnd.github.v3'
}
token_param = {
'access_token': token,
}
get_email = requests.get(app.config['GITHUB_USER_EMAILS'],
params=token_param, headers=v3_media_type)
@ -235,6 +244,7 @@ def github_oauth_attach():
github_id = user_data['id']
user_obj = current_user.db_user()
model.attach_federated_login(user_obj, 'github', github_id)
return redirect(url_for('user'))
@app.route('/confirm', methods=['GET'])