Current section

Files

Jump to
blossom lib blossom models otp_codes.ex
Raw

lib/blossom/models/otp_codes.ex

defmodule Blossom.Models.OtpCodes do
alias Blossom.Models.OtpCodes
alias KilnCore.Builders.Model, as: Builder
def new(params, user, ctx, protected) do
if user == :system do
ctx[:schema].new(params)
else
params
|> Map.put("user", user["sub"])
|> Builder.handle_params(protected, user)
|> ctx[:schema].new()
end
end
def delete(id, user, ctx) do
case user do
:system ->
ctx[:schema].delete(id)
_ ->
case ctx[:schema].get(%{"id" => id, "user" => user["sub"]}) do
[] -> {:error, :forbidden}
[_code] -> ctx[:schema].delete(id)
end
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Model,
schema: unquote(Keyword.get(opts, :schema))
@ctx [schema: @schema]
def new(params, user) do
OtpCodes.new(params, user, @ctx, @protected_fields)
end
def delete(id, user) do
OtpCodes.delete(id, user, @ctx)
end
end
end
end