From 88ca734892d72bb6d9f7288c283e6514548e2d30 Mon Sep 17 00:00:00 2001 From: Tanner Prestegard <tanner.prestegard@ligo.org> Date: Thu, 7 Feb 2019 14:31:41 -0600 Subject: [PATCH] Add permissions and settings for priority instance --- config/settings/container/production.py | 13 +++++++++++++ gracedb/api/permissions.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 gracedb/api/permissions.py diff --git a/config/settings/container/production.py b/config/settings/container/production.py index cfd596824..f1590079d 100644 --- a/config/settings/container/production.py +++ b/config/settings/container/production.py @@ -8,6 +8,19 @@ SEND_XMPP_ALERTS = True SEND_PHONE_ALERTS = True SEND_EMAIL_ALERTS = True +# Priority server? +PRIORITY_SERVER = False +is_priority_server = os.environ.get('DJANGO_PRIORITY_SERVER', None) +if (isinstance(is_priority_server, str) and + is_priority_server.lower() in ['true', 't']): + PRIORITY_SERVER = True + +# If priority server, add custom permissions for API +if PRIORITY_SERVER: + default_perms = list(REST_FRAMEWORK['DEFAULT_PERMISSION_CLASSES']) + default_perms = ['api.permissions.IsPriorityUser'] + default_perms + REST_FRAMEWORK['DEFAULT_PERMISSION_CLASSES'] = tuple(default_perms) + # Safety check on debug mode for production if (DEBUG == True): raise RuntimeError("Turn off debug mode for production") diff --git a/gracedb/api/permissions.py b/gracedb/api/permissions.py new file mode 100644 index 000000000..aa4bc1469 --- /dev/null +++ b/gracedb/api/permissions.py @@ -0,0 +1,17 @@ +import logging + +from django.conf import settings + +from rest_framework import permissions + +# Set up logger +logger = logging.getLogger(__name__) + + +class IsPriorityUser(permissions.BasePermission): + """Only allow users in the priority users group""" + message = 'You are not authorized to use this API.' + + def has_permission(self, request, view): + return request.user.groups.filter( + name=settings.PRIORITY_USERS_GROUP).exists() -- GitLab