jumpserver/apps/perms/api/user_permission/mixin.py

53 lines
1.5 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
#
from rest_framework.request import Request
from common.permissions import IsOrgAdminOrAppUser, IsValidUser
2019-09-19 09:27:49 +00:00
from common.utils import lazyproperty
from users.models import User
from perms.models import UserGrantedMappingNode
class UserNodeGrantStatusDispatchMixin:
@staticmethod
2020-09-29 09:13:32 +00:00
def get_mapping_node_by_key(key, user):
return UserGrantedMappingNode.objects.get(key=key, user=user)
def dispatch_get_data(self, key, user):
status = UserGrantedMappingNode.get_node_granted_status(key, user)
if status == UserGrantedMappingNode.GRANTED_DIRECT:
return self.get_data_on_node_direct_granted(key)
elif status == UserGrantedMappingNode.GRANTED_INDIRECT:
return self.get_data_on_node_indirect_granted(key)
else:
return self.get_data_on_node_not_granted(key)
def get_data_on_node_direct_granted(self, key):
raise NotImplementedError
def get_data_on_node_indirect_granted(self, key):
raise NotImplementedError
def get_data_on_node_not_granted(self, key):
raise NotImplementedError
class ForAdminMixin:
permission_classes = (IsOrgAdminOrAppUser,)
kwargs: dict
2019-09-19 09:27:49 +00:00
@lazyproperty
def user(self):
user_id = self.kwargs.get('pk')
return User.objects.get(id=user_id)
class ForUserMixin:
permission_classes = (IsValidUser,)
request: Request
@lazyproperty
def user(self):
return self.request.user