def list_teams_by_user_id(self, eid, user_id, query=None, page=None, page_size=None): tenants = team_repo.list_by_user_id(eid, user_id, query, page, page_size) total = team_repo.count_by_user_id(eid, user_id, query) for tenant in tenants: # 获取一个用户在一个团队中的身份列表 perms_identitys = team_services.get_user_perm_identitys_in_permtenant( user_id=user_id, tenant_name=tenant["tenant_id"]) # 获取一个用户在一个团队中的角色ID列表 perms_role_list = team_services.get_user_perm_role_id_in_permtenant( user_id=user_id, tenant_name=tenant["tenant_id"]) role_infos = [] for identity in perms_identitys: if identity == "access": role_infos.append({"role_name": identity, "role_id": None}) else: role_id = role_repo.get_role_id_by_role_name(identity) role_infos.append({ "role_name": identity, "role_id": role_id }) for role in perms_role_list: role_name = role_repo.get_role_name_by_role_id(role) role_infos.append({"role_name": role_name, "role_id": role}) tenant["role_infos"] = role_infos return tenants, total
def list_users_by_tenant_id(self, tenant_id, page=None, size=None, query=""): result = user_repo.list_users_by_tenant_id(tenant_id, query=query, page=page, size=size) users = [] for item in result: # 获取一个用户在一个团队中的身份列表 perms_identitys = team_services.get_user_perm_identitys_in_permtenant( user_id=item.get("user_id"), tenant_name=tenant_id) # 获取一个用户在一个团队中的角色ID列表 perms_role_list = team_services.get_user_perm_role_id_in_permtenant( user_id=item.get("user_id"), tenant_name=tenant_id) role_infos = [] for identity in perms_identitys: if identity == "access": role_infos.append({"role_name": identity, "role_id": None}) else: role_id = role_repo.get_role_id_by_role_name(identity) role_infos.append({"role_name": identity, "role_id": role_id}) for role in perms_role_list: role_name = role_repo.get_role_name_by_role_id(role) role_infos.append({"role_name": role_name, "role_id": role}) users.append({ "user_id": item.get("user_id"), "nick_name": item.get("nick_name"), "email": item.get("email"), "phone": item.get("phone"), "is_active": item.get("is_active"), "enterprise_id": item.get("enterprise_id"), "role_infos": role_infos, }) total = user_repo.count_users_by_tenant_id(tenant_id, query=query) return users, total
def add_user_service_perm(self, current_user, user_list, tenant, service, perm_list): """添加用户在一个应用中的权限""" if current_user.user_id in user_list: return 409, u"不能给自己添加应用权限", None for user_id in user_list: user = user_repo.get_user_by_user_id(user_id) if not user: return 404, "用户{0}不存在".format(user_id), None service_perm = service_perm_repo.get_service_perm_by_user_pk_service_pk( service_pk=service.ID, user_pk=user_id) if service_perm: return 409, "用户{0}已有权限,无需添加".format(user.nick_name), None service_perm_repo.add_user_service_perm(user_ids=user_list, service_pk=service.ID, perm_ids=perm_list) enterprise = None try: enterprise = enterprise_repo.get_enterprise_by_enterprise_id( tenant.enterprise_id) except Exception as e: logger.exception(e) pass for user_id in user_list: perm_tenant = perms_repo.get_user_tenant_perm(tenant.ID, user_id) if not perm_tenant: perm_info = { "user_id": user_id, "tenant_id": tenant.ID, "role_id": role_repo.get_role_id_by_role_name("viewer"), "enterprise_id": enterprise.ID if enterprise else 0 } perm_tenant = perms_repo.add_user_tenant_perm(perm_info) return 200, "添加用户应用权限成功", None
def get(self, request, team_name, *args, **kwargs): """ 获取某团队下的所有用户(每页展示八个用户) --- parameters: - name: team_name description: 团队名称 required: true type: string paramType: path - name: page description: 页数 required: true type: string paramType: query """ try: code = 200 page = request.GET.get("page", 1) # 获得租户/团队 对象 user_list = team_services.get_tenant_users_by_tenant_name(tenant_name=team_name) users_list = list() for user in user_list: # 获取一个用户在一个团队中的身份列表 perms_identitys_list = team_services.get_user_perm_identitys_in_permtenant(user_id=user.user_id, tenant_name=team_name) # 获取一个用户在一个团队中的角色ID列表 perms_role_list = team_services.get_user_perm_role_id_in_permtenant(user_id=user.user_id, tenant_name=team_name) role_info_list = [] for identity in perms_identitys_list: if identity == "access": role_info_list.append({"role_name": identity, "role_id": None}) else: role_id = role_repo.get_role_id_by_role_name(identity) role_info_list.append({"role_name": identity, "role_id": role_id}) for role in perms_role_list: role_name = role_repo.get_role_name_by_role_id(role) role_info_list.append({"role_name": role_name, "role_id": role}) users_list.append( { "user_id": user.user_id, "user_name": user.nick_name, "email": user.email, "role_info": role_info_list } ) paginator = Paginator(users_list, 8) try: users = paginator.page(page).object_list except PageNotAnInteger: users = paginator.page(1).object_list except EmptyPage: users = paginator.page(paginator.num_pages).object_list result = general_message(code, "team members query success", "查询成功", list=users, total=paginator.count) except UserNotExistError as e: code = 400 logger.exception(e) result = general_message(code, "user not exist", e.message) except TenantNotExistError as e: code = 400 logger.exception(e) result = general_message(code, "tenant not exist", "{}团队不存在".format(team_name)) except Exception as e: code = 500 logger.exception(e) result = general_message(code, "system error", "系统异常") return Response(data=result, status=code)