Skip to content

Commit

Permalink
#13 DRF permissions base
Browse files Browse the repository at this point in the history
  • Loading branch information
barseghyanartur committed Jun 13, 2021
1 parent 5bb2373 commit 48c3084
Showing 1 changed file with 36 additions and 6 deletions.
42 changes: 36 additions & 6 deletions src/ska/contrib/django/ska/integration/drf/permissions/base.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from typing import Dict, Optional, Union
import logging

from django.db.models import Model
from rest_framework import permissions
from rest_framework.request import Request
from rest_framework.viewsets import GenericViewSet

from ....... import validate_signed_request_data
from .......defaults import (
Expand All @@ -12,6 +17,7 @@

from ....utils import get_provider_data


__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2013-2021 Artur Barseghyan"
__license__ = "GPL 2.0/LGPL 2.1"
Expand Down Expand Up @@ -49,10 +55,20 @@ def get_secret_key(self, request_data, request=None, view=None, obj=None):
"You should implement this method in your permission class"
)

def get_request_data(self, request, view, obj=None):
def get_request_data(
self,
request: Request,
view: GenericViewSet,
obj: Optional[Model] = None,
) -> Dict[str, Union[bytes, str, float, int]]:
return request.GET.dict()

def validate_signed_request(self, request, view, obj=None):
def validate_signed_request(
self,
request: Request,
view: GenericViewSet,
obj: Optional[Model] = None,
) -> bool:
"""Validate signed request.
:param request:
Expand Down Expand Up @@ -82,17 +98,25 @@ def validate_signed_request(self, request, view, obj=None):
LOGGER.debug(str(err))
return False

def has_permission(self, request, view):
def has_permission(self, request: Request, view: GenericViewSet) -> bool:
return self.validate_signed_request(request, view)

def has_object_permission(self, request, view, obj):
def has_object_permission(
self, request: Request, view: GenericViewSet, obj: Model
) -> bool:
return self.validate_signed_request(request, view, obj)


class BaseSignedRequestRequired(AbstractSignedRequestRequired):
"""Signed request required permission."""

def get_secret_key(self, request_data, request=None, view=None, obj=None):
def get_secret_key(
self,
request_data: Dict[str, str],
request: Optional[Request] = None,
view: Optional[GenericViewSet] = None,
obj: Optional[Model] = None,
) -> str:
"""Get secret key.
:param request_data:
Expand All @@ -110,7 +134,13 @@ def get_secret_key(self, request_data, request=None, view=None, obj=None):
class BaseProviderSignedRequestRequired(AbstractSignedRequestRequired):
"""Provider signed request required permission."""

def get_secret_key(self, request_data, request=None, view=None, obj=None):
def get_secret_key(
self,
request_data: Dict[str, str],
request: Optional[Request] = None,
view: Optional[GenericViewSet] = None,
obj: Optional[Model] = None,
) -> Optional[str]:
"""Get secret key.
:param request_data:
Expand Down

0 comments on commit 48c3084

Please sign in to comment.