Class: BetterAuth::Context
- Inherits:
-
Object
- Object
- BetterAuth::Context
show all
- Defined in:
- lib/better_auth/context.rb
Defined Under Namespace
Classes: DirectAPIRequest
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(configuration) ⇒ Context
Returns a new instance of Context.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/better_auth/context.rb', line 19
def initialize(configuration)
@app_name = configuration.app_name
@base_url = configuration.context_base_url
@version = BetterAuth::VERSION
@options = configuration
@social_providers = configuration.social_providers
@auth_cookies = Cookies.get_cookies(configuration)
@cookies = @auth_cookies
@adapter = configuration.database
@internal_adapter = nil
@logger = configuration.logger
@session_config = configuration.session
@rate_limit_config = configuration.rate_limit
@trusted_origins = configuration.trusted_origins
@secret = configuration.secret
@secret_config = configuration.secret_config
@current_session = nil
@new_session = nil
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *arguments, &block) ⇒ Object
138
139
140
141
142
143
|
# File 'lib/better_auth/context.rb', line 138
def method_missing(name, *arguments, &block)
variable_name = :"@#{name}"
return instance_variable_get(variable_name) if arguments.empty? && instance_variable_defined?(variable_name)
super
end
|
Instance Attribute Details
#adapter ⇒ Object
Returns the value of attribute adapter.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def adapter
@adapter
end
|
#app_name ⇒ Object
Returns the value of attribute app_name.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def app_name
@app_name
end
|
#internal_adapter ⇒ Object
Returns the value of attribute internal_adapter.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def internal_adapter
@internal_adapter
end
|
#logger ⇒ Object
Returns the value of attribute logger.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def logger
@logger
end
|
#options ⇒ Object
Returns the value of attribute options.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def options
@options
end
|
#rate_limit_config ⇒ Object
Returns the value of attribute rate_limit_config.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def rate_limit_config
@rate_limit_config
end
|
#secret ⇒ Object
Returns the value of attribute secret.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def secret
@secret
end
|
#secret_config ⇒ Object
Returns the value of attribute secret_config.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def secret_config
@secret_config
end
|
#session_config ⇒ Object
Returns the value of attribute session_config.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def session_config
@session_config
end
|
#social_providers ⇒ Object
Returns the value of attribute social_providers.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def social_providers
@social_providers
end
|
#version ⇒ Object
Returns the value of attribute version.
7
8
9
|
# File 'lib/better_auth/context.rb', line 7
def version
@version
end
|
Instance Method Details
#apply_plugin_context!(attributes) ⇒ Object
123
124
125
126
127
|
# File 'lib/better_auth/context.rb', line 123
def apply_plugin_context!(attributes)
normalize_context(attributes).each do |key, value|
instance_variable_set("@#{key}", value) if plugin_context_attribute?(key)
end
end
|
#auth_cookies ⇒ Object
53
54
55
|
# File 'lib/better_auth/context.rb', line 53
def auth_cookies
runtime_fetch(:auth_cookies, @auth_cookies)
end
|
#base_url ⇒ Object
45
46
47
|
# File 'lib/better_auth/context.rb', line 45
def base_url
runtime_fetch(:base_url, @base_url)
end
|
#clear_runtime! ⇒ Object
180
181
182
183
|
# File 'lib/better_auth/context.rb', line 180
def clear_runtime!
Thread.current[runtime_key] = nil
options.clear_runtime_base_url! if options.respond_to?(:clear_runtime_base_url!)
end
|
#cookies ⇒ Object
57
58
59
|
# File 'lib/better_auth/context.rb', line 57
def cookies
runtime_fetch(:cookies, @cookies)
end
|
#create_auth_cookie(cookie_name, override_attributes = {}) ⇒ Object
111
112
113
|
# File 'lib/better_auth/context.rb', line 111
def create_auth_cookie(cookie_name, override_attributes = {})
Cookies.create_cookie(options, cookie_name.to_s, override_attributes)
end
|
#current_session ⇒ Object
61
62
63
|
# File 'lib/better_auth/context.rb', line 61
def current_session
runtime_fetch(:current_session, @current_session)
end
|
#new_session ⇒ Object
65
66
67
|
# File 'lib/better_auth/context.rb', line 65
def new_session
runtime_fetch(:new_session, @new_session)
end
|
#password ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/better_auth/context.rb', line 86
def password
config = {
min_password_length: options.email_and_password[:min_password_length],
max_password_length: options.email_and_password[:max_password_length]
}
password_config = options.email_and_password[:password] || {}
{
config: config,
hash: ->(value) { Password.hash(value, hasher: password_config[:hash], algorithm: options.password_hasher) },
verify: lambda do |password:, hash:|
Password.verify(
password: password,
hash: hash,
verifier: password_config[:verify],
algorithm: options.password_hasher
)
end,
check_password: lambda do |value|
length = value.to_s.length
length.between?(config[:min_password_length].to_i, config[:max_password_length].to_i)
end
}
end
|
#prepare_for_api_call!(source) ⇒ Object
162
163
164
165
166
167
168
169
170
171
|
# File 'lib/better_auth/context.rb', line 162
def prepare_for_api_call!(source)
runtime = request_runtime
runtime[:current_session] = nil
runtime[:new_session] = nil
if options.dynamic_base_url?
runtime[:base_url] = resolved_dynamic_base_url(source)
refresh_cookies!
end
runtime[:trusted_origins] = current_trusted_origins(request_for_callbacks(source))
end
|
#prepare_for_request!(request) ⇒ Object
149
150
151
152
153
154
155
156
157
158
159
160
|
# File 'lib/better_auth/context.rb', line 149
def prepare_for_request!(request)
runtime = request_runtime
runtime[:current_session] = nil
runtime[:new_session] = nil
if options.dynamic_base_url?
runtime[:base_url] = resolved_dynamic_base_url(request)
refresh_cookies!
elsif options.base_url.to_s.empty?
runtime[:base_url] = inferred_base_url(request)
end
runtime[:trusted_origins] = current_trusted_origins(request)
end
|
#refresh_cookies! ⇒ Object
185
186
187
188
189
190
191
192
193
194
|
# File 'lib/better_auth/context.rb', line 185
def refresh_cookies!
cookies = Cookies.get_cookies(options)
if request_runtime?
runtime_store(:auth_cookies, cookies)
runtime_store(:cookies, cookies)
else
@auth_cookies = cookies
@cookies = cookies
end
end
|
#refresh_from_options! ⇒ Object
129
130
131
132
133
134
135
136
|
# File 'lib/better_auth/context.rb', line 129
def refresh_from_options!
@social_providers = options.social_providers
@session_config = options.session
@rate_limit_config = options.rate_limit
@trusted_origins = options.trusted_origins
@secret = options.secret
@secret_config = options.secret_config
end
|
#reset_runtime! ⇒ Object
173
174
175
176
177
178
|
# File 'lib/better_auth/context.rb', line 173
def reset_runtime!
Thread.current[runtime_key] = nil if request_runtime?
options.clear_runtime_base_url! if options.respond_to?(:clear_runtime_base_url!)
@current_session = nil
@new_session = nil
end
|
#respond_to_missing?(name, include_private = false) ⇒ Boolean
145
146
147
|
# File 'lib/better_auth/context.rb', line 145
def respond_to_missing?(name, include_private = false)
instance_variable_defined?(:"@#{name}") || super
end
|
#run_in_background(task) ⇒ Object
77
78
79
80
81
82
83
84
|
# File 'lib/better_auth/context.rb', line 77
def run_in_background(task)
handler = options.advanced.dig(:background_tasks, :handler)
if handler.respond_to?(:call)
handler.call(task)
elsif task.respond_to?(:call)
task.call
end
end
|
#set_adapter(adapter) ⇒ Object
115
116
117
|
# File 'lib/better_auth/context.rb', line 115
def set_adapter(adapter)
@adapter = adapter
end
|
#set_current_session(session) ⇒ Object
73
74
75
|
# File 'lib/better_auth/context.rb', line 73
def set_current_session(session)
runtime_store(:current_session, session) || @current_session = session
end
|
#set_internal_adapter(adapter) ⇒ Object
119
120
121
|
# File 'lib/better_auth/context.rb', line 119
def set_internal_adapter(adapter)
@internal_adapter = adapter
end
|
#set_new_session(session) ⇒ Object
69
70
71
|
# File 'lib/better_auth/context.rb', line 69
def set_new_session(session)
runtime_store(:new_session, session) || @new_session = session
end
|
#trusted_origin?(url, allow_relative_paths: false) ⇒ Boolean
39
40
41
42
43
|
# File 'lib/better_auth/context.rb', line 39
def trusted_origin?(url, allow_relative_paths: false)
trusted_origins.any? do |origin|
Configuration.matches_origin_pattern?(url, origin, allow_relative_paths: allow_relative_paths)
end
end
|
#trusted_origins ⇒ Object
49
50
51
|
# File 'lib/better_auth/context.rb', line 49
def trusted_origins
runtime_fetch(:trusted_origins, @trusted_origins)
end
|