canglan
559970c5b7
feat: one account can bind both netease + skin identities
- db: user_identities table (UNIQUE user_id+source), migrate backfill from users
- auth: GET/POST/DELETE /api/auth/identities - bind/unbind/list identities
(netease requires UID, one per source, name uniqueness, keep >=1)
- register/external/plugin/admin-created users auto-write primary identity
- tickets: submit uses selected identity (validated belongs to user)
- dashboard: 我的身份 card with bind/unbind UI
- ticket-create: identity selector when >1 identity
2026-08-17 01:17:09 +08:00
..
2026-07-18 01:53:24 +08:00
2026-08-17 01:17:09 +08:00
2026-07-15 03:53:16 +08:00
2026-07-16 23:50:16 +08:00
2026-07-16 23:50:16 +08:00
2026-07-15 02:45:33 +08:00
2026-08-16 21:21:25 +08:00
2026-08-16 23:01:31 +08:00
2026-07-15 03:53:16 +08:00
2026-07-16 23:51:09 +08:00
2026-07-15 03:53:16 +08:00
2026-07-17 15:05:01 +08:00
2026-07-16 22:00:23 +08:00
2026-07-16 23:04:15 +08:00
2026-07-15 03:53:16 +08:00
2026-08-17 01:17:09 +08:00
2026-07-15 03:53:16 +08:00
2026-07-17 21:55:15 +08:00
2026-07-15 03:53:16 +08:00
2026-07-15 03:53:16 +08:00
2026-08-16 21:21:25 +08:00
2026-08-16 21:21:25 +08:00