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

Aperta
#24 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
18/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

问题

当前 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 个渠道,避免账户变成无法登录的孤儿。
Lingua principale
Nessun dato sulla lingua
Stelle
6
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AstrBotDevs/astrbot-cloud-issues

Tutte le issue di AstrBotDevs/astrbot-cloud-issues

Issue simili

Altre issue su Security

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.