module Adminlock

Public Class Methods

from_config(setting, secrets_or_credentials = :credentials) click to toggle source
# File lib/adminlock.rb, line 14
def self.from_config(setting, secrets_or_credentials = :credentials)
  return unless Rails.application.respond_to?(secrets_or_credentials)

  store = Rails.application.public_send(secrets_or_credentials)

  store.adminlock.respond_to?(:fetch) &&
    store.adminlock.fetch(setting, store.public_send("adminlock_#{setting}")) ||
    store.public_send("adminlock_#{setting}") || store.public_send(setting)
end

Private Instance Methods

adminlock_codeword() click to toggle source
# File lib/adminlock.rb, line 44
def adminlock_codeword
  @adminlock_codeword ||=
    ENV['ADMINLOCK_CODEWORD'] ||
    ENV['adminlock_codeword'] ||
    Adminlock.from_config(:codeword, :secrets) ||
    Adminlock.from_config(:codeword)
end
check_for_adminlock() click to toggle source
# File lib/adminlock.rb, line 26
def check_for_adminlock
  return unless respond_to?(:adminlock) && adminlock_codeword
  return if cookies[:adminlock].present? && cookies[:adminlock] == adminlock_codeword.to_s.downcase

  redirect_to adminlock.unlock_path(
    return_to: request.fullpath.split('?adminlock_codeword')[0],
    adminlock_codeword: params[:adminlock_codeword]
  )
end