Module: Supabase::Rails::Core
- Defined in:
- lib/supabase/rails/core.rb
Class Method Summary collapse
- .create_admin_client(auth: nil, env: nil, supabase_options: nil) ⇒ Object
- .create_context_client(auth: nil, env: nil, supabase_options: nil) ⇒ Object
- .extract_credentials(headers) ⇒ Object
- .secure_compare(a, b) ⇒ Object
- .verify_credentials(credentials, auth: :user, env: nil) ⇒ Object
Class Method Details
.create_admin_client(auth: nil, env: nil, supabase_options: nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/supabase/rails/core.rb', line 61 def create_admin_client(auth: nil, env: nil, supabase_options: nil) resolved_env = env.is_a?(SupabaseEnv) ? env : Env.resolve(env || {}) _token, key_name = extract_auth_fields(auth) secret_key = resolve_secret_key(resolved_env.secret_keys, key_name) ::Supabase::Client.new( supabase_url: resolved_env.url, supabase_key: secret_key, options: ( || {}, nil) ) end |
.create_context_client(auth: nil, env: nil, supabase_options: nil) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/supabase/rails/core.rb', line 48 def create_context_client(auth: nil, env: nil, supabase_options: nil) resolved_env = env.is_a?(SupabaseEnv) ? env : Env.resolve(env || {}) token, key_name = extract_auth_fields(auth) anon_key = resolve_publishable_key(resolved_env.publishable_keys, key_name) ::Supabase::Client.new( supabase_url: resolved_env.url, supabase_key: anon_key, options: ( || {}, token) ) end |
.extract_credentials(headers) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/supabase/rails/core.rb', line 27 def extract_credentials(headers) Credentials.new( token: extract_bearer_token(lookup_header(headers, "authorization")), apikey: stringify(lookup_header(headers, "apikey")) ) end |
.secure_compare(a, b) ⇒ Object
258 259 260 261 262 263 264 265 |
# File 'lib/supabase/rails/core.rb', line 258 def secure_compare(a, b) a_str = a.to_s b_str = b.to_s # Length pre-check is required: fixed_length_secure_compare raises on mismatch. return false if a_str.bytesize != b_str.bytesize OpenSSL.fixed_length_secure_compare(a_str, b_str) end |
.verify_credentials(credentials, auth: :user, env: nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/supabase/rails/core.rb', line 34 def verify_credentials(credentials, auth: :user, env: nil) resolved_env = env.is_a?(SupabaseEnv) ? env : Env.resolve(env || {}) modes = Array(auth) modes = [:user] if modes.empty? modes.each do |mode| result = try_mode(mode, credentials, resolved_env) return result if result end raise AuthError.invalid_credentials end |