bab584f31d
feat: ticket create - identity-only for logged-in users
...
- logged-in users: identity dropdown shown when >=1 identity exists,
game name input hidden (identity carries the submitter); required
removed from hidden field
- no identity: fall back to showing the game name input
- anonymous: unchanged, only the input field
- submit: identity selection still overrides reporter name/uid
2026-08-22 02:56:13 +08:00
c4363deb46
feat: ticket create - sub-server selector
...
- ticket-create.js: added 子服务器 dropdown (group/server from
/polls/server-list, supports anonymous users), sends 'server' field
- tickets.js POST: accept server param, resolve 'group/server' or
alias/server_name from server_groups, store into tickets.server_name
- polls.js: new public GET /server-list (group_name+server_name only,
no auth required) for ticket create page
- verified: 13 checks (frontend/backend/db/column/syntax)
2026-08-21 22:02:06 +08:00
cb5847d650
feat: game UID fully internal + remove multi-identity copy
...
- game_uid is now an internal param: auto-generated server-side
(U + 12 hex) on register/bind-identity/install/admin-create/external
register; player-supplied game_uid ignored
- Removed all player-facing UID inputs: register page, install page,
identity bind modal, ticket-create 'your UID' field
- Removed player-facing UID display: identity table column,
ticket detail/tracking reporter UID
- Removed '同一账号可绑定网易端 + 皮肤站身份' / '可绑定多个来源身份' copy
- Kept target_game_uid (reported player) and admin panel UID management
- settings-page skin-site placeholder updated
2026-08-21 21:52:40 +08:00
8c5ce78fd0
chore: add AGPLv3 copyright header to all source files
...
- 52 JS files (backend + public/js): header with
Copyright (C) 2026 Sea Network Technology Studio
Author: CangLan <admin@sea-studio.top >
+ AGPLv3 notice
- idempotent (skips if header present), all syntax-checked
2026-08-19 20:27:05 +08:00
65edbaf157
refactor: session-based external auth, dynamic sources, drop netease UID
...
Auth (external API):
- ID: 16-digit random (non-sequential); Secret: SeaReport- + 32 hex
- POST /auth/session: ID+Secret -> Bearer SESSION (24h, single-session,
old session invalidated on re-issue, disabled client invalidates)
- clientAuth now validates Bearer SESSION via api_sessions JOIN api_clients
Sources (dynamic, no default, open-source friendly):
- sources table + CRUD route (/api/sources, owner; delete guarded by usage)
- users/user_identities.source ENUM -> VARCHAR, seeded netease/skin
- register/admin create/identity bind: validate against enabled sources
- UI: 来源管理 page; source dropdowns loaded dynamically everywhere
(register, dashboard identity, users admin, bans), labels dynamic
UID removal:
- game_uid/reporter_game_uid no longer required (db default '', validations
dropped, frontend fields optional)
Docs: EXTERNAL-API.md session flow + new credential format; API.md updated
Verified: 37 checks (syntax, session logic, source CRUD, UID removal, docs)
2026-08-19 20:08:06 +08:00
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
5e998b2201
fix: hide type tabs when embedded in home page
2026-07-17 13:41:29 +08:00
d697ea1353
fix: add priority selector to ticket create form
2026-07-17 13:25:17 +08:00
17bf5a611d
feat: type tabs on create form (report/suggestion/appeal)
2026-07-17 00:21:48 +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
4f4df7e479
fix: backend+frontend full audit - 15 bugs fixed across all files
2026-07-13 04:07:18 +08:00
10b6ff94ed
feat: admin complaint (owner only) + result appeal (one per ticket, owner only)
2026-07-12 15:19:09 +08:00
de1bca9d8a
fix: client-side file size limit 20→50MB to match server
2026-07-12 13:03:46 +08:00
247a4e851d
feat: MC Report System - MySQL + Express + Vanilla JS SPA
2026-07-12 01:23:19 +08:00