Current section

Files

Jump to
blossom lib blossom models users.ex
Raw

lib/blossom/models/users.ex

defmodule Blossom.Models.Users do
alias Blossom.Models.Users
def get(params, user, schema) do
if user == :system do
schema.get(params)
else
[]
end
end
def get_count(params, user, schema) do
if user == :system do
schema.get_count(params)
else
0
end
end
def show(id, user, schema) do
if user == :system do
schema.show(id)
else
if id == user["sub"] do
schema.show(id)
else
{:error, :forbidden}
end
end
end
def edit(params, id, user, schema) do
if user == :system do
schema.edit(params, id)
else
if id == user["sub"] do
%{}
|> Map.filter(fn {k, _v} -> k == "username" end)
|> schema.edit(id)
else
{:error, :forbidden}
end
end
end
def delete(id, user, schema) do
if user == :system do
schema.delete(id)
else
if id == user["sub"] do
schema.delete(id)
else
{:error, :forbidden}
end
end
end
defmacro __using__(opts \\ []) do
quote do
protected_fields = ["blocked", "email_verified"]
use KilnCore.Model,
protected_fields:
Keyword.get(unquote(opts), :protected_fields, protected_fields),
schema: unquote(Keyword.get(opts, :schema))
def get(params, user) do
Users.get(params, user, @schema)
end
def get_count(params, user) do
Users.get_count(params, user, @schema)
end
def edit(params, id, user) do
Users.edit(params, id, user, @schema)
end
def show(id, user) do
Users.show(id, user, @schema)
end
def delete(id, user) do
Users.delete(id, user, @schema)
end
end
end
end