24 lines
895 B
Python
24 lines
895 B
Python
from django.conf import settings
|
|
from rest_framework import permissions
|
|
from allauth.socialaccount import models
|
|
from fedeproxy.common.gitlab import GitLab
|
|
|
|
|
|
#
|
|
# The only justification for making this function instead of using the method is
|
|
# for testing purposes. It is really difficult to mock the IsFedeproxyGroupMember.has_permission
|
|
# because the contet in which IsFedeproxyGroupMember is instantiated is hard to predict.
|
|
#
|
|
def has_permission(request, view):
|
|
account = models.SocialAccount.objects.get(user=request.user)
|
|
social_token = models.SocialToken.objects.get(account=account)
|
|
gitlab = GitLab(settings.FEDEPROXY_GITLAB_URL)
|
|
gitlab.set_token(social_token.token)
|
|
return gitlab.is_self_member_of_group('fedeproxy')
|
|
|
|
|
|
class IsFedeproxyGroupMember(permissions.BasePermission):
|
|
|
|
def has_permission(self, request, view):
|
|
return has_permission(request, view)
|