Current section
Files
Jump to
Current section
Files
lib/xarango/user.ex
defmodule Xarango.User do
defstruct [:user, :username, :passw, :passwd, :active, :extra, :changePassword]
alias Xarango.User
alias Xarango.Database
import Xarango.Client
use Xarango.URI, prefix: "user"
def databases do
Xarango.Database.user_databases
end
def user(user) do
url(user.user, Database.system)
|> get()
|> to_user
end
def users do
url("")
|> get(Database.system)
|> Map.get(:result)
|> Enum.map(&to_user(&1))
end
def create(%User{user: u, passw: p} = user) when is_binary(u) and is_binary(p) do
url("", Database.system)
|> post(user)
|> to_user
end
def create(_) do
raise Xarango.Error, message: "username and/or password not set"
end
#uses :passwd instead of :passw !?
def replace(user) do
url(user.user, Database.system)
|> put(Map.take(user, [:passwd, :active, :extra]))
|> to_user
end
def update(user) do
url(user.user, Database.system)
|> patch(Map.take(user, [:passwd, :active, :extra]))
|> to_user
end
def destroy(user) do
url(user.user, Database.system)
|> delete
end
def grant_access(user, database) do
url("#{user.user}/database/#{database.name}", Database.system)
|> put(%{grant: "rw"})
end
def revoke_access(user, database) do
url("#{user.user}/database/#{database.name}", Database.system)
|> put(%{grant: "none"})
end
defp to_user(data) do
struct(User, data)
end
end