[feat] 支持一个账户绑定多个第三方登录渠道,避免单渠道异常封号后账号与仓库绑定一起锁死

Abierto
#24 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
18/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo

Línea de trabajo

The payload names no files, tests or entry points, so first find where an account is created from a single OAuth identity and where the repository binding is attached to it. This is a design change: decide the account-to-identity model before writing code. Done means a second login provider can sign into the same account and see the same repository binding, and removing the last remaining provider is refused.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

问题

当前 AstrBot Cloud 的账户与第三方登录渠道(GitHub / Google / 邮箱等 OAuth 身份)是 1:1 关系:账户本身几乎就是由这个渠道身份标识出来的,仓库绑定也挂在同一条链路上。

这带来一个不可恢复的失效路径:

  1. 用户用渠道 A 登录并绑定了插件仓库 R;
  2. 渠道 A 的第三方账号被封禁 / 被删除 / OAuth 授权被撤销 / 该邮箱不可用;
  3. 用户再也无法登录 AstrBot Cloud —— 因为系统只认渠道 A;
  4. 于是连"进入后台把仓库 R 换绑到渠道 B"这个自救动作也做不到;
  5. 最终只能走人工,而人工换绑又缺少可信的身份校验手段,风险很高。

也就是说:第三方渠道的一次封号,会直接等价于 AstrBot Cloud 账户的永久丢失,并且连带丢掉仓库绑定与插件发布能力。 这不是罕见边界情况——封号、账号被盗后申诉失败、公司/组织账号变更都是真实高频场景。

期望行为

核心诉求:把"账户"和"登录方式"解耦,账户是唯一主体,渠道只是登录入口(1:N)。

  • 一个 AstrBot Cloud 账户可以绑定 多个 渠道身份;
  • 任意一个已绑定渠道都可以登录到 同一个 账户,进入的是同一套数据、同一套仓库绑定;
  • 某个渠道失效(封号/撤销)后,用户仍可用其余渠道正常登录,并在登录状态下把当前绑定的仓库更换为另一个可用仓库;
  • 反过来,用户也可以在登录状态下主动解绑不再使用的渠道;
  • 关键保护:账户不允许解绑到 0 个渠道,避免账户变成无法登录的孤儿。
Lenguaje dominante
Sin datos de lenguaje
Estrellas
6
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de AstrBotDevs/astrbot-cloud-issues

Todos los issues de AstrBotDevs/astrbot-cloud-issues

Issues similares

Más issues de Security

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.