Module: BetterAuth::Sinatra

Defined in:
lib/better_auth/sinatra.rb,
lib/better_auth/sinatra/helpers.rb,
lib/better_auth/sinatra/version.rb,
lib/better_auth/sinatra/extension.rb,
lib/better_auth/sinatra/migration.rb,
lib/better_auth/sinatra/mounted_app.rb,
lib/better_auth/sinatra/configuration.rb

Defined Under Namespace

Modules: Extension, Helpers, Migration Classes: Configuration, MountedApp

Constant Summary collapse

VERSION =
"0.10.0"

Class Method Summary collapse

Class Method Details

.app_config_path(path = nil) ⇒ Object



48
49
50
# File 'lib/better_auth/sinatra.rb', line 48

def app_config_path(path = nil)
  path || BetterAuth::Env.get("BETTER_AUTH_CONFIG") || "config/better_auth.rb"
end

.auth(overrides = nil) ⇒ Object



35
36
37
38
39
40
# File 'lib/better_auth/sinatra.rb', line 35

def auth(overrides = nil)
  options = configuration.to_auth_options
  return @auth ||= BetterAuth.auth(options) if overrides.nil? || overrides.empty?

  BetterAuth.auth(options.merge(overrides))
end

.configurationObject



20
21
22
# File 'lib/better_auth/sinatra.rb', line 20

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



24
25
26
27
28
# File 'lib/better_auth/sinatra.rb', line 24

def configure
  yield configuration
  @auth = nil
  self
end

.default_config_templateObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/better_auth/sinatra.rb', line 69

def default_config_template
  <<~RUBY
    # frozen_string_literal: true

    require "better_auth/sinatra"

    BetterAuth::Sinatra.configure do |config|
      config.secret = BetterAuth::Env.fetch("BETTER_AUTH_SECRET", "change-me-sinatra-secret-12345678901234567890")
      config.base_url = BetterAuth::Env.get("BETTER_AUTH_URL")
      config.base_path = "/api/auth"

      config.database = ->(options) do
        case BetterAuth::Env.fetch("BETTER_AUTH_DATABASE_DIALECT", "postgres")
        when "postgres", "postgresql"
          BetterAuth::Adapters::Postgres.new(options, url: ENV.fetch("DATABASE_URL"))
        when "mysql"
          BetterAuth::Adapters::MySQL.new(options, url: ENV.fetch("DATABASE_URL"))
        when "sqlite", "sqlite3"
          BetterAuth::Adapters::SQLite.new(options, path: ENV.fetch("DATABASE_URL", "db/better_auth.sqlite3"))
        else
          raise "Unsupported OPEN_AUTH_DATABASE_DIALECT or BETTER_AUTH_DATABASE_DIALECT for better_auth-sinatra"
        end
      end

      config.email_and_password = {
        enabled: true
      }

      config.plugins = []
    end
  RUBY
end

.load_app_config(path = nil) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/better_auth/sinatra.rb', line 52

def load_app_config(path = nil)
  config_path = app_config_path(path)
  return false unless File.exist?(config_path)

  load config_path
  true
end

.load_app_config!(path = nil) ⇒ Object

Raises:

  • (ArgumentError)


60
61
62
63
64
65
66
67
# File 'lib/better_auth/sinatra.rb', line 60

def load_app_config!(path = nil)
  config_path = app_config_path(path)
  return true if load_app_config(config_path)

  raise ArgumentError,
    "Better Auth Sinatra config not found at #{config_path.inspect}. " \
    "Run `rake better_auth:install` or set BETTER_AUTH_CONFIG to a shared config file."
end

.migration_configurationObject



42
43
44
45
46
# File 'lib/better_auth/sinatra.rb', line 42

def migration_configuration
  options = configuration.to_auth_options
  options[:secret] ||= BetterAuth::Configuration::DEFAULT_SECRET
  BetterAuth::Configuration.new(options)
end

.registered(app) ⇒ Object



16
17
18
# File 'lib/better_auth/sinatra.rb', line 16

def registered(app)
  Extension.registered(app)
end

.reset!Object



30
31
32
33
# File 'lib/better_auth/sinatra.rb', line 30

def reset!
  @configuration = nil
  @auth = nil
end