mirror of
https://github.com/netbox-community/netbox.git
synced 2026-02-05 14:56:24 -06:00
Introduce IPNetworkSerializer to serialize allowed token IPs
This commit is contained in:
@@ -2,7 +2,7 @@ from django.contrib.auth.models import Group, User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from rest_framework import serializers
|
||||
|
||||
from netbox.api import ContentTypeField, SerializedPKRelatedField, ValidatedModelSerializer
|
||||
from netbox.api import ContentTypeField, IPNetworkSerializer, SerializedPKRelatedField, ValidatedModelSerializer
|
||||
from users.models import ObjectPermission, Token
|
||||
from .nested_serializers import *
|
||||
|
||||
@@ -64,6 +64,7 @@ class TokenSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:token-detail')
|
||||
key = serializers.CharField(min_length=40, max_length=40, allow_blank=True, required=False)
|
||||
user = NestedUserSerializer()
|
||||
allowed_ips = serializers.ListField(child=IPNetworkSerializer())
|
||||
|
||||
class Meta:
|
||||
model = Token
|
||||
|
||||
@@ -4,12 +4,12 @@ import os
|
||||
from django.contrib.auth.models import Group, User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.postgres.fields import ArrayField
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import MinLengthValidator
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from django.utils import timezone
|
||||
from netaddr import IPNetwork
|
||||
|
||||
from ipam.fields import IPNetworkField
|
||||
from netbox.config import get_config
|
||||
@@ -17,8 +17,6 @@ from utilities.querysets import RestrictedQuerySet
|
||||
from utilities.utils import flatten_dict
|
||||
from .constants import *
|
||||
|
||||
import ipaddress
|
||||
|
||||
__all__ = (
|
||||
'ObjectPermission',
|
||||
'Token',
|
||||
@@ -259,7 +257,7 @@ class Token(models.Model):
|
||||
return True
|
||||
|
||||
for ip_network in self.allowed_ips:
|
||||
if client_ip in ipaddress.ip_network(ip_network):
|
||||
if client_ip in IPNetwork(ip_network):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user