Skip to content

Conversation

@escapade0668
Copy link

No description provided.

- Add online IP list feature to user index page
- Display IP address, node name, and last online time
- Fetch online IP records from OnlineLog model in UserController
- Show empty state when no online records exist
- Maintain consistent UI design with existing dashboard style
escapade0668 added 4 commits November 12, 2025 19:35
- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display
- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display
- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold
@escapade0668 escapade0668 force-pushed the XJJ_DEV branch 2 times, most recently from 330f642 to 8a4ac3f Compare November 13, 2025 03:27
escapade0668 added 6 commits November 13, 2025 11:31
* fix: use Smarty date_format modifier instead of PHP date function

- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display

* fix: only show active online IPs within last 90 seconds

- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold
- Increase online IP activity detection from 90 seconds to 5 minutes (300 seconds)
- Update UI text to reflect new 5-minute threshold
- Provide longer visibility for active connections
* fix: use Smarty date_format modifier instead of PHP date function

- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display

* fix: only show active online IPs within last 90 seconds

- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold

* feat: extend online IP detection window to 5 minutes

- Increase online IP activity detection from 90 seconds to 5 minutes (300 seconds)
- Update UI text to reflect new 5-minute threshold
- Provide longer visibility for active connections
…s per IP

- Change UNIQUE KEY from (user_id, ip) to (user_id, ip, node_id)
- Fix issue where only one node would be displayed when the same IP connects to multiple nodes
- Add transaction protection to ensure data consistency
- Support rollback operations
escapade0668 added 5 commits November 13, 2025 14:30
- Update addAliveIp to use new unique key (user_id, ip, node_id)
- Add IP location display to user home page online IP list
- Refactor ProfileController to use OnlineLog model methods
- Unify IP display format across user pages
* fix: use Smarty date_format modifier instead of PHP date function

- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display

* fix: only show active online IPs within last 90 seconds

- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold

* feat: extend online IP detection window to 5 minutes

- Increase online IP activity detection from 90 seconds to 5 minutes (300 seconds)
- Update UI text to reflect new 5-minute threshold
- Provide longer visibility for active connections

* fix: update online_log unique key constraint to support multiple nodes per IP

- Change UNIQUE KEY from (user_id, ip) to (user_id, ip, node_id)
- Fix issue where only one node would be displayed when the same IP connects to multiple nodes
- Add transaction protection to ensure data consistency
- Support rollback operations

* Streamline 2025111300-fix_online_log_unique_key.php

* Fix online_log unique key and enhance online IP display

- Update addAliveIp to use new unique key (user_id, ip, node_id)
- Add IP location display to user home page online IP list
- Refactor ProfileController to use OnlineLog model methods
- Unify IP display format across user pages
@escapade0668 escapade0668 force-pushed the XJJ_DEV branch 2 times, most recently from d5024e1 to 4118d6d Compare November 13, 2025 13:38
escapade0668 added 8 commits November 13, 2025 21:41
* fix: use Smarty date_format modifier instead of PHP date function

- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display

* fix: only show active online IPs within last 90 seconds

- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold

* feat: extend online IP detection window to 5 minutes

- Increase online IP activity detection from 90 seconds to 5 minutes (300 seconds)
- Update UI text to reflect new 5-minute threshold
- Provide longer visibility for active connections

* fix: update online_log unique key constraint to support multiple nodes per IP

- Change UNIQUE KEY from (user_id, ip) to (user_id, ip, node_id)
- Fix issue where only one node would be displayed when the same IP connects to multiple nodes
- Add transaction protection to ensure data consistency
- Support rollback operations

* Streamline 2025111300-fix_online_log_unique_key.php

* Fix online_log unique key and enhance online IP display

- Update addAliveIp to use new unique key (user_id, ip, node_id)
- Add IP location display to user home page online IP list
- Refactor ProfileController to use OnlineLog model methods
- Unify IP display format across user pages

* Remove Hiddify, FlClash, SFM, SFA, and SFI clients from user interface

* Optimize admin dashboard chart colors with Tabler native color scheme

* Remove deprecated ga_enable field after MFA refactoring

* Fix textarea value attribute for banned_reason and remark

* Add null coalescing operator for banned_reason and remark

* Add MFA device management for admin user edit page
- Add Stash.php subscription handler
- Update Subscribe service to support stash format
- Add stash to SubController supported types
- Add Stash client to client_display.json
- Add Stash configuration to appprofile.example.php
escapade0668 added 16 commits November 20, 2025 12:42
- Add RFC 2231 compliant filename encoding for Content-Disposition header
- Properly encode Chinese characters in subscription title
- Fixes issue where Clash clients display raw UTF-8 bytes instead of Chinese text
* fix: use Smarty date_format modifier instead of PHP date function

- Replace date() function with Smarty's date_format modifier
- Fix template compilation error in online IP list display

* fix: only show active online IPs within last 90 seconds

- Add time filter to display only connections active in the last 90 seconds
- Match admin online log behavior for consistency
- Pre-format IP, node name and time in controller
- Add subtitle to clarify online status criteria
- Update empty state message to reflect 90-second threshold

* feat: extend online IP detection window to 5 minutes

- Increase online IP activity detection from 90 seconds to 5 minutes (300 seconds)
- Update UI text to reflect new 5-minute threshold
- Provide longer visibility for active connections

* fix: update online_log unique key constraint to support multiple nodes per IP

- Change UNIQUE KEY from (user_id, ip) to (user_id, ip, node_id)
- Fix issue where only one node would be displayed when the same IP connects to multiple nodes
- Add transaction protection to ensure data consistency
- Support rollback operations

* Streamline 2025111300-fix_online_log_unique_key.php

* Fix online_log unique key and enhance online IP display

- Update addAliveIp to use new unique key (user_id, ip, node_id)
- Add IP location display to user home page online IP list
- Refactor ProfileController to use OnlineLog model methods
- Unify IP display format across user pages

* Remove Hiddify, FlClash, SFM, SFA, and SFI clients from user interface

* Optimize admin dashboard chart colors with Tabler native color scheme

* Remove deprecated ga_enable field after MFA refactoring

* Fix textarea value attribute for banned_reason and remark

* Add null coalescing operator for banned_reason and remark

* Add MFA device management for admin user edit page

* Improve MFA error handling - show detailed error messages for debugging

* Add Stash subscription support for iOS

- Add Stash.php subscription handler
- Update Subscribe service to support stash format
- Add stash to SubController supported types
- Add Stash client to client_display.json
- Add Stash configuration to appprofile.example.php

* Hide subscription address display in user interface

* Fix: Encode UTF-8 characters in Clash subscription filename

- Add RFC 2231 compliant filename encoding for Content-Disposition header
- Properly encode Chinese characters in subscription title
- Fixes issue where Clash clients display raw UTF-8 bytes instead of Chinese text
- Create new Coupon service class to centralize coupon validation logic
- Fix new_user restriction not being enforced in coupon validation
- Fix potential negative price when discount exceeds product price
- Refactor CouponController and OrderController to use the new service
- Reduce code duplication between controllers
- Add 'no_balance_pay' field to coupon limit configuration
- Add balance payment check methods in Coupon service class
- Block balance payment in InvoiceController when coupon disallows it
- Display 'no_balance_pay' status in admin coupon list
- Fix backend: remove incorrect ->first() chain after find() method
- Add null check for coupon existence before disabling
- Fix frontend: swap incorrect success-dialog/success-message selectors in disableCoupon callback
- Add switchToUser method to allow admin to view user interface as target user
- Add switchBackToAdmin method to return to admin interface
- Add switch button in user list table (admin/user)
- Add 'Return to Admin' button in user header when admin is viewing as user
- Store admin_uid in cookie to enable switching back
- Store all admin auth cookies (with admin_ prefix) instead of just admin_uid
- Restore cookies directly when switching back, leveraging existing cookie signature mechanism
- Prevents privilege escalation by forging admin_uid cookie
- No additional signing required as existing key/ip/device hashes provide security
- Call Auth::logout() to clear user cookies when admin session expired
- Redirect to login page instead of user dashboard
- Cookie domain must match for proper clearing
- Use same method as Auth login/logout to ensure cookies are set on correct domain
- Add activate method in OrderController to handle immediate order activation
- Add route POST /user/order/{id}/activate for the activation endpoint
- Add 'Instant Activate' button for orders in pending_activation status
- Support all product types: tabp, bandwidth, time, and topup
- For tabp/time: reset traffic and calculate time from current moment
- For bandwidth: add traffic to existing quota
- For topup: add balance to user account
- Move pinned announcement above traffic usage section
- Add scrollable mode for online IP list when count exceeds 5
- Keep table header sticky when scrolling
- Add hover effect to table rows
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants