mirror of https://github.com/jumpserver/jumpserver
perf: 修改 acl assets name/address
parent
99e126f515
commit
48d2949404
|
@ -61,19 +61,18 @@ class LoginAssetACL(BaseACL, OrgModelMixin):
|
|||
@classmethod
|
||||
def filter_asset(cls, asset, queryset):
|
||||
queryset = queryset.filter(
|
||||
Q(assets__hostname_group__contains=asset.name) |
|
||||
Q(assets__hostname_group__contains='*')
|
||||
Q(assets__name_group__contains=asset.name) |
|
||||
Q(assets__name_group__contains='*')
|
||||
)
|
||||
ids = [q.id for q in queryset if contains_ip(asset.address, q.assets.get('ip_group', []))]
|
||||
ids = [
|
||||
q.id for q in queryset if contains_ip(asset.address, q.assets.get('address_group', []))
|
||||
]
|
||||
queryset = cls.objects.filter(id__in=ids)
|
||||
return queryset
|
||||
|
||||
@classmethod
|
||||
def filter_account(cls, account_username, queryset):
|
||||
queryset = queryset.filter(
|
||||
Q(accounts__name_group__contains=account_username) |
|
||||
Q(accounts__name_group__contains='*')
|
||||
).filter(
|
||||
Q(accounts__username_group__contains=account_username) |
|
||||
Q(accounts__username_group__contains='*')
|
||||
)
|
||||
|
|
|
@ -25,34 +25,28 @@ class LoginAssetACLUsersSerializer(serializers.Serializer):
|
|||
|
||||
|
||||
class LoginAssetACLAssestsSerializer(serializers.Serializer):
|
||||
ip_group_help_text = _(
|
||||
address_group_help_text = _(
|
||||
"Format for comma-delimited string, with * indicating a match all. "
|
||||
"Such as: "
|
||||
"192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64"
|
||||
" (Domain name support)"
|
||||
)
|
||||
|
||||
ip_group = serializers.ListField(
|
||||
default=["*"],
|
||||
child=serializers.CharField(max_length=1024),
|
||||
label=_("IP/Host"),
|
||||
help_text=ip_group_help_text,
|
||||
)
|
||||
hostname_group = serializers.ListField(
|
||||
default=["*"],
|
||||
child=serializers.CharField(max_length=128),
|
||||
label=_("Name"),
|
||||
help_text=common_help_text,
|
||||
)
|
||||
|
||||
|
||||
class LoginAssetACLAccountsSerializer(serializers.Serializer):
|
||||
name_group = serializers.ListField(
|
||||
default=["*"],
|
||||
child=serializers.CharField(max_length=128),
|
||||
label=_("Name"),
|
||||
help_text=common_help_text,
|
||||
)
|
||||
address_group = serializers.ListField(
|
||||
default=["*"],
|
||||
child=serializers.CharField(max_length=1024),
|
||||
label=_("IP/Host"),
|
||||
help_text=address_group_help_text,
|
||||
)
|
||||
|
||||
|
||||
class LoginAssetACLAccountsSerializer(serializers.Serializer):
|
||||
username_group = serializers.ListField(
|
||||
default=["*"],
|
||||
child=serializers.CharField(max_length=128),
|
||||
|
|
|
@ -37,9 +37,7 @@ class LoginAssetCheckSerializer(serializers.Serializer):
|
|||
|
||||
def validate_account_username(self, account_username):
|
||||
asset_id = self.initial_data.get('asset_id')
|
||||
account = Account.objects.filter(
|
||||
username=account_username, asset_id=asset_id
|
||||
).first()
|
||||
account = Account.objects.filter(username=account_username, asset_id=asset_id).first()
|
||||
if not account:
|
||||
error = 'Account username does not exist'
|
||||
raise serializers.ValidationError(error)
|
||||
|
|
Loading…
Reference in New Issue