From 9ffb079c8f7368e29a43682b2e8afe5aa077c365 Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 9 Mar 2018 12:53:08 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?system=20user=20auth=20=E7=9A=84api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/system_user.py | 21 ++++++++++----------- apps/assets/serializers/system_user.py | 15 +++++++++++++++ apps/jumpserver/settings.py | 11 +++++++++-- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/apps/assets/api/system_user.py b/apps/assets/api/system_user.py index c34690076..dd92afad4 100644 --- a/apps/assets/api/system_user.py +++ b/apps/assets/api/system_user.py @@ -40,23 +40,22 @@ class SystemUserViewSet(BulkModelViewSet): permission_classes = (IsSuperUserOrAppUser,) -class SystemUserAuthInfoApi(generics.RetrieveAPIView): +class SystemUserAuthInfoApi(generics.RetrieveUpdateAPIView): """ Get system user auth info """ queryset = SystemUser.objects.all() permission_classes = (IsSuperUserOrAppUser,) + serializer_class = serializers.SystemUserAuthSerializer - def retrieve(self, request, *args, **kwargs): - system_user = self.get_object() - data = { - 'id': system_user.id, - 'name': system_user.name, - 'username': system_user.username, - 'password': system_user.password, - 'private_key': system_user.private_key, - } - return Response(data) + def update(self, request, *args, **kwargs): + password = request.data.pop("password", None) + private_key = request.data.pop("private_key", None) + instance = self.get_object() + + if password or private_key: + instance.set_auth(password=password, private_key=private_key) + return super().update(request, *args, **kwargs) class SystemUserPushApi(generics.RetrieveAPIView): diff --git a/apps/assets/serializers/system_user.py b/apps/assets/serializers/system_user.py index 794c841f2..38aad66ce 100644 --- a/apps/assets/serializers/system_user.py +++ b/apps/assets/serializers/system_user.py @@ -36,6 +36,21 @@ class SystemUserSerializer(serializers.ModelSerializer): return len(obj.assets) +class SystemUserAuthSerializer(serializers.ModelSerializer): + """ + 系统用户认证信息 + """ + password = serializers.CharField(max_length=1024) + private_key = serializers.CharField(max_length=4096) + + class Meta: + model = SystemUser + fields = [ + "id", "name", "username", "protocol", + "password", "private_key", + ] + + class AssetSystemUserSerializer(serializers.ModelSerializer): """ 查看授权的资产系统用户的数据结构,这个和AssetSerializer不同,字段少 diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index 04fe210b2..6fa15e1df 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -27,7 +27,14 @@ sys.path.append(PROJECT_DIR) try: from config import config as CONFIG except ImportError: - CONFIG = type('_', (), {'__getattr__': lambda arg1, arg2: None})() + msg = """ + + Error: No config file found. + + You can run `cp config_example.py config.py`, and edit it. + """ + raise ImportError(msg) + # CONFIG = type('_', (), {'__getattr__': lambda arg1, arg2: None})() # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ @@ -177,7 +184,7 @@ LOGGING = { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'formatter': 'main', - 'filename': os.path.join(CONFIG.LOG_DIR, 'jumpserver.log') + 'filename': os.path.join(PROJECT_DIR, 'logs', 'jumpserver.log') }, 'ansible_logs': { 'level': 'DEBUG',