Fixed issues logging in.
The API call to /api/bcloud/update-subscription is now performed via the SDK, to ensure proper authentication. Also streamlined some other code.
This commit is contained in:
@@ -102,12 +102,12 @@ def update_subscription():
|
|||||||
|
|
||||||
if grant_subscriber != is_subscriber:
|
if grant_subscriber != is_subscriber:
|
||||||
action = 'grant' if grant_subscriber else 'revoke'
|
action = 'grant' if grant_subscriber else 'revoke'
|
||||||
log.info('%sing subscriber role to user %s', action, user_id)
|
log.info('%sing subscriber role to user %s (Blender ID email %s)', action, user_id, email)
|
||||||
service.do_badger(action, 'subscriber', user_id=user_id)
|
service.do_badger(action, 'subscriber', user_id=user_id)
|
||||||
|
|
||||||
if grant_demo != is_demo:
|
if grant_demo != is_demo:
|
||||||
action = 'grant' if grant_demo else 'revoke'
|
action = 'grant' if grant_demo else 'revoke'
|
||||||
log.info('%sing demo role to user %s', action, user_id)
|
log.info('%sing demo role to user %s (Blender ID email %s)', action, user_id, email)
|
||||||
service.do_badger(action, 'demo', user_id=user_id)
|
service.do_badger(action, 'demo', user_id=user_id)
|
||||||
|
|
||||||
return '', 204
|
return '', 204
|
||||||
|
@@ -87,7 +87,17 @@ def login_user(oauth_token):
|
|||||||
|
|
||||||
def get_blender_id_oauth_token():
|
def get_blender_id_oauth_token():
|
||||||
"""Returns a tuple (token, ''), for use with flask_oauthlib."""
|
"""Returns a tuple (token, ''), for use with flask_oauthlib."""
|
||||||
return session.get('blender_id_oauth_token')
|
|
||||||
|
from flask import request
|
||||||
|
|
||||||
|
token = session.get('blender_id_oauth_token')
|
||||||
|
if token:
|
||||||
|
return token
|
||||||
|
|
||||||
|
if request.authorization:
|
||||||
|
return request.authorization.username, ''
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def config_oauth_login(app):
|
def config_oauth_login(app):
|
||||||
|
@@ -44,11 +44,11 @@ def login():
|
|||||||
|
|
||||||
@blueprint.route('/oauth/blender-id/authorized')
|
@blueprint.route('/oauth/blender-id/authorized')
|
||||||
def blender_id_authorized():
|
def blender_id_authorized():
|
||||||
from pillar.api.blender_cloud import subscription
|
|
||||||
|
|
||||||
check_oauth_provider(current_app.oauth_blender_id)
|
check_oauth_provider(current_app.oauth_blender_id)
|
||||||
try:
|
try:
|
||||||
oauth_resp = current_app.oauth_blender_id.authorized_response()
|
oauth_resp = current_app.oauth_blender_id.authorized_response()
|
||||||
|
if isinstance(oauth_resp, OAuthException):
|
||||||
|
raise oauth_resp
|
||||||
except OAuthException as ex:
|
except OAuthException as ex:
|
||||||
log.warning('Error parsing BlenderID OAuth response. data=%s; message=%s',
|
log.warning('Error parsing BlenderID OAuth response. data=%s; message=%s',
|
||||||
ex.data, ex.message)
|
ex.data, ex.message)
|
||||||
@@ -60,9 +60,6 @@ def blender_id_authorized():
|
|||||||
log.warning('Access denied to user because oauth_resp=None: %s', msg)
|
log.warning('Access denied to user because oauth_resp=None: %s', msg)
|
||||||
return wz_exceptions.Forbidden(msg)
|
return wz_exceptions.Forbidden(msg)
|
||||||
|
|
||||||
if isinstance(oauth_resp, OAuthException):
|
|
||||||
return 'Access denied: %s' % oauth_resp.message
|
|
||||||
|
|
||||||
session['blender_id_oauth_token'] = (oauth_resp['access_token'], '')
|
session['blender_id_oauth_token'] = (oauth_resp['access_token'], '')
|
||||||
|
|
||||||
pillar.auth.login_user(oauth_resp['access_token'])
|
pillar.auth.login_user(oauth_resp['access_token'])
|
||||||
@@ -70,7 +67,8 @@ def blender_id_authorized():
|
|||||||
if current_user is not None:
|
if current_user is not None:
|
||||||
# Check with the store for user roles. If the user has an active
|
# Check with the store for user roles. If the user has an active
|
||||||
# subscription, we apply the 'subscriber' role
|
# subscription, we apply the 'subscriber' role
|
||||||
subscription.update_subscription()
|
api = system_util.pillar_api(token=oauth_resp['access_token'])
|
||||||
|
api.get('bcloud/update-subscription')
|
||||||
|
|
||||||
next_after_login = session.get('next_after_login')
|
next_after_login = session.get('next_after_login')
|
||||||
if next_after_login:
|
if next_after_login:
|
||||||
|
Reference in New Issue
Block a user