Packages
blossom
0.23.4
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/casks.ex
defmodule Blossom.Controllers.Casks do
alias Blossom.Controllers.Casks
alias KilnCore.Utils
def process_autojoin(user, cask, ctx) do
role = cask.autojoin_role || "member"
ctx[:casks_roles].create_role(user, cask.id, role)
end
def process_autojoins(user, ctx) do
%{"autojoin" => true, "enabled" => true}
|> ctx[:model].get(:system)
|> Enum.each(fn cask -> Casks.process_autojoin(user, cask, ctx) end)
end
def new_cask_admin(outcome, user, casks_roles) do
case outcome do
{:ok, cask} ->
casks_roles.create_role(%{id: user["sub"]}, cask.id, "admin")
{:ok, cask}
e ->
e
end
end
def new(params, user, ctx) do
if ctx[:settings].is_enabled?("allow_new_casks", user["iss"]) do
params
|> ctx[:model].new(user)
|> Casks.new_cask_admin(user, ctx[:casks_roles])
else
{:error, :forbidden}
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Controller, unquote(opts)
@casks_roles Utils.option_or_mod_replace(
@caller,
unquote(opts),
:casks_roles,
CasksRoles,
2
)
@settings Utils.option_or_mod_replace(
@caller,
unquote(opts),
:settings,
Settings,
2
)
@ctx [model: @model, casks_roles: @casks_roles, settings: @settings]
def new(params, user, _opts) do
Casks.new(params, user, @ctx)
end
def process_autojoins(user) do
Casks.process_autojoins(user, @ctx)
end
defoverridable new: 3
end
end
end