feat(runtime-control): 注册流程改为通过AuthZ服务

注册现在通过AuthZ进行处理,而登录/运行时查找仍然使用deploy-control。
更新了API调用逻辑,将注册请求从直接调用deploy-control和instance-api
改为统一调用AuthZ服务。

- 修改了注册API路由(/api/runtime/register)以使用callAuthzService
- 更新README.md文档说明新的架构流程
- 添加AUTHZ_API_BASE_URL环境变量配置
- 更新注册页面描述信息
- 移除了不再使用的callDeployControl和callInstanceApi相关代码
This commit is contained in:
2026-03-16 11:07:08 +08:00
parent be30aa9465
commit df5e3d693c
16 changed files with 247 additions and 16 deletions

View File

@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from 'next/server';
import type { TokenResponse } from '@/types/auth';
import { HttpError, callDeployControl, callInstanceApi, normalizeTokenResponse } from '@/lib/runtime-control';
import { HttpError, callAuthzService } from '@/lib/runtime-control';
function errorStatus(error: unknown): number {
if (error instanceof HttpError) {
@ -32,23 +32,13 @@ export async function POST(request: NextRequest) {
return NextResponse.json({ detail: 'username and password are required' }, { status: 400 });
}
const routing = await callDeployControl<{
api_base_url?: string;
frontend_base_url?: string;
public_url?: string;
}>('/api/instances/register', {
const response = await callAuthzService<TokenResponse>('/portal/register', {
username,
email,
password,
});
const response = await callInstanceApi<TokenResponse>(routing.api_base_url || '', '/api/auth/register', {
username,
email,
password,
});
return NextResponse.json(normalizeTokenResponse(response, routing));
return NextResponse.json(response);
} catch (error) {
return NextResponse.json({ detail: errorDetail(error) }, { status: errorStatus(error) });
}