公共 API 参考(@saas/contracts + @core/saas-kit + apps/api 对外接口)
    Preparing search index...

    OAuth2 授权端点(本仓充当 Odoo 的 OIDC OP·oauth-sso-odoo-integration 切片 C)。

    GET /api/v1/oauth2/authorize(隐式流·Odoo auth_oauth 只发 response_type=token)。 落 /oauth2/* 而非 /auth/*:BA 原生 HTTP 面经 AuthBootstrapService 以 Fastify 实例级 通配 app.all('/api/v1/auth/*') 挂载并绕开 Nest router/guard/validation 三层——SSO OP 是我方 Nest controller 面,置于 BA 前缀内会被通配抢路由,故隔离在 /oauth2/*(回改 plan 留痕·见 §7 v0.4.0)。 默认走全局 SessionGuard(deny-by-default·未登录 401),不标 @Public():授权须绑已认证会话。 标 @TenantIsolationExempt():SSO 是跨租户身份提供方(OP)面,已认证但合法无租户上下文—— 否则全局 TenantIsolationGuard(deny-by-default 租户墙)会对此面未绑活跃租者 403 死锁。 用 @Res() 直发 302,绕开全局 TransformInterceptor(重定向无 JSON 信封)。

    Index
    • 处理隐式流授权:校验 client/redirect 白名单后,铸超短 TTL 令牌并 302 回跳带 fragment。

      Parameters

      • query: {
            client_id: string;
            redirect_uri: string;
            response_type: "token";
            scope?: string;
            state?: string;
        }

        authorize 入参(经 zod 契约校验)。

      • req: SessionRequest

        请求(SessionGuard 已挂 sessionUser)。

      • reply: FastifyReply

        Fastify reply(直发 302)。

      Returns void

    • 返回已验令牌主体的 OIDC userinfo({ sub, email, name })。

      Parameters

      • authorization: string | undefined

        Authorization 头(Bearer <token>)。

      • reply: FastifyReply

        Fastify reply(直发裸 JSON)。

      Returns Promise<void>

      @Public() 旁路会话墙(Odoo 服务端携 Bearer 回源·无 BA cookie 会话);自带 Bearer 验签 + aud 强制校验。用 @Res().send(obj) 发裸 JSON(非本站 {data,...} 信封)——否则 Odoo auth_oauth 解析 sub/email 失败。错误(验签/aud/未验证)由服务抛异常→全局 filter 出错误信封。