Packages
blossom
0.25.2
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/clients.ex
defmodule Blossom.Controllers.Clients do
alias Blossom.Controllers.Clients
alias KilnCore.Utils
def put_new_secret(outcome, secret) do
case outcome do
{:ok, client} ->
{:ok, Map.put(client, :generated_secret, secret)}
{:error, _} = e ->
e
end
end
def generate_secret(realm, ctx) do
realm
|> ctx[:settings].clients_settings()
|> ctx[:auth].generate_secret()
end
def make_new(params, realm, user, ctx) do
secret = Clients.generate_secret(realm, ctx)
params
|> Map.put("secret", secret)
|> ctx[:model].new(user)
|> Clients.put_new_secret(secret)
end
def new(params, user, ctx) do
if params["cask"] != nil do
case ctx[:casks].show(params["cask"], user) do
[cask] -> Clients.make_new(params, cask.realm, user, ctx)
[] -> {:error, :forbidden}
end
else
{:error, :unprocessable}
end
end
def regenerate_secret(id, user, ctx) do
secret = Clients.generate_secret(user, ctx)
%{"secret" => secret}
|> ctx[:model].edit(id, user)
|> Clients.put_new_secret(secret)
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Controller, unquote(opts)
@auth Utils.option_or_mod_replace(
@caller,
unquote(opts),
:auth,
Auth,
1,
0..1
)
@casks Utils.option_or_mod_replace(
@caller,
unquote(opts),
:casks,
Casks,
2
)
@settings Utils.option_or_mod_replace(
@caller,
unquote(opts),
:settings,
Settings,
2
)
@ctx [
auth: @auth,
casks: @casks,
model: @model,
settings: @settings
]
def new(params, user, _opts) do
Clients.new(params, user, @ctx)
end
def regenerate_secret(id, user, _opts) do
Clients.regenerate_secret(id, user, @ctx)
end
end
end
end