Complete the login with GitHub functionality.
This commit is contained in:
parent
55f95932a8
commit
b6d4459080
3 changed files with 47 additions and 28 deletions
|
@ -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'])
|
||||
|
|
Reference in a new issue