1.9 KiB
1.9 KiB
ACCOUNT_BINDING_CLOSURE_20260326-224700
Scope
- PRD
1.5 用户信息管理 -> 账号绑定与解绑 - email bind / replace / unbind
- phone bind / replace / unbind
- self-service security page closure
Implemented Closure
- Backend:
- added protected self-service endpoints:
POST /api/v1/users/me/bind-email/codePOST /api/v1/users/me/bind-emailDELETE /api/v1/users/me/bind-emailPOST /api/v1/users/me/bind-phone/codePOST /api/v1/users/me/bind-phoneDELETE /api/v1/users/me/bind-phone
- bind now requires both target-channel verification code and current-account sensitive verification when password or TOTP is configured.
- unbind now requires current-account sensitive verification when password or TOTP is configured, and blocks removal if no login method would remain.
- direct self-update of
email/phonethroughPUT /api/v1/users/:idis now blocked for non-admin self-service usage.
- added protected self-service endpoints:
- Frontend:
/profile/securitynow contains a real email/phone binding management section./profileno longer exposes direct editable email/phone fields; users are redirected to security settings for verified binding flows.
Validation
go test ./... -count=1go build ./cmd/servercd D:\project\frontend\admin && npm.cmd run lintcd D:\project\frontend\admin && npm.cmd run test:runcd D:\project\frontend\admin && npm.cmd run buildcd D:\project\frontend\admin && powershell -ExecutionPolicy Bypass -File .\scripts\run-playwright-auth-e2e.ps1
Boundary
- Email bind/replace is only available when SMTP-backed email code capability is enabled.
- Phone bind/replace is only available when Aliyun or Tencent SMS capability is enabled.
- This closure is product-complete and regression-verified, but it does not change the previously stated boundary that live third-party OAuth provider proof and external production delivery evidence remain separate gaps.