From e9495945793b407b792c2b02cdb1dca147912a09 Mon Sep 17 00:00:00 2001 From: Wang Baoling Date: Tue, 3 Sep 2024 10:36:22 +0800 Subject: [PATCH] feat: add tenant api of create & delete user (#2204) ### What problem does this PR solve? _Briefly describe what this PR aims to solve. Include background context that will help reviewers understand the purpose of the PR._ ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- api/apps/tenant_app.py | 50 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/api/apps/tenant_app.py b/api/apps/tenant_app.py index 319907171..f1bf6c99e 100644 --- a/api/apps/tenant_app.py +++ b/api/apps/tenant_app.py @@ -13,11 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # + +from flask import request from flask_login import current_user, login_required -from api.utils.api_utils import server_error_response +from api.db import UserTenantRole, StatusEnum +from api.db.db_models import UserTenant from api.db.services.user_service import TenantService, UserTenantService -from api.utils.api_utils import get_json_result +from api.settings import RetCode + +from api.utils import get_uuid +from api.utils.api_utils import get_json_result, validate_request, server_error_response @manager.route("/list", methods=["GET"]) @@ -29,6 +35,7 @@ def tenant_list(): except Exception as e: return server_error_response(e) + @manager.route("//user/list", methods=["GET"]) @login_required def user_list(tenant_id): @@ -37,3 +44,42 @@ def user_list(tenant_id): return get_json_result(data=users) except Exception as e: return server_error_response(e) + + +@manager.route('//user', methods=['POST']) +@login_required +@validate_request("user_id") +def create(tenant_id): + user_id = request.json.get("user_id") + if not user_id: + return get_json_result( + data=False, retmsg='Lack of "USER ID"', retcode=RetCode.ARGUMENT_ERROR) + + try: + user_tenants = UserTenantService.query(user_id=user_id, tenant_id=tenant_id) + if user_tenants: + uuid = user_tenants[0].id + return get_json_result(data={"id": uuid}) + + uuid = get_uuid() + UserTenantService.save( + id = uuid, + user_id = user_id, + tenant_id = tenant_id, + role = UserTenantRole.NORMAL.value, + status = StatusEnum.VALID.value) + + return get_json_result(data={"id": uuid}) + except Exception as e: + return server_error_response(e) + + +@manager.route('//user/', methods=['DELETE']) +@login_required +def rm(tenant_id, user_id): + try: + UserTenantService.filter_delete([UserTenant.tenant_id == tenant_id, UserTenant.user_id == user_id]) + return get_json_result(data=True) + except Exception as e: + return server_error_response(e) + \ No newline at end of file