Packages
blossom
0.26.0
0.29.3
0.29.2
0.29.1
0.29.0
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.3
0.26.2
0.26.1
0.26.0
0.25.3
0.25.2
0.25.1
0.25.0
0.24.1
0.24.0
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.8
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Easy identity for easy authentication
Current section
Files
Jump to
Current section
Files
lib/blossom/controllers/settings.ex
defmodule Blossom.Controllers.Settings do
alias Blossom.Controllers.Settings
def find_value(settings, setting_name) do
settings
|> Enum.find(%{}, fn setting ->
setting.name == setting_name
end)
|> Map.get(:value)
end
def fetch_number(settings, setting_name, default) do
case Settings.find_value(settings, setting_name) do
nil -> default
value -> String.to_integer(value)
end
end
def is_enabled?(setting_name, realm, ctx) do
params = %{"name" => [setting_name], "realm" => realm}
case ctx[:model].get(params, :system) do
[setting] ->
if setting.value == "no" do
false
else
true
end
_ ->
true
end
end
def min_password_length(settings) do
Settings.fetch_number(settings, "min_password_length", 8)
end
def password_settings(realm, ctx) do
settings =
%{"name" => ["min_password_length"], "realm" => realm}
|> ctx[:model].get(:system)
[
min_password_length: Settings.min_password_length(settings)
]
end
def otp_length(settings) do
Settings.fetch_number(settings, "otp_length", 8)
end
def otp_email_expiration(settings) do
name = "otp_email_verification_expiration"
Settings.fetch_number(settings, name, 43200)
end
def otp_password_expiration(settings) do
name = "otp_password_reset_expiration"
Settings.fetch_number(settings, name, 3600)
end
def otp_expiration(settings) do
[
email_verification: Settings.otp_email_expiration(settings),
password_reset: Settings.otp_password_expiration(settings)
]
end
def otp_settings(realm, ctx) do
settings =
%{
"name" => [
"otp_length",
"otp_email_verification_expiration",
"otp_password_reset_expiration"
],
"realm" => realm
}
|> ctx[:model].get(:system)
[
length: Settings.otp_length(settings),
expiration: Settings.otp_expiration(settings)
]
end
def clients_settings(realm, ctx) do
min_length =
%{"name" => ["min_client_secret_length"], "realm" => realm}
|> ctx[:model].get(:system)
|> Settings.fetch_number("min_client_secret_length", 32)
[
min_length: min_length
]
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Controller, unquote(opts)
@ctx [model: @model]
def is_enabled?(setting, realm) do
Settings.is_enabled?(setting, realm, @ctx)
end
def otp_settings(realm) do
Settings.otp_settings(realm, @ctx)
end
def password_settings(realm) do
Settings.password_settings(realm, @ctx)
end
def clients_settings(realm) do
Settings.clients_settings(realm, @ctx)
end
defoverridable is_enabled?: 2,
clients_settings: 1,
otp_settings: 1,
password_settings: 1
end
end
end