Module: Sessions::MadminUserPanel
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/generators/sessions/templates/madmin/user_panel/madmin_user_panel.rb
Overview
Optional per-user Madmin panel actions. Include this in
Madmin::UsersController, then draw the routes printed by
rails generate sessions:madmin --user-panel.
Constant Summary collapse
- SESSION_EVENTS_PER_PAGE =
30
Instance Method Summary collapse
-
#revoke_all_sessions ⇒ Object
Account-takeover response: revoke every live row with admin attribution.
- #sessions ⇒ Object
Instance Method Details
#revoke_all_sessions ⇒ Object
Account-takeover response: revoke every live row with admin attribution.
Each row writes its own revoked event and, in Devise mode, rotates
remember-me credentials so a long-lived cookie cannot revive the device.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/generators/sessions/templates/madmin/user_panel/madmin_user_panel.rb', line 32 def revoke_all_sessions user = User.find(params[:id]) count = user.sessions.live.count user.revoke_all_sessions!(by: current_user) flash[:notice] = "#{count} #{"session".pluralize(count)} revoked. " \ "Every device will be signed out on its next request." redirect_to main_app.sessions_madmin_user_path(user) end |
#sessions ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/generators/sessions/templates/madmin/user_panel/madmin_user_panel.rb', line 12 def sessions @user = User.find(params[:id]) @sessions = @user.sessions.live.by_recency.to_a events = @user.session_history.recent @failed_last_24h = events.failed_logins.last_24_hours.count if respond_to?(:pagy, true) @pagy, @events = pagy(events, limit: SESSION_EVENTS_PER_PAGE) else @events = events.limit(SESSION_EVENTS_PER_PAGE) end rescue StandardError => e raise unless defined?(::Pagy::OptionError) && e.is_a?(::Pagy::OptionError) @pagy, @events = pagy(events, page: 1, limit: SESSION_EVENTS_PER_PAGE) end |