|
|
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 |
|
|
|
7bc22dee0c
|
fix: add source field to dashboard ban form
|
2026-07-19 00:40:54 +08:00 |
|
|
|
2e09dd2d3a
|
fix: pass bans to renderContent, restore exports wrapper
|
2026-07-18 01:14:43 +08:00 |
|
|
|
2a12e7b740
|
fix: ban duration >= not >, auto-prefill min duration
|
2026-07-18 01:11:41 +08:00 |
|
|
|
5ed109ec0e
|
feat: ban list with dashboard widget, owner add/edit bans
|
2026-07-18 00:52:33 +08:00 |
|
|
|
021351d898
|
fix: restore from regex corruption, JS-bind modal close, data-action delegation
|
2026-07-15 03:53:16 +08:00 |
|
|
|
f0e891b17c
|
fix: data-action delegation + convert onclick to event listeners, sidebar+logout+modals
|
2026-07-15 02:44:18 +08:00 |
|
|
|
4e66db0406
|
fix: dashboard uses Auth.isOwner for export endpoint, admin was getting 403
|
2026-07-12 13:06:36 +08:00 |
|
|
|
9241dd6a6f
|
fix: add appeal button, hide top bar when logged in so sidebar is clickable
|
2026-07-12 02:14:25 +08:00 |
|
|
|
247a4e851d
|
feat: MC Report System - MySQL + Express + Vanilla JS SPA
|
2026-07-12 01:23:19 +08:00 |
|