|
9 | 9 | import six |
10 | 10 | import tagulous |
11 | 11 | from django.conf import settings |
12 | | -from django.contrib.auth.models import Group, Permission |
| 12 | +from django.contrib.auth.models import Permission |
13 | 13 | from django.contrib.auth.password_validation import validate_password |
14 | 14 | from django.core.exceptions import PermissionDenied, ValidationError |
15 | 15 | from django.db import transaction |
|
27 | 27 | import dojo.risk_acceptance.helper as ra_helper |
28 | 28 | from dojo.authorization.authorization import user_has_permission |
29 | 29 | from dojo.authorization.models import ( |
30 | | - Dojo_Group_Member, |
31 | | - Global_Role, |
32 | | - Product_Group, |
33 | 30 | Product_Member, |
34 | | - Product_Type_Group, |
35 | 31 | Product_Type_Member, |
36 | | - Role, |
37 | 32 | ) |
38 | 33 | from dojo.celery_dispatch import dojo_dispatch_task |
39 | 34 | from dojo.endpoint.utils import endpoint_filter, endpoint_meta_import |
|
43 | 38 | save_vulnerability_ids_template, |
44 | 39 | ) |
45 | 40 | from dojo.finding.queries import get_authorized_findings |
46 | | -from dojo.group.utils import get_auth_group_name |
47 | 41 | from dojo.importers.auto_create_context import AutoCreateContextManager |
48 | 42 | from dojo.importers.base_importer import BaseImporter |
49 | 43 | from dojo.importers.default_importer import DefaultImporter |
|
66 | 60 | Cred_Mapping, |
67 | 61 | Cred_User, |
68 | 62 | Development_Environment, |
69 | | - Dojo_Group, |
70 | 63 | Dojo_User, |
71 | 64 | DojoMeta, |
72 | 65 | Endpoint, |
@@ -666,187 +659,6 @@ class Meta: |
666 | 659 | fields = ("id", "username", "first_name", "last_name") |
667 | 660 |
|
668 | 661 |
|
669 | | -class RoleSerializer(serializers.ModelSerializer): |
670 | | - class Meta: |
671 | | - model = Role |
672 | | - fields = "__all__" |
673 | | - |
674 | | - |
675 | | -class DojoGroupSerializer(serializers.ModelSerializer): |
676 | | - configuration_permissions = serializers.PrimaryKeyRelatedField( |
677 | | - allow_null=True, |
678 | | - queryset=Permission.objects.filter( |
679 | | - codename__in=get_configuration_permissions_codenames(), |
680 | | - ), |
681 | | - many=True, |
682 | | - required=False, |
683 | | - source="auth_group.permissions", |
684 | | - ) |
685 | | - |
686 | | - class Meta: |
687 | | - model = Dojo_Group |
688 | | - exclude = ("auth_group",) |
689 | | - |
690 | | - def to_representation(self, instance): |
691 | | - if not instance.auth_group: |
692 | | - auth_group = Group(name=get_auth_group_name(instance)) |
693 | | - auth_group.save() |
694 | | - instance.auth_group = auth_group |
695 | | - members = instance.users.all() |
696 | | - for member in members: |
697 | | - auth_group.user_set.add(member) |
698 | | - instance.save() |
699 | | - ret = super().to_representation(instance) |
700 | | - # This will show only "configuration_permissions" even if user has also |
701 | | - # other permissions |
702 | | - all_permissions = set(ret["configuration_permissions"]) |
703 | | - allowed_configuration_permissions = set( |
704 | | - self.fields[ |
705 | | - "configuration_permissions" |
706 | | - ].child_relation.queryset.values_list("id", flat=True), |
707 | | - ) |
708 | | - ret["configuration_permissions"] = list( |
709 | | - all_permissions.intersection(allowed_configuration_permissions), |
710 | | - ) |
711 | | - |
712 | | - return ret |
713 | | - |
714 | | - def create(self, validated_data): |
715 | | - new_configuration_permissions = None |
716 | | - if ( |
717 | | - "auth_group" in validated_data |
718 | | - and "permissions" in validated_data["auth_group"] |
719 | | - ): # This field was renamed from "configuration_permissions" in the meantime |
720 | | - new_configuration_permissions = set( |
721 | | - validated_data.pop("auth_group")["permissions"], |
722 | | - ) |
723 | | - |
724 | | - instance = super().create(validated_data) |
725 | | - |
726 | | - # This will update only Permissions from category |
727 | | - # "configuration_permissions". There are no other Permissions. |
728 | | - if new_configuration_permissions: |
729 | | - instance.auth_group.permissions.set(new_configuration_permissions) |
730 | | - |
731 | | - return instance |
732 | | - |
733 | | - def update(self, instance, validated_data): |
734 | | - permissions_in_payload = None |
735 | | - new_configuration_permissions = None |
736 | | - if ( |
737 | | - "auth_group" in validated_data |
738 | | - and "permissions" in validated_data["auth_group"] |
739 | | - ): # This field was renamed from "configuration_permissions" in the meantime |
740 | | - permissions_in_payload = validated_data.pop("auth_group")["permissions"] |
741 | | - new_configuration_permissions = set(permissions_in_payload) |
742 | | - |
743 | | - instance = super().update(instance, validated_data) |
744 | | - |
745 | | - # This will update only Permissions from category |
746 | | - # "configuration_permissions". Others will be untouched |
747 | | - if new_configuration_permissions: |
748 | | - allowed_configuration_permissions = set( |
749 | | - self.fields[ |
750 | | - "configuration_permissions" |
751 | | - ].child_relation.queryset.all(), |
752 | | - ) |
753 | | - non_configuration_permissions = ( |
754 | | - set(instance.auth_group.permissions.all()) |
755 | | - - allowed_configuration_permissions |
756 | | - ) |
757 | | - new_permissions = non_configuration_permissions.union( |
758 | | - new_configuration_permissions, |
759 | | - ) |
760 | | - instance.auth_group.permissions.set(new_permissions) |
761 | | - |
762 | | - # Clear all configuration permissions if an empty list is provided |
763 | | - if isinstance(permissions_in_payload, list) and len(permissions_in_payload) == 0: |
764 | | - instance.auth_group.permissions.clear() |
765 | | - |
766 | | - return instance |
767 | | - |
768 | | - |
769 | | -class DojoGroupMemberSerializer(serializers.ModelSerializer): |
770 | | - class Meta: |
771 | | - model = Dojo_Group_Member |
772 | | - fields = "__all__" |
773 | | - |
774 | | - def validate(self, data): |
775 | | - if ( |
776 | | - self.instance is not None |
777 | | - and data.get("group") != self.instance.group |
778 | | - and not user_has_permission( |
779 | | - self.context["request"].user, |
780 | | - data.get("group"), |
781 | | - "staff_only", |
782 | | - ) |
783 | | - ): |
784 | | - msg = "You are not permitted to add a user to this group" |
785 | | - raise PermissionDenied(msg) |
786 | | - |
787 | | - if ( |
788 | | - self.instance is None |
789 | | - or data.get("group") != self.instance.group |
790 | | - or data.get("user") != self.instance.user |
791 | | - ): |
792 | | - members = Dojo_Group_Member.objects.filter( |
793 | | - group=data.get("group"), user=data.get("user"), |
794 | | - ) |
795 | | - if members.count() > 0: |
796 | | - msg = "Dojo_Group_Member already exists" |
797 | | - raise ValidationError(msg) |
798 | | - |
799 | | - if self.instance is not None and not data.get("role").is_owner: |
800 | | - owners = ( |
801 | | - Dojo_Group_Member.objects.filter( |
802 | | - group=data.get("group"), role__is_owner=True, |
803 | | - ) |
804 | | - .exclude(id=self.instance.id) |
805 | | - .count() |
806 | | - ) |
807 | | - if owners < 1: |
808 | | - msg = "There must be at least one owner" |
809 | | - raise ValidationError(msg) |
810 | | - |
811 | | - if data.get("role").is_owner and not user_has_permission( |
812 | | - self.context["request"].user, |
813 | | - data.get("group"), |
814 | | - "staff_only", |
815 | | - ): |
816 | | - msg = "You are not permitted to add a user as Owner to this group" |
817 | | - raise PermissionDenied(msg) |
818 | | - |
819 | | - return data |
820 | | - |
821 | | - |
822 | | -class GlobalRoleSerializer(serializers.ModelSerializer): |
823 | | - class Meta: |
824 | | - model = Global_Role |
825 | | - fields = "__all__" |
826 | | - |
827 | | - def validate(self, data): |
828 | | - user = None |
829 | | - group = None |
830 | | - |
831 | | - if self.instance is not None: |
832 | | - user = self.instance.user |
833 | | - group = self.instance.group |
834 | | - |
835 | | - if "user" in data: |
836 | | - user = data.get("user") |
837 | | - if "group" in data: |
838 | | - group = data.get("group") |
839 | | - |
840 | | - if user is None and group is None: |
841 | | - msg = "Global_Role must have either user or group" |
842 | | - raise ValidationError(msg) |
843 | | - if user is not None and group is not None: |
844 | | - msg = "Global_Role cannot have both user and group" |
845 | | - raise ValidationError(msg) |
846 | | - |
847 | | - return data |
848 | | - |
849 | | - |
850 | 662 | class AddUserSerializer(serializers.ModelSerializer): |
851 | 663 | class Meta: |
852 | 664 | model = User |
@@ -966,47 +778,6 @@ def validate(self, data): |
966 | 778 | return data |
967 | 779 |
|
968 | 780 |
|
969 | | -class ProductGroupSerializer(serializers.ModelSerializer): |
970 | | - class Meta: |
971 | | - model = Product_Group |
972 | | - fields = "__all__" |
973 | | - |
974 | | - def validate(self, data): |
975 | | - if ( |
976 | | - self.instance is not None |
977 | | - and data.get("product") != self.instance.product |
978 | | - and not user_has_permission( |
979 | | - self.context["request"].user, |
980 | | - data.get("product"), |
981 | | - "add", |
982 | | - ) |
983 | | - ): |
984 | | - msg = "You are not permitted to add a group to this product" |
985 | | - raise PermissionDenied(msg) |
986 | | - |
987 | | - if ( |
988 | | - self.instance is None |
989 | | - or data.get("product") != self.instance.product |
990 | | - or data.get("group") != self.instance.group |
991 | | - ): |
992 | | - members = Product_Group.objects.filter( |
993 | | - product=data.get("product"), group=data.get("group"), |
994 | | - ) |
995 | | - if members.count() > 0: |
996 | | - msg = "Product_Group already exists" |
997 | | - raise ValidationError(msg) |
998 | | - |
999 | | - if data.get("role").is_owner and not user_has_permission( |
1000 | | - self.context["request"].user, |
1001 | | - data.get("product"), |
1002 | | - "staff_only", |
1003 | | - ): |
1004 | | - msg = "You are not permitted to add a group as Owner to this product" |
1005 | | - raise PermissionDenied(msg) |
1006 | | - |
1007 | | - return data |
1008 | | - |
1009 | | - |
1010 | 781 | class ProductTypeMemberSerializer(serializers.ModelSerializer): |
1011 | 782 | class Meta: |
1012 | 783 | model = Product_Type_Member |
@@ -1060,47 +831,6 @@ def validate(self, data): |
1060 | 831 | return data |
1061 | 832 |
|
1062 | 833 |
|
1063 | | -class ProductTypeGroupSerializer(serializers.ModelSerializer): |
1064 | | - class Meta: |
1065 | | - model = Product_Type_Group |
1066 | | - fields = "__all__" |
1067 | | - |
1068 | | - def validate(self, data): |
1069 | | - if ( |
1070 | | - self.instance is not None |
1071 | | - and data.get("product_type") != self.instance.product_type |
1072 | | - and not user_has_permission( |
1073 | | - self.context["request"].user, |
1074 | | - data.get("product_type"), |
1075 | | - "add", |
1076 | | - ) |
1077 | | - ): |
1078 | | - msg = "You are not permitted to add a group to this product type" |
1079 | | - raise PermissionDenied(msg) |
1080 | | - |
1081 | | - if ( |
1082 | | - self.instance is None |
1083 | | - or data.get("product_type") != self.instance.product_type |
1084 | | - or data.get("group") != self.instance.group |
1085 | | - ): |
1086 | | - members = Product_Type_Group.objects.filter( |
1087 | | - product_type=data.get("product_type"), group=data.get("group"), |
1088 | | - ) |
1089 | | - if members.count() > 0: |
1090 | | - msg = "Product_Type_Group already exists" |
1091 | | - raise ValidationError(msg) |
1092 | | - |
1093 | | - if data.get("role").is_owner and not user_has_permission( |
1094 | | - self.context["request"].user, |
1095 | | - data.get("product_type"), |
1096 | | - "staff_only", |
1097 | | - ): |
1098 | | - msg = "You are not permitted to add a group as Owner to this product type" |
1099 | | - raise PermissionDenied(msg) |
1100 | | - |
1101 | | - return data |
1102 | | - |
1103 | | - |
1104 | 834 | class ProductTypeSerializer(serializers.ModelSerializer): |
1105 | 835 | class Meta: |
1106 | 836 | model = Product_Type |
@@ -3089,8 +2819,6 @@ def validate(self, data): |
3089 | 2819 | class UserProfileSerializer(serializers.Serializer): |
3090 | 2820 | user = UserSerializer(many=False) |
3091 | 2821 | user_contact_info = UserContactInfoSerializer(many=False, required=False) |
3092 | | - global_role = GlobalRoleSerializer(many=False, required=False) |
3093 | | - dojo_group_member = DojoGroupMemberSerializer(many=True) |
3094 | 2822 | product_type_member = ProductTypeMemberSerializer(many=True) |
3095 | 2823 | product_member = ProductMemberSerializer(many=True) |
3096 | 2824 |
|
|
0 commit comments