IanShaw027
d4c0a99114
feat(auth): support unbinding third-party identities
2026-04-22 00:54:38 +08:00
IanShaw027
da1d26001f
Merge branch 'main' into rebuild/auth-identity-foundation
2026-04-22 00:35:34 +08:00
IanShaw027
e4cfcae652
fix: reassign oauth adoption decisions on repeat login
2026-04-21 23:39:21 +08:00
IanShaw027
11db3989ce
Fix repeated OAuth adoption prompt for existing logins
2026-04-21 23:35:59 +08:00
IanShaw027
54dc176725
feat(settings): support per-channel WeChat OAuth and persist payment options
2026-04-21 07:51:41 -07:00
IanShaw027
d5819181ea
feat(auth): reclaim stale identities and refresh profile UI
2026-04-21 07:49:40 -07:00
IanShaw027
4c21320d1b
fix(auth): require explicit choice for third-party signup
2026-04-21 20:36:58 +08:00
IanShaw027
2cebb0dc60
feat(settings): support dual-mode wechat oauth defaults
2026-04-21 20:36:10 +08:00
IanShaw027
ee3f158f4e
fix(settings): restore wechat and payment config persistence
2026-04-21 17:35:12 +08:00
IanShaw027
d08757ce9e
refactor(admin): remove auth migration reports
2026-04-21 17:34:18 +08:00
IanShaw027
0fcddce69e
fix: reject http responses continuation ids
2026-04-21 13:53:12 +08:00
IanShaw027
65efef1eee
feat: support replacing bound primary email
2026-04-21 13:47:15 +08:00
IanShaw027
561405ab00
feat: add payment order provider snapshots
2026-04-21 12:41:27 +08:00
IanShaw027
9742796ee7
fix: retire public payment verify and backfill trade no
2026-04-21 11:41:02 +08:00
IanShaw027
f398650166
fix: harden oidc compat email and email bind tx
2026-04-21 11:00:08 +08:00
IanShaw027
7e89bca5e6
fix: tighten pending oauth email routing and binding state
2026-04-21 10:41:29 +08:00
IanShaw027
dcd5c43da4
feat: complete email binding and pending oauth verification flows
2026-04-21 10:00:06 +08:00
IanShaw027
09351e9459
fix auth completion and payment resume hardening
2026-04-21 08:23:26 +08:00
IanShaw027
ebe7524415
fix profile activity and migration remediation
2026-04-21 02:08:56 +08:00
IanShaw027
e12599c1b9
fix settings auth source default persistence
2026-04-21 02:08:04 +08:00
IanShaw027
7c6491c2d3
fix auth pending session hardening
2026-04-21 01:45:25 +08:00
IanShaw027
1d8432b8a4
fix: harden payment resume and wxpay webhook routing
2026-04-21 01:40:56 +08:00
IanShaw027
067eb23d8e
Tighten WeChat OAuth capability mode selection
2026-04-21 00:46:40 +08:00
IanShaw027
e4fe9fae2a
Fix profile refresh identity compatibility
2026-04-21 00:42:55 +08:00
IanShaw027
55e8dd550a
Tighten WeChat payment resume flow
2026-04-21 00:33:23 +08:00
IanShaw027
bf3ef2d19a
add admin user last used support
2026-04-21 00:22:17 +08:00
IanShaw027
9204145746
Close profile identity and avatar loop
2026-04-21 00:11:03 +08:00
IanShaw027
9e84e2fd2b
fix: persist admin payment visibility and scheduler settings
2026-04-21 00:05:17 +08:00
IanShaw027
7ef7fd19e7
fix: restore wechat payment oauth and jsapi flow
2026-04-20 23:34:57 +08:00
IanShaw027
724f8e89a1
feat: resolve auth identity migration reports
2026-04-20 22:29:21 +08:00
IanShaw027
452e55a53c
feat: add admin auth identity repair binding
2026-04-20 22:22:14 +08:00
IanShaw027
3bd3027251
feat: expose auth identity migration reports
2026-04-20 22:05:33 +08:00
IanShaw027
aaf4946b27
fix: normalize pending oauth email lookups
2026-04-20 21:59:03 +08:00
IanShaw027
422f60a145
fix: normalize legacy wechat auth identity keys
2026-04-20 21:42:35 +08:00
IanShaw027
f65429145e
fix: route legacy linuxdo users to account binding
2026-04-20 21:31:05 +08:00
IanShaw027
5adefb466b
fix: finalize oauth identity bindings
2026-04-20 21:24:33 +08:00
IanShaw027
9bebf1c1a6
feat: resolve payment results by resume token
2026-04-20 20:53:46 +08:00
IanShaw027
97c9b992cb
fix: require wechat unionid for oauth identity
2026-04-20 20:27:15 +08:00
IanShaw027
b51bc7ee24
feat: wire payment return url payloads
2026-04-20 20:19:23 +08:00
IanShaw027
fb6204ea8b
feat: apply oauth first-bind defaults and pending bind 2fa
2026-04-20 19:53:22 +08:00
IanShaw027
6a75bd77e3
feat: add pending oauth email onboarding flow
2026-04-20 19:30:09 +08:00
IanShaw027
c6d8592484
feat: add profile auth identity binding flow
2026-04-20 18:28:44 +08:00
IanShaw027
13d9780df4
feat: expose user activity timestamps in admin list
2026-04-20 17:48:30 +08:00
IanShaw027
e9de839d87
feat: rebuild auth identity foundation flow
2026-04-20 17:39:57 +08:00
IanShaw027
fbd0a2e3c4
feat: carry suggested third-party profile through pending oauth
2026-04-20 16:27:23 +08:00
IanShaw027
d3d4267731
fix: harden oidc callback security
2026-04-20 16:23:42 +08:00
erio
c3cb0280ef
fix(payment): alipay redirect-only flow, H5 detection and popup sizing
...
The native Alipay provider previously tried to embed the payment page
URL into a QR code on the client — the URL is not a scannable payload
so the QR never worked. Merchants also hit a H5 detection mismatch
whenever the backend UA sniffer missed iPadOS 13+ or embedded browsers,
and the popup window was too small for Alipay's standard checkout
layout (QR + account-login panel on the right), forcing the user to
scroll horizontally and vertically.
Changes:
Backend
- alipay.go: drop QR-on-URL path. Use redirect-only flow —
alipay.trade.page.pay for PC (returns a gateway URL the browser
opens in a new window) and alipay.trade.wap.pay for H5 (returns a
URL the browser jumps to). Both flows produce pages on
openapi.alipaydev.com / excashier.alipay.com; the client never
renders a QR itself.
- payment_handler.go: add optional is_mobile bool to
CreateOrderRequest so the frontend can declare the device
explicitly. Server still falls back to UA sniffing when absent.
Frontend
- types/payment.ts, PaymentView.vue: declare is_mobile in
CreateOrderRequest and pass the computed isMobileDevice() value.
- providerConfig.ts: replace the two fixed POPUP_WINDOW_FEATURES
constants with getPaymentPopupFeatures(), which prefers 1250×900
(Alipay's checkout footprint), clamps to window.screen.avail* and
centers the popup so it never overflows on smaller laptops.
- PaymentQRDialog.vue, PaymentStatusPanel.vue, StripePaymentInline.vue,
PaymentView.vue: use the new helper at all popup call sites.
2026-04-19 02:22:41 +08:00
erio
60614e6f74
fix: gofmt formatting and update API contract test for new fields
...
- Fix gofmt alignment in setting_handler.go, settings.go, payment_config_service.go
- Add payment_balance_recharge_multiplier and payment_recharge_fee_rate
to API contract test expected JSON
2026-04-15 01:39:00 +08:00
erio
98140f6cac
feat(payment): add recharge fee rate setting and fix provider card UI
...
- Add recharge_fee_rate system setting (percentage fee on top of recharge amount)
- Full backend chain: config constant, PaymentConfig struct, update validation,
read/write persistence, DTO, handler GET/PUT responses
- Frontend: settings input with preview, i18n (zh/en), API types
- Fix provider card toggle layout: labels above switches to save width
- Fix Chinese translation: "EasyPay" → "易支付" in provider description
2026-04-15 01:27:24 +08:00
erio
60a4b9316b
feat(payment): balance recharge multiplier and refund amount separation
...
- Add balance_recharge_multiplier system setting (e.g. 1.2 = charge 100 get 120)
- Separate order_amount (credited balance) from pay_amount (actual payment)
- Refund calculates gateway amount proportionally from pay_amount
- Frontend shows both amounts in order details, payment status, refund dialog
- Admin settings UI for configuring recharge multiplier
2026-04-15 01:27:24 +08:00