Packages

phoenix_kit

1.7.28
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib phoenix_kit config ueber_auth.ex
Raw

lib/phoenix_kit/config/ueber_auth.ex

defmodule PhoenixKit.Config.UeberAuth do
@moduledoc """
Ueberauth configuration management for PhoenixKit.
This module provides a centralized way to manage Ueberauth OAuth configuration
with type-safe getter and setter functions for different data types.
## Usage
# Get all Ueberauth configuration
config = PhoenixKit.Config.UeberAuth.get_all()
# Get specific values
providers = PhoenixKit.Config.UeberAuth.get_providers()
base_path = PhoenixKit.Config.UeberAuth.get_base_path()
# Set configuration
PhoenixKit.Config.UeberAuth.set_providers(%{google: {Ueberauth.Strategy.Google, []}})
PhoenixKit.Config.UeberAuth.set_base_path("/custom/auth")
## Configuration Keys
- `:base_path` - Base path for OAuth routes (default: calculated from URL prefix)
- `:providers` - Map of OAuth providers and their strategies
## Provider Management
Functions are provided for adding, removing, and checking individual providers:
- `update_provider/2` - Add or update a provider
- `remove_provider/1` - Remove a provider
- `has_provider?/1` - Check if a provider is configured
- `get_provider_names/0` - Get list of all provider names
- `get_provider/1` - Get specific provider configuration
"""
alias PhoenixKit.Config
@doc """
Gets the full Ueberauth configuration from the application environment.
This function retrieves the complete Ueberauth configuration including
providers, base path, and other Ueberauth-specific settings.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_all()
[base_path: "/users/auth", providers: %{google: {Ueberauth.Strategy.Google, []}}]
iex> PhoenixKit.Config.UeberAuth.get_all()
[]
"""
@spec get_all() :: Keyword.t()
def get_all do
Application.get_env(:ueberauth, Ueberauth, [])
end
@doc """
Gets specific Ueberauth configuration options by key.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_option(:providers)
%{google: {Ueberauth.Strategy.Google, []}}
iex> PhoenixKit.Config.UeberAuth.get_option(:base_path)
"/users/auth"
iex> PhoenixKit.Config.UeberAuth.get_option(:nonexistent)
nil
"""
@spec get_option(atom()) :: any() | nil
def get_option(key) when is_atom(key) do
config = get_all()
Keyword.get(config, key)
end
@doc """
Gets specific Ueberauth configuration options by key with a default value.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_option(:base_path, "/auth")
"/users/auth"
iex> PhoenixKit.Config.UeberAuth.get_option(:nonexistent, "default")
"default"
"""
@spec get_option(atom(), any()) :: any()
def get_option(key, default) when is_atom(key) do
config = get_all()
Keyword.get(config, key, default)
end
@doc """
Gets Ueberauth providers configuration.
Returns the configured providers map or list, or an empty map if none configured.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_providers()
%{google: {Ueberauth.Strategy.Google, []}, apple: {Ueberauth.Strategy.Apple, []}}
iex> PhoenixKit.Config.UeberAuth.get_providers()
%{}
"""
@spec get_providers() :: map() | list()
def get_providers do
case get_option(:providers) do
providers when is_map(providers) or is_list(providers) -> providers
_ -> %{}
end
end
@doc """
Gets Ueberauth base path configuration.
Returns the configured base path for OAuth routes or a default based on URL prefix.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_base_path()
"/users/auth"
iex> PhoenixKit.Config.UeberAuth.get_base_path()
"/phoenix_kit/users/auth"
"""
@spec get_base_path() :: String.t()
def get_base_path do
case get_option(:base_path) do
base_path when is_binary(base_path) and base_path != "" -> base_path
_ -> get_default_base_path()
end
end
@doc """
Sets Ueberauth configuration options.
Updates the Ueberauth configuration in the application environment.
## Examples
iex> PhoenixKit.Config.UeberAuth.set_all([providers: %{google: {Ueberauth.Strategy.Google, []}}])
:ok
iex> PhoenixKit.Config.UeberAuth.set_all([base_path: "/custom/auth"])
:ok
"""
@spec set_all(Keyword.t()) :: :ok
def set_all(options) when is_list(options) do
current_config = get_all()
new_config = Keyword.merge(current_config, options)
Application.put_env(:ueberauth, Ueberauth, new_config)
:ok
end
@doc """
Sets specific Ueberauth configuration option.
Updates a single key in the Ueberauth configuration.
## Examples
iex> PhoenixKit.Config.UeberAuth.set_option(:base_path, "/custom/auth")
:ok
iex> PhoenixKit.Config.UeberAuth.set_option(:providers, %{google: {Ueberauth.Strategy.Google, []}})
:ok
"""
@spec set_option(atom(), any()) :: :ok
def set_option(key, value) when is_atom(key) do
set_all([{key, value}])
end
@doc """
Sets Ueberauth providers configuration.
Updates the providers map in Ueberauth configuration.
## Examples
iex> PhoenixKit.Config.UeberAuth.set_providers(%{google: {Ueberauth.Strategy.Google, []}})
:ok
"""
@spec set_providers(map() | list()) :: :ok
def set_providers(providers) when is_map(providers) or is_list(providers) do
set_option(:providers, providers)
end
@doc """
Sets Ueberauth base path configuration.
Updates the base path for OAuth routes.
## Examples
iex> PhoenixKit.Config.UeberAuth.set_base_path("/custom/auth")
:ok
"""
@spec set_base_path(String.t()) :: :ok
def set_base_path(base_path) when is_binary(base_path) do
set_option(:base_path, base_path)
end
@doc """
Updates Ueberauth providers by adding or updating a specific provider.
Adds a new provider or updates an existing one in the providers configuration.
## Examples
iex> PhoenixKit.Config.UeberAuth.update_provider(:google, {Ueberauth.Strategy.Google, []})
:ok
"""
@spec update_provider(atom(), tuple()) :: :ok
def update_provider(provider, strategy_config)
when is_atom(provider) and is_tuple(strategy_config) do
providers = get_providers()
updated_providers = Map.put(providers, provider, strategy_config)
set_providers(updated_providers)
end
@doc """
Removes a specific Ueberauth provider from the configuration.
## Examples
iex> PhoenixKit.Config.UeberAuth.remove_provider(:google)
:ok
"""
@spec remove_provider(atom()) :: :ok
def remove_provider(provider) when is_atom(provider) do
providers = get_providers()
updated_providers = Map.delete(providers, provider)
set_providers(updated_providers)
end
@doc """
Checks if a specific Ueberauth provider is configured.
## Examples
iex> PhoenixKit.Config.UeberAuth.has_provider?(:google)
true
iex> PhoenixKit.Config.UeberAuth.has_provider?(:facebook)
false
"""
@spec has_provider?(atom()) :: boolean()
def has_provider?(provider) when is_atom(provider) do
providers = get_providers()
Map.has_key?(providers, provider)
end
@doc """
Gets a list of all configured Ueberauth provider names.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_provider_names()
[:google, :apple, :github]
iex> PhoenixKit.Config.UeberAuth.get_provider_names()
[]
"""
@spec get_provider_names() :: [atom()]
def get_provider_names do
providers = get_providers()
case providers do
p when is_map(p) -> Map.keys(p)
p when is_list(p) -> Keyword.keys(p)
end
end
@doc """
Gets the Ueberauth provider configuration for a specific provider.
## Examples
iex> PhoenixKit.Config.UeberAuth.get_provider(:google)
{Ueberauth.Strategy.Google, []}
iex> PhoenixKit.Config.UeberAuth.get_provider(:nonexistent)
nil
"""
@spec get_provider(atom()) :: tuple() | nil
def get_provider(provider) when is_atom(provider) do
providers = get_providers()
case providers do
p when is_map(p) -> Map.get(p, provider)
p when is_list(p) -> Keyword.get(p, provider)
end
end
@doc """
Sets OAuth configuration for a specific provider strategy.
This configures the credentials (client_id, client_secret, etc.) for
individual OAuth provider strategies like Ueberauth.Strategy.Google.OAuth.
## Examples
PhoenixKit.Config.UeberAuth.set_provider_strategy_config(
:google,
Ueberauth.Strategy.Google.OAuth,
[client_id: "...", client_secret: "..."]
)
:ok
"""
@spec set_provider_strategy_config(atom(), module(), Keyword.t()) :: :ok
def set_provider_strategy_config(_provider, strategy_module, opts) when is_list(opts) do
Application.put_env(:ueberauth, strategy_module, opts)
:ok
end
# Helper function to get the default base path based on URL prefix
defp get_default_base_path do
url_prefix = Config.get_url_prefix()
case url_prefix do
"" -> "/users/auth"
"/" -> "/users/auth"
prefix -> "#{prefix}/users/auth"
end
end
end