From e5baa5012d4754092791eb1bce905e41f6dcbee1 Mon Sep 17 00:00:00 2001 From: pycook Date: Tue, 19 Nov 2019 21:41:46 +0800 Subject: [PATCH] acl: resource type api --- api/lib/perm/acl/user.py | 6 +++--- api/views/acl/resources.py | 43 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/api/lib/perm/acl/user.py b/api/lib/perm/acl/user.py index 178502c..fd152db 100644 --- a/api/lib/perm/acl/user.py +++ b/api/lib/perm/acl/user.py @@ -43,10 +43,10 @@ class UserCRUD(object): return User.create(**kwargs) @staticmethod - def update(rid, **kwargs): - user = User.get_by_id(rid) or abort(404, "User <{0}> does not exist".format(rid)) + def update(uid, **kwargs): + user = User.get_by_id(uid) or abort(404, "User <{0}> does not exist".format(uid)) - UserCache.clean(rid) + UserCache.clean(uid) return user.update(**kwargs) diff --git a/api/views/acl/resources.py b/api/views/acl/resources.py index 94241cf..72876a5 100644 --- a/api/views/acl/resources.py +++ b/api/views/acl/resources.py @@ -6,12 +6,55 @@ from api.lib.decorator import args_required from api.lib.perm.acl import validate_app from api.lib.perm.acl.resource import ResourceCRUD from api.lib.perm.acl.resource import ResourceGroupCRUD +from api.lib.perm.acl.resource import ResourceTypeCRUD from api.lib.utils import get_page from api.lib.utils import get_page_size from api.lib.utils import handle_arg_list from api.resource import APIView +class ResourceTypeView(APIView): + url_prefix = ("/resource_types", "/resource_types/") + + @args_required('app_id') + @validate_app + def get(self): + page = get_page(request.values.get("page", 1)) + page_size = get_page_size(request.values.get("page_size")) + q = request.values.get('q') + app_id = request.values.get('app_id') + + numfound, res = ResourceTypeCRUD.search(q, app_id, page, page_size) + + return self.jsonify(numfound=numfound, + page=page, + page_size=page_size, + groups=[i.to_dict() for i in res]) + + @args_required('name') + @args_required('app_id') + @args_required('perms') + @validate_app + def post(self): + name = request.values.get('name') + app_id = request.values.get('app_id') + perms = request.values.get('perms') + + rt = ResourceTypeCRUD.add(name, app_id, perms) + + return self.jsonify(rt.to_dict()) + + def put(self, type_id): + rt = ResourceTypeCRUD.update(type_id, **request.values) + + return self.jsonify(rt.to_dict()) + + def delete(self, type_id): + ResourceTypeCRUD.delete(type_id) + + return self.jsonify(type_id=type_id) + + class ResourceView(APIView): url_prefix = ("/resources", "/resources/")