Class: Gitlab::Auth::Activity
- Inherits:
-
Object
- Object
- Gitlab::Auth::Activity
- Extended by:
- Utils::StrongMemoize
- Defined in:
- lib/gitlab/auth/activity.rb
Overview
Metrics and logging for user authentication activity.
Constant Summary collapse
- COUNTERS =
{ user_authenticated: 'Counter of successful authentication events', user_unauthenticated: 'Counter of authentication failures', user_not_found: 'Counter of failed log-ins when user is unknown', user_password_invalid: 'Counter of failed log-ins with invalid password', user_session_override: 'Counter of manual log-ins and sessions overrides', user_session_destroyed: 'Counter of user sessions being destroyed', user_two_factor_authenticated: 'Counter of two factor authentications', user_sessionless_authentication: 'Counter of sessionless authentications', user_blocked: 'Counter of sign in attempts when user is blocked', user_csrf_token_invalid: 'Counter of CSRF token validation failures' }.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(opts) ⇒ Activity
constructor
A new instance of Activity.
- #user_authenticated! ⇒ Object
- #user_authentication_failed! ⇒ Object
- #user_blocked! ⇒ Object
- #user_csrf_token_mismatch! ⇒ Object
- #user_session_destroyed! ⇒ Object
- #user_session_override! ⇒ Object
Constructor Details
#initialize(opts) ⇒ Activity
Returns a new instance of Activity.
24 25 26 |
# File 'lib/gitlab/auth/activity.rb', line 24 def initialize(opts) @opts = opts end |
Class Method Details
.each_counter ⇒ Object
77 78 79 80 81 |
# File 'lib/gitlab/auth/activity.rb', line 77 def self.each_counter COUNTERS.each_pair do |metric, description| yield "#{metric}_counter", metric, description end end |
Instance Method Details
#user_authenticated! ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/gitlab/auth/activity.rb', line 39 def user_authenticated! self.class.user_authenticated_counter_increment! case @opts[:message] when :two_factor_authenticated self.class.user_two_factor_authenticated_counter_increment! end end |
#user_authentication_failed! ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/gitlab/auth/activity.rb', line 28 def user_authentication_failed! self.class.user_unauthenticated_counter_increment! case @opts[:message] when :not_found_in_database self.class.user_not_found_counter_increment! when :invalid self.class.user_password_invalid_counter_increment! end end |
#user_blocked! ⇒ Object
57 58 59 |
# File 'lib/gitlab/auth/activity.rb', line 57 def user_blocked! self.class.user_blocked_counter_increment! end |
#user_csrf_token_mismatch! ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/gitlab/auth/activity.rb', line 65 def user_csrf_token_mismatch! controller = @opts[:controller] controller_label = controller.class.name controller_label = 'other' unless controller_label == 'GraphqlController' session = controller.try(:request).try(:session) user_auth_type_label = session.try(:loaded?) ? 'session' : 'other' self.class.user_csrf_token_invalid_counter .increment(controller: controller_label, auth: user_auth_type_label) end |
#user_session_destroyed! ⇒ Object
61 62 63 |
# File 'lib/gitlab/auth/activity.rb', line 61 def user_session_destroyed! self.class.user_session_destroyed_counter_increment! end |
#user_session_override! ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/gitlab/auth/activity.rb', line 48 def user_session_override! self.class.user_session_override_counter_increment! case @opts[:message] when :sessionless_sign_in self.class.user_sessionless_authentication_counter_increment! end end |