Module: Rodauth::Rails

Defined in:
lib/rodauth/rails.rb,
lib/rodauth/rails/app.rb,
lib/rodauth/rails/auth.rb,
lib/rodauth/rails/model.rb,
lib/rodauth/rails/railtie.rb,
lib/rodauth/rails/version.rb,
lib/rodauth/rails/app/flash.rb,
lib/rodauth/rails/middleware.rb,
lib/rodauth/rails/feature/base.rb,
lib/rodauth/rails/feature/csrf.rb,
lib/rodauth/rails/feature/email.rb,
lib/rodauth/rails/app/middleware.rb,
lib/rodauth/rails/feature/render.rb,
lib/rodauth/rails/feature/callbacks.rb,
lib/rodauth/rails/controller_methods.rb,
lib/rodauth/rails/model/associations.rb,
lib/generators/rodauth/views_generator.rb,
lib/generators/rodauth/install_generator.rb,
lib/generators/rodauth/migration_helpers.rb,
lib/rodauth/rails/feature/instrumentation.rb,
lib/generators/rodauth/migration_generator.rb,
lib/rodauth/rails/feature/internal_request.rb

Defined Under Namespace

Modules: ControllerMethods, Feature, Generators Classes: App, Auth, Error, Middleware, Model, Railtie

Constant Summary collapse

VERSION =
"1.0.0"

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.appObject



85
86
87
88
89
# File 'lib/rodauth/rails.rb', line 85

def app
  fail Rodauth::Rails::Error, "app was not configured" unless @app

  @app.constantize
end

.middleware=(value) ⇒ Object (writeonly)

Sets the attribute middleware

Parameters:

  • value

    the value to set the attribute middleware to.



83
84
85
# File 'lib/rodauth/rails.rb', line 83

def middleware=(value)
  @middleware = value
end

Class Method Details

.authenticated(name = nil, &condition) ⇒ Object

routing constraint that requires authentication



50
51
52
53
54
55
56
# File 'lib/rodauth/rails.rb', line 50

def authenticated(name = nil, &condition)
  lambda do |request|
    rodauth = request.env.fetch ["rodauth", *name].join(".")
    rodauth.require_authentication
    rodauth.authenticated? && (condition.nil? || condition.call(rodauth))
  end
end

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



78
79
80
# File 'lib/rodauth/rails.rb', line 78

def configure
  yield self
end

.middleware?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/rodauth/rails.rb', line 91

def middleware?
  @middleware
end

.model(name = nil, **options) ⇒ Object



45
46
47
# File 'lib/rodauth/rails.rb', line 45

def model(name = nil, **options)
  Rodauth::Rails::Model.new(app.rodauth!(name), **options)
end

.rodauth(name = nil, query: nil, form: nil, account: nil, **options) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rodauth/rails.rb', line 18

def rodauth(name = nil, query: nil, form: nil, account: nil, **options)
  auth_class = app.rodauth!(name)

  unless auth_class.features.include?(:internal_request)
    fail Rodauth::Rails::Error, "Rodauth::Rails.rodauth requires internal_request feature to be enabled"
  end

  if 
    options[:account_id] = .id
  end

  instance = auth_class.internal_request_eval(options) do
    if defined?(ActiveRecord::Base) && .is_a?(ActiveRecord::Base)
      @account = .attributes.symbolize_keys
    elsif defined?(Sequel::Model) && .is_a?(Sequel::Model)
      @account = .values
    end
    self
  end

  # clean up inspect output
  instance.remove_instance_variable(:@internal_request_block)
  instance.remove_instance_variable(:@internal_request_return_value)

  instance
end

Instance Method Details

#api_only?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/rodauth/rails.rb', line 69

def api_only?
  ::Rails.application.config.api_only
end

#secret_key_baseObject



59
60
61
# File 'lib/rodauth/rails.rb', line 59

def secret_key_base
  ::Rails.application.secret_key_base
end