Skip to content

Commit

Permalink
支持网关配置开发者
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-smile committed Sep 25, 2023
1 parent 6e55ff2 commit 500c39f
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class GatewayCreateSLZ(serializers.ModelSerializer):
validators=[ReservedAPINameValidator()],
)
maintainers = serializers.ListField(child=serializers.CharField(), allow_empty=True)
developers = serializers.ListField(child=serializers.CharField(), allow_empty=True, default=list)
user_auth_type = serializers.ChoiceField(
choices=UserAuthTypeEnum.choices(),
default=settings.DEFAULT_USER_AUTH_TYPE,
Expand All @@ -53,6 +54,7 @@ class Meta:
"name",
"description",
"maintainers",
"developers",
"status",
"is_public",
"user_auth_type",
Expand Down Expand Up @@ -93,12 +95,14 @@ def create(self, validated_data):

class GatewayUpdateSLZ(serializers.ModelSerializer):
maintainers = serializers.ListField(child=serializers.CharField(), allow_empty=True)
developers = serializers.ListField(child=serializers.CharField(), allow_empty=True, default=list)

class Meta:
model = Gateway
fields = (
"description",
"maintainers",
"developers",
"is_public",
)
lookup_field = "id"
Expand All @@ -113,6 +117,7 @@ class Meta:

class GatewayDetailSLZ(serializers.ModelSerializer):
maintainers = serializers.ListField(child=serializers.CharField(), allow_empty=True)
developers = serializers.ListField(child=serializers.CharField(), allow_empty=True, default=list)
public_key = serializers.CharField(label="网关公钥", source="jwt.public_key")
user_auth_type = serializers.SerializerMethodField()
allow_update_api_auth = serializers.SerializerMethodField()
Expand All @@ -137,6 +142,7 @@ class Meta:
"description",
"description_en",
"maintainers",
"developers",
"status",
"is_public",
"hosting_type",
Expand Down
1 change: 1 addition & 0 deletions src/dashboard/apigateway/apigateway/conf/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,7 @@
"RESOURCE_WITH_MOCK_ENABLED": env.bool("FEATURE_FLAG_RESOURCE_WITH_MOCK_ENABLED", False),
"RESOURCE_DISABLE_STAGE_ENABLED": env.bool("FEATURE_FLAG_RESOURCE_DISABLE_STAGE_ENABLED", False),
"BACKEND_SERVICE_ENABLED": env.bool("FEATURE_FLAG_BACKEND_SERVICE_ENABLED", False),
"GATEWAY_DEVELOPERS_ENABLED": env.bool("FEATURE_FLAG_GATEWAY_DEVELOPERS_ENABLED", False),
}

# ==============================================================================
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.18 on 2023-09-25 08:48

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0031_alter_publishevent_unique_together'),
]

operations = [
migrations.AddField(
model_name='gateway',
name='_developers',
field=models.CharField(blank=True, db_column='developers', default='', max_length=1024, null=True),
),
]
11 changes: 11 additions & 0 deletions src/dashboard/apigateway/apigateway/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class Gateway(TimestampedModelMixin, OperatorModelMixin):
description_en = description_i18n.field("en")

_maintainers = models.CharField(db_column="maintainers", max_length=1024, default="")
_developers = models.CharField(db_column="developers", max_length=1024, blank=True, null=True, default="")

# status
status = models.IntegerField(choices=APIStatusEnum.choices())
Expand Down Expand Up @@ -108,6 +109,16 @@ def maintainers(self) -> List[str]:
def maintainers(self, data: List[str]):
self._maintainers = ";".join(data)

@property
def developers(self) -> List[str]:
if not self._developers:
return []
return self._developers.split(";")

@developers.setter
def developers(self, data: List[str]):
self._developers = ";".join(data)

def has_permission(self, username):
"""
用户是否有网关操作权限,只有网关维护者有权限,创建者仅作为标记,不具有权限
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ def setUpTestData(self):
"name": "test",
"description": "test",
"maintainers": ["admin", "guest"],
"developers": ["t1", "t2"],
"status": 1,
"is_public": True,
"user_auth_type": "ieod",
Expand All @@ -60,6 +61,7 @@ def setUpTestData(self):
"name": "test",
"description": "test",
"maintainers": ["admin", "guest"],
"developers": ["t1", "t2"],
"status": 1,
"is_public": True,
"hosting_type": 0,
Expand All @@ -83,6 +85,7 @@ def setUpTestData(self):
"name": "test",
"description": "test",
"maintainers": ["admin", "guest"],
"developers": [],
"status": 1,
"is_public": True,
"hosting_type": 1,
Expand Down Expand Up @@ -211,11 +214,13 @@ def test(self):
# ok
{
"maintainers": ["admin"],
"developers": ["foo"],
"description": "test",
"is_public": True,
"will_error": False,
"expected": {
"maintainers": ["admin"],
"developers": ["foo"],
"description": "test",
"is_public": True,
},
Expand All @@ -228,6 +233,7 @@ def test(self):
"will_error": False,
"expected": {
"maintainers": ["admin"],
"developers": [],
"description": "test",
"is_public": True,
},
Expand All @@ -241,6 +247,7 @@ def test(self):
"will_error": False,
"expected": {
"maintainers": ["admin"],
"developers": [],
"description": "test",
"is_public": True,
},
Expand Down Expand Up @@ -331,6 +338,7 @@ def test_to_representation(self, mocker):
"description": self.api.description,
"description_en": self.api.description_en,
"maintainers": self.api.maintainers,
"developers": self.api.developers,
"status": self.api.status,
"is_public": self.api.is_public,
"hosting_type": self.api.hosting_type,
Expand Down

0 comments on commit 500c39f

Please sign in to comment.