Files
dify-plus/api/controllers/console/auth/register_extend.py
T
npc0-hue 17832f2424 fix: Dify 1.8.1问题修复
本次提交整合了多个功能改进和问题修复:

主要功能:
- 批量工作流处理功能完善,支持 Excel 上传和进度跟踪
- 管理中心反向代理和转发配置优化
- 用户同步添加互斥锁,防止并发问题
- 计费系统和额度显示优化
- AI 绘图功能扩展

前端改进:
- 文本生成应用显示修复
- 批量任务进度展示优化
- 按钮样式和 CSS 优化,禁止换行
- 多语言支持完善(新增印尼语等)
- 构建镜像逻辑优化
- 批量处理进度管理器实现

后端改进:
- Docker Compose 配置升级
- 队列任务和 Worker Pool 优化
- Admin API 初始化和验证逻辑改进
- 数据库迁移和初始化完善
- 静态变量处理优化
- URL 签名助手实现
- Celery 扩展优化
- 代码和导入包问题修复(idea 自动调整代码位置)

技术改进:
- 兼容性修复 (flask-restx, jschardet)
- 钉钉 Web API 版本更新
- 代码格式化和导入包问题修复
- 日志处理优化
- 工作流循环管理优化

Docker 相关:
- Nginx 配置更新
- 容器启动脚本优化
- 镜像构建流程改进
- docker-compose.dify-plus.yaml 大幅更新

管理后台:
- 工作流批量处理 API 实现
- 工作池初始化
- 批量工作流服务实现
- 转发扩展配置
- 用户服务扩展
2025-10-17 23:04:25 +08:00

82 lines
3.3 KiB
Python

import uuid
from datetime import UTC, datetime
import jwt
from flask import request
from flask_restx import Resource, reqparse
from configs import dify_config
from controllers.console import api
from extensions.ext_database import db
from libs.login import login_required
from models import Account
from models.account import AccountStatus
from models.account_money_extend import AccountMoneyExtend
from services.account_service import AccountService, TenantService
from services.account_service_extend import TenantExtendService
class AdminRegisterApi(Resource):
"""Resource for user login."""
@login_required
def post(self):
"""Authenticate user and login."""
parser = reqparse.RequestParser()
auth_header = request.headers.get("Authorization")
parser.add_argument("name", type=str, required=True, location="json")
parser.add_argument("nick", type=str, required=True, location="json")
parser.add_argument("email", type=str, required=True, location="json")
args = parser.parse_args()
auth_scheme, auth_token = auth_header.split(None, 1)
auth_scheme = auth_scheme.lower()
if auth_scheme == "bearer":
auth_header = auth_token
decoded_jwt = jwt.decode(
auth_header, dify_config.SECRET_KEY.encode(), algorithms=["HS256"], options={"verify_signature": False})
# 解析jwt
if not ("AuthorityId" in decoded_jwt.keys() and int(
decoded_jwt["AuthorityId"]) == int(dify_config.ADMIN_GROUP_ID)):
return {"error": "Unable to add a new backend super admin groups."}, 351
try:
if db.session.query(Account).filter_by(email=args.email).first() is not None:
return {"error": "User already exists"}, 352
except:
return {"error": "Can't find the relevant user email."}, 353
account = AccountService.create_account(
password=str(uuid.uuid4()).replace('-', ''),
interface_language="zh-Hans",
email=args.email,
name=args.name,
is_setup=True,
)
# extend begin:初始化用户额度数据
account_money_add = AccountMoneyExtend(
account_id=account.id,
used_quota=0,
total_quota=dify_config.ACCOUNT_TOTAL_QUOTA,
)
db.session.add(account_money_add)
# extend end:初始化用户额度数据
account.last_login_ip = ""
account.status = AccountStatus.ACTIVE.value
account.initialized_at = datetime.now(UTC).replace(tzinfo=None)
db.session.commit()
# -------------- 二开部分 Begin - 邀请进第一个工作区 --------------
tenant_extend_service = TenantExtendService
super_admin_id = tenant_extend_service.get_super_admin_id().id
super_admin_tenant_id = tenant_extend_service.get_super_admin_tenant_id().id
if super_admin_id and super_admin_tenant_id:
isCreate = TenantExtendService.create_default_tenant_member_if_not_exist(
super_admin_tenant_id, account.id
) # 创建默认空间和用户的关系
if isCreate:
TenantService.switch_tenant(account, super_admin_tenant_id)
return {"result": "success", "data": "ok"}
api.add_resource(AdminRegisterApi, "/admin_register_user")