Current section

Files

Jump to
blossom lib blossom controllers organizations.ex
Raw

lib/blossom/controllers/organizations.ex

defmodule Blossom.Controllers.Organizations do
alias Blossom.Controllers.Organizations
alias KilnCore.Utils
def new_org_admin(outcome, user, org_roles) do
case outcome do
{:ok, organization} ->
org_roles.create_admin(user, organization.id)
{:ok, organization}
e ->
e
end
end
def new(params, user, ctx) do
if ctx[:settings].is_enabled?("allow_new_organizations") do
if ctx[:model].get(%{}, :system) == [] do
params
|> Map.put("enabled", true)
|> Map.put("root", true)
|> ctx[:model].new(:system)
|> Organizations.new_org_admin(user, ctx[:org_roles])
else
params
|> ctx[:model].new(user)
|> Organizations.new_org_admin(user, ctx[:org_roles])
end
else
{:error, :forbidden}
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Controller, unquote(opts)
@org_roles Utils.option_or_mod_replace(
@caller,
unquote(opts),
:organizations_roles,
OrganizationsRoles,
2
)
@settings Utils.option_or_mod_replace(
@caller,
unquote(opts),
:settings,
Settings,
2
)
@ctx [model: @model, org_roles: @org_roles, settings: @settings]
def new(params, user, _opts) do
Organizations.new(params, user, @ctx)
end
defoverridable new: 3
end
end
end