diff --git a/gracedb/ligoauth/decorators.py b/gracedb/ligoauth/decorators.py new file mode 100644 index 0000000000000000000000000000000000000000..4767589c9fcff25ab22433371d156847360c1ca9 --- /dev/null +++ b/gracedb/ligoauth/decorators.py @@ -0,0 +1,27 @@ +from django.conf import settings +from django.contrib.auth import REDIRECT_FIELD_NAME +from django.contrib.auth.decorators import user_passes_test +from django.core.exceptions import PermissionDenied +import logging + +logger = logging.getLogger(__name__) + + +def group_required(group_name, login_url=None, raise_exception=False): + def check_groups(user): + in_group = user.groups.filter(name=group_name).exists() + if in_group: + return True + + if raise_exception: + raise PermissionDenied + return False + return user_passes_test(check_groups, login_url=login_url) + + +def internal_user_required(function=None, raise_exception=True, **kwargs): + actual_decorator = group_required(settings.LVC_GROUP, + raise_exception=raise_exception, **kwargs) + if function: + return actual_decorator(function) + return actual_decorator