in django_airavata/apps/auth/middleware.py [0:0]
def gateway_groups_middleware(get_response):
"""Add 'is_gateway_admin' and 'is_read_only_gateway_admin' to request."""
def middleware(request):
request.is_gateway_admin = False
request.is_read_only_gateway_admin = False
if (not request.user.is_authenticated or
not request.authz_token or
(hasattr(request.user, "user_profile") and
not request.user.user_profile.is_complete)):
return get_response(request)
try:
# Load the GatewayGroups and check if user is in the Admins and/or
# Read Only Admins groups
if not request.session.get('GATEWAY_GROUPS'):
gateway_groups = request.airavata_client.getGatewayGroups(
request.authz_token)
gateway_groups_dict = copy.deepcopy(gateway_groups.__dict__)
request.session['GATEWAY_GROUPS'] = gateway_groups_dict
set_admin_group_attributes(request, gateway_groups=request.session.get("GATEWAY_GROUPS"))
# Gateway Admins are made 'superuser' in Django so they can edit
# pages in the CMS
if request.is_gateway_admin and (
not request.user.is_superuser or
not request.user.is_staff):
request.user.is_superuser = True
request.user.is_staff = True
request.user.save()
except Exception as e:
log.warning("Failed to set is_gateway_admin, "
"is_read_only_gateway_admin for user", exc_info=e)
return get_response(request)
return middleware