mirror of https://github.com/jumpserver/jumpserver
[Update] 限制组织名称中使用的特殊字符
parent
2f2b0b28b3
commit
70713af95a
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_HELP_TEXT = _(
|
||||||
|
'Only Numbers、letters、 chinese and characters ( {} ) are allowed'
|
||||||
|
).format(" ".join(['.', '_', '@', '-']))
|
||||||
|
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_PATTERN = r"^[\._@\w-]+$"
|
||||||
|
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_ERROR_MSG = \
|
||||||
|
_("* The contains characters that are not allowed")
|
|
@ -7,6 +7,7 @@ from common.utils import get_logger
|
||||||
from orgs.mixins.forms import OrgModelForm
|
from orgs.mixins.forms import OrgModelForm
|
||||||
|
|
||||||
from ..models import Asset, Node
|
from ..models import Asset, Node
|
||||||
|
from ..const import GENERAL_LIMIT_SPECIAL_CHARACTERS_HELP_TEXT
|
||||||
|
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
@ -14,10 +15,6 @@ __all__ = [
|
||||||
'AssetCreateForm', 'AssetUpdateForm', 'AssetBulkUpdateForm', 'ProtocolForm',
|
'AssetCreateForm', 'AssetUpdateForm', 'AssetBulkUpdateForm', 'ProtocolForm',
|
||||||
]
|
]
|
||||||
|
|
||||||
HELP_TEXTS_ASSET_HOSTNAME = _(
|
|
||||||
'Only Numbers、letters、 chinese and characters ( {} ) are allowed'
|
|
||||||
).format(" ".join(['.', '_', '@']))
|
|
||||||
|
|
||||||
|
|
||||||
class ProtocolForm(forms.Form):
|
class ProtocolForm(forms.Form):
|
||||||
name = forms.ChoiceField(
|
name = forms.ChoiceField(
|
||||||
|
@ -72,7 +69,7 @@ class AssetCreateForm(OrgModelForm):
|
||||||
'nodes': _("Node"),
|
'nodes': _("Node"),
|
||||||
}
|
}
|
||||||
help_texts = {
|
help_texts = {
|
||||||
'hostname': HELP_TEXTS_ASSET_HOSTNAME,
|
'hostname': GENERAL_LIMIT_SPECIAL_CHARACTERS_HELP_TEXT,
|
||||||
'admin_user': _(
|
'admin_user': _(
|
||||||
'root or other NOPASSWD sudo privilege user existed in asset,'
|
'root or other NOPASSWD sudo privilege user existed in asset,'
|
||||||
'If asset is windows or other set any one, more see admin user left menu'
|
'If asset is windows or other set any one, more see admin user left menu'
|
||||||
|
@ -119,7 +116,7 @@ class AssetUpdateForm(OrgModelForm):
|
||||||
'nodes': _("Node"),
|
'nodes': _("Node"),
|
||||||
}
|
}
|
||||||
help_texts = {
|
help_texts = {
|
||||||
'hostname': HELP_TEXTS_ASSET_HOSTNAME,
|
'hostname': GENERAL_LIMIT_SPECIAL_CHARACTERS_HELP_TEXT,
|
||||||
'admin_user': _(
|
'admin_user': _(
|
||||||
'root or other NOPASSWD sudo privilege user existed in asset,'
|
'root or other NOPASSWD sudo privilege user existed in asset,'
|
||||||
'If asset is windows or other set any one, more see admin user left menu'
|
'If asset is windows or other set any one, more see admin user left menu'
|
||||||
|
|
|
@ -8,6 +8,10 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||||
from common.serializers import AdaptedBulkListSerializer
|
from common.serializers import AdaptedBulkListSerializer
|
||||||
from ..models import Asset, Node, Label
|
from ..models import Asset, Node, Label
|
||||||
|
from ..const import (
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_PATTERN,
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_ERROR_MSG
|
||||||
|
)
|
||||||
from .base import ConnectivitySerializer
|
from .base import ConnectivitySerializer
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
@ -94,10 +98,10 @@ class AssetSerializer(BulkOrgResourceModelSerializer):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def validate_hostname(hostname):
|
def validate_hostname(hostname):
|
||||||
pattern = r"^[\._@\w-]+$"
|
pattern = GENERAL_LIMIT_SPECIAL_CHARACTERS_PATTERN
|
||||||
res = re.match(pattern, hostname)
|
res = re.match(pattern, hostname)
|
||||||
if res is None:
|
if res is None:
|
||||||
msg = _("* The hostname contains characters that are not allowed")
|
msg = GENERAL_LIMIT_SPECIAL_CHARACTERS_ERROR_MSG
|
||||||
raise serializers.ValidationError(msg)
|
raise serializers.ValidationError(msg)
|
||||||
return hostname
|
return hostname
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
|
|
||||||
|
import re
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from users.models import User, UserGroup
|
from users.models import User, UserGroup
|
||||||
from assets.models import Asset, Domain, AdminUser, SystemUser, Label
|
from assets.models import Asset, Domain, AdminUser, SystemUser, Label
|
||||||
|
from assets.const import (
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_PATTERN,
|
||||||
|
GENERAL_LIMIT_SPECIAL_CHARACTERS_ERROR_MSG
|
||||||
|
)
|
||||||
from perms.models import AssetPermission
|
from perms.models import AssetPermission
|
||||||
from common.serializers import AdaptedBulkListSerializer
|
from common.serializers import AdaptedBulkListSerializer
|
||||||
from .utils import set_current_org, get_current_org
|
from .utils import set_current_org, get_current_org
|
||||||
|
@ -18,6 +22,15 @@ class OrgSerializer(ModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = ['created_by', 'date_created']
|
read_only_fields = ['created_by', 'date_created']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def validate_name(name):
|
||||||
|
pattern = GENERAL_LIMIT_SPECIAL_CHARACTERS_PATTERN
|
||||||
|
res = re.match(pattern, name)
|
||||||
|
if res is None:
|
||||||
|
msg = GENERAL_LIMIT_SPECIAL_CHARACTERS_ERROR_MSG
|
||||||
|
raise serializers.ValidationError(msg)
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
class OrgReadSerializer(ModelSerializer):
|
class OrgReadSerializer(ModelSerializer):
|
||||||
admins = serializers.SlugRelatedField(slug_field='name', many=True, read_only=True)
|
admins = serializers.SlugRelatedField(slug_field='name', many=True, read_only=True)
|
||||||
|
|
Loading…
Reference in New Issue