Sha256: 71f02c129dcd4fc15ee035b4e822e8640e2e1966d8536848a9fb9a068de4ce64

Contents?: true

Size: 1.61 KB

Versions: 3

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module QuoVadis
  class Log < ActiveRecord::Base
    include IpMasking

    LOGIN_SUCCESS          = 'login.success'
    LOGIN_FAILURE          = 'login.failure'
    LOGIN_UNKNOWN          = 'login.unknown'
    TOTP_SETUP             = 'totp.setup'
    TOTP_SUCCESS           = 'totp.success'
    TOTP_FAILURE           = 'totp.failure'
    TOTP_REUSE             = 'totp.reuse'
    RECOVERY_CODE_SUCCESS  = 'recovery_code.success'
    RECOVERY_CODE_FAILURE  = 'recovery_code.failure'
    RECOVERY_CODE_GENERATE = 'recovery_code.generate'
    TWOFA_DEACTIVATED      = '2fa.deactivated'
    IDENTIFIER_CHANGE      = 'identifier.change'
    EMAIL_CHANGE           = 'email.change'
    PASSWORD_CHANGE        = 'password.change'
    PASSWORD_RESET         = 'password.reset'
    ACCOUNT_CONFIRMATION   = 'account.confirmation'
    LOGOUT_OTHER           = 'logout.other'
    LOGOUT                 = 'logout'

    ACTIONS = [
      LOGIN_SUCCESS,
      LOGIN_FAILURE,
      LOGIN_UNKNOWN,
      TOTP_SETUP,
      TOTP_SUCCESS,
      TOTP_FAILURE,
      TOTP_REUSE,
      RECOVERY_CODE_SUCCESS,
      RECOVERY_CODE_FAILURE,
      RECOVERY_CODE_GENERATE,
      TWOFA_DEACTIVATED,
      IDENTIFIER_CHANGE,
      EMAIL_CHANGE,
      PASSWORD_CHANGE,
      PASSWORD_RESET,
      ACCOUNT_CONFIRMATION,
      LOGOUT_OTHER,
      LOGOUT
    ]

    belongs_to :account, optional: true  # optional only for LOGIN_UNKNOWN

    validates :action, inclusion: {in: ACTIONS}

    scope :new_to_old, -> { order created_at: :desc }

    scope :page, ->(page, per_page) {
      limit(per_page).offset((page - 1) * per_page)
    }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
quo_vadis-2.0.2 app/models/quo_vadis/log.rb
quo_vadis-2.0.1 app/models/quo_vadis/log.rb
quo_vadis-2.0.0 app/models/quo_vadis/log.rb