Sha256: 0fe9ca43f0cdc017e6af861897bc83d0a95dd07d9e6c4357c4d7eae3e5e26d26

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require "roda"

module Rodauth
  module Rails
    # The superclass for creating a Rodauth middleware.
    class App < Roda
      plugin :middleware
      plugin :hooks
      plugin :render, layout: false

      def self.configure(name = nil, **options, &block)
        unless options[:json] == :only
          require "rodauth/rails/flash"
          plugin Flash
        end

        plugin :rodauth, name: name, csrf: false, flash: false, **options do
          # load the Rails integration
          enable :rails

          # database functions are more complex to set up, so disable them by default
          use_database_authentication_functions? false

          # avoid having to set deadline values in column default values
          set_deadline_values? true

          # use HMACs for additional security
          hmac_secret { ::Rails.application.secrets.secret_key_base }

          # evaluate user configuration
          instance_exec(&block)
        end
      end

      before do
        (opts[:rodauths] || {}).each do |name, _|
          if name
            env["rodauth.#{name}"] = rodauth(name)
          else
            env["rodauth"] = rodauth
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rodauth-rails-0.6.0 lib/rodauth/rails/app.rb