32
lib/eventos/accounts/account.ex
Normal file
32
lib/eventos/accounts/account.ex
Normal file
@@ -0,0 +1,32 @@
|
||||
defmodule Eventos.Accounts.Account do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Eventos.Accounts.{Account, GroupAccount, GroupRequest, Group, User}
|
||||
alias Eventos.Events.Event
|
||||
|
||||
|
||||
schema "accounts" do
|
||||
field :description, :string
|
||||
field :display_name, :string
|
||||
field :domain, :string
|
||||
field :private_key, :string
|
||||
field :public_key, :string
|
||||
field :suspended, :boolean, default: false
|
||||
field :uri, :string
|
||||
field :url, :string
|
||||
field :username, :string
|
||||
has_many :organized_events, Event
|
||||
many_to_many :groups, Group, join_through: GroupAccount
|
||||
has_many :group_request, GroupRequest
|
||||
has_one :user_id, User
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(%Account{} = account, attrs) do
|
||||
account
|
||||
|> cast(attrs, [:username, :domain, :display_name, :description, :private_key, :public_key, :suspended, :uri, :url])
|
||||
|> validate_required([:username, :domain, :display_name, :description, :private_key, :public_key, :suspended, :uri, :url])
|
||||
end
|
||||
end
|
||||
488
lib/eventos/accounts/accounts.ex
Normal file
488
lib/eventos/accounts/accounts.ex
Normal file
@@ -0,0 +1,488 @@
|
||||
defmodule Eventos.Accounts do
|
||||
@moduledoc """
|
||||
The Accounts context.
|
||||
"""
|
||||
|
||||
import Ecto.Query, warn: false
|
||||
alias Eventos.Repo
|
||||
|
||||
alias Eventos.Accounts.User
|
||||
|
||||
@doc """
|
||||
Returns the list of users.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> list_users()
|
||||
[%User{}, ...]
|
||||
|
||||
"""
|
||||
def list_users do
|
||||
Repo.all(User)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single user.
|
||||
|
||||
Raises `Ecto.NoResultsError` if the User does not exist.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_user!(123)
|
||||
%User{}
|
||||
|
||||
iex> get_user!(456)
|
||||
** (Ecto.NoResultsError)
|
||||
|
||||
"""
|
||||
def get_user!(id), do: Repo.get!(User, id)
|
||||
|
||||
@doc """
|
||||
Creates a user.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> create_user(%{field: value})
|
||||
{:ok, %User{}}
|
||||
|
||||
iex> create_user(%{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def create_user(attrs \\ %{}) do
|
||||
%User{}
|
||||
|> User.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Updates a user.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> update_user(user, %{field: new_value})
|
||||
{:ok, %User{}}
|
||||
|
||||
iex> update_user(user, %{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def update_user(%User{} = user, attrs) do
|
||||
user
|
||||
|> User.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Deletes a User.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> delete_user(user)
|
||||
{:ok, %User{}}
|
||||
|
||||
iex> delete_user(user)
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def delete_user(%User{} = user) do
|
||||
Repo.delete(user)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking user changes.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> change_user(user)
|
||||
%Ecto.Changeset{source: %User{}}
|
||||
|
||||
"""
|
||||
def change_user(%User{} = user) do
|
||||
User.changeset(user, %{})
|
||||
end
|
||||
|
||||
alias Eventos.Accounts.Account
|
||||
|
||||
@doc """
|
||||
Returns the list of accounts.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> list_accounts()
|
||||
[%Account{}, ...]
|
||||
|
||||
"""
|
||||
def list_accounts do
|
||||
Repo.all(Account)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single account.
|
||||
|
||||
Raises `Ecto.NoResultsError` if the Account does not exist.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_account!(123)
|
||||
%Account{}
|
||||
|
||||
iex> get_account!(456)
|
||||
** (Ecto.NoResultsError)
|
||||
|
||||
"""
|
||||
def get_account!(id), do: Repo.get!(Account, id)
|
||||
|
||||
@doc """
|
||||
Creates a account.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> create_account(%{field: value})
|
||||
{:ok, %Account{}}
|
||||
|
||||
iex> create_account(%{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def create_account(attrs \\ %{}) do
|
||||
%Account{}
|
||||
|> Account.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Updates a account.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> update_account(account, %{field: new_value})
|
||||
{:ok, %Account{}}
|
||||
|
||||
iex> update_account(account, %{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def update_account(%Account{} = account, attrs) do
|
||||
account
|
||||
|> Account.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Deletes a Account.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> delete_account(account)
|
||||
{:ok, %Account{}}
|
||||
|
||||
iex> delete_account(account)
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def delete_account(%Account{} = account) do
|
||||
Repo.delete(account)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking account changes.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> change_account(account)
|
||||
%Ecto.Changeset{source: %Account{}}
|
||||
|
||||
"""
|
||||
def change_account(%Account{} = account) do
|
||||
Account.changeset(account, %{})
|
||||
end
|
||||
|
||||
alias Eventos.Accounts.Group
|
||||
|
||||
@doc """
|
||||
Returns the list of groups.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> list_groups()
|
||||
[%Group{}, ...]
|
||||
|
||||
"""
|
||||
def list_groups do
|
||||
Repo.all(Group)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single group.
|
||||
|
||||
Raises `Ecto.NoResultsError` if the Group does not exist.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_group!(123)
|
||||
%Group{}
|
||||
|
||||
iex> get_group!(456)
|
||||
** (Ecto.NoResultsError)
|
||||
|
||||
"""
|
||||
def get_group!(id), do: Repo.get!(Group, id)
|
||||
|
||||
@doc """
|
||||
Creates a group.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> create_group(%{field: value})
|
||||
{:ok, %Group{}}
|
||||
|
||||
iex> create_group(%{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def create_group(attrs \\ %{}) do
|
||||
%Group{}
|
||||
|> Group.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Updates a group.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> update_group(group, %{field: new_value})
|
||||
{:ok, %Group{}}
|
||||
|
||||
iex> update_group(group, %{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def update_group(%Group{} = group, attrs) do
|
||||
group
|
||||
|> Group.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Deletes a Group.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> delete_group(group)
|
||||
{:ok, %Group{}}
|
||||
|
||||
iex> delete_group(group)
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def delete_group(%Group{} = group) do
|
||||
Repo.delete(group)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking group changes.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> change_group(group)
|
||||
%Ecto.Changeset{source: %Group{}}
|
||||
|
||||
"""
|
||||
def change_group(%Group{} = group) do
|
||||
Group.changeset(group, %{})
|
||||
end
|
||||
|
||||
alias Eventos.Accounts.GroupAccount
|
||||
|
||||
@doc """
|
||||
Returns the list of group_accounts.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> list_group_accounts()
|
||||
[%GroupAccount{}, ...]
|
||||
|
||||
"""
|
||||
def list_group_accounts do
|
||||
Repo.all(GroupAccount)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single group_account.
|
||||
|
||||
Raises `Ecto.NoResultsError` if the Group account does not exist.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_group_account!(123)
|
||||
%GroupAccount{}
|
||||
|
||||
iex> get_group_account!(456)
|
||||
** (Ecto.NoResultsError)
|
||||
|
||||
"""
|
||||
def get_group_account!(id), do: Repo.get!(GroupAccount, id)
|
||||
|
||||
@doc """
|
||||
Creates a group_account.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> create_group_account(%{field: value})
|
||||
{:ok, %GroupAccount{}}
|
||||
|
||||
iex> create_group_account(%{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def create_group_account(attrs \\ %{}) do
|
||||
%GroupAccount{}
|
||||
|> GroupAccount.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Updates a group_account.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> update_group_account(group_account, %{field: new_value})
|
||||
{:ok, %GroupAccount{}}
|
||||
|
||||
iex> update_group_account(group_account, %{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def update_group_account(%GroupAccount{} = group_account, attrs) do
|
||||
group_account
|
||||
|> GroupAccount.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Deletes a GroupAccount.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> delete_group_account(group_account)
|
||||
{:ok, %GroupAccount{}}
|
||||
|
||||
iex> delete_group_account(group_account)
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def delete_group_account(%GroupAccount{} = group_account) do
|
||||
Repo.delete(group_account)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking group_account changes.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> change_group_account(group_account)
|
||||
%Ecto.Changeset{source: %GroupAccount{}}
|
||||
|
||||
"""
|
||||
def change_group_account(%GroupAccount{} = group_account) do
|
||||
GroupAccount.changeset(group_account, %{})
|
||||
end
|
||||
|
||||
alias Eventos.Accounts.GroupRequest
|
||||
|
||||
@doc """
|
||||
Returns the list of group_request.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> list_group_requests()
|
||||
[%GroupRequest{}, ...]
|
||||
|
||||
"""
|
||||
def list_group_requests do
|
||||
Repo.all(GroupRequest)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single group_request.
|
||||
|
||||
Raises `Ecto.NoResultsError` if the Group request does not exist.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_group_request!(123)
|
||||
%GroupRequest{}
|
||||
|
||||
iex> get_group_request!(456)
|
||||
** (Ecto.NoResultsError)
|
||||
|
||||
"""
|
||||
def get_group_request!(id), do: Repo.get!(GroupRequest, id)
|
||||
|
||||
@doc """
|
||||
Creates a group_request.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> create_group_request(%{field: value})
|
||||
{:ok, %GroupRequest{}}
|
||||
|
||||
iex> create_group_request(%{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def create_group_request(attrs \\ %{}) do
|
||||
%GroupRequest{}
|
||||
|> GroupRequest.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Updates a group_request.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> update_group_request(group_request, %{field: new_value})
|
||||
{:ok, %GroupRequest{}}
|
||||
|
||||
iex> update_group_request(group_request, %{field: bad_value})
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def update_group_request(%GroupRequest{} = group_request, attrs) do
|
||||
group_request
|
||||
|> GroupRequest.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Deletes a GroupRequest.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> delete_group_request(group_request)
|
||||
{:ok, %GroupRequest{}}
|
||||
|
||||
iex> delete_group_request(group_request)
|
||||
{:error, %Ecto.Changeset{}}
|
||||
|
||||
"""
|
||||
def delete_group_request(%GroupRequest{} = group_request) do
|
||||
Repo.delete(group_request)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking group_request changes.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> change_group_request(group_request)
|
||||
%Ecto.Changeset{source: %GroupRequest{}}
|
||||
|
||||
"""
|
||||
def change_group_request(%GroupRequest{} = group_request) do
|
||||
GroupRequest.changeset(group_request, %{})
|
||||
end
|
||||
end
|
||||
25
lib/eventos/accounts/group.ex
Normal file
25
lib/eventos/accounts/group.ex
Normal file
@@ -0,0 +1,25 @@
|
||||
defmodule Eventos.Accounts.Group do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Eventos.Accounts.{Group, Account, GroupAccount, GroupRequest}
|
||||
|
||||
|
||||
schema "groups" do
|
||||
field :description, :string
|
||||
field :suspended, :boolean, default: false
|
||||
field :title, :string
|
||||
field :uri, :string
|
||||
field :url, :string
|
||||
many_to_many :accounts, Account, join_through: GroupAccount
|
||||
has_many :requests, GroupRequest
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(%Group{} = group, attrs) do
|
||||
group
|
||||
|> cast(attrs, [:title, :description, :suspended, :url, :uri])
|
||||
|> validate_required([:title, :description, :suspended, :url, :uri])
|
||||
end
|
||||
end
|
||||
21
lib/eventos/accounts/group_account.ex
Normal file
21
lib/eventos/accounts/group_account.ex
Normal file
@@ -0,0 +1,21 @@
|
||||
defmodule Eventos.Accounts.GroupAccount do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Eventos.Accounts.{GroupAccount, Account, Group}
|
||||
|
||||
@primary_key false
|
||||
schema "group_accounts" do
|
||||
field :role, :integer
|
||||
belongs_to :group, Group
|
||||
belongs_to :account, Account
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(%GroupAccount{} = group_account, attrs) do
|
||||
group_account
|
||||
|> cast(attrs, [:role])
|
||||
|> validate_required([:role])
|
||||
end
|
||||
end
|
||||
20
lib/eventos/accounts/group_request.ex
Normal file
20
lib/eventos/accounts/group_request.ex
Normal file
@@ -0,0 +1,20 @@
|
||||
defmodule Eventos.Accounts.GroupRequest do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Eventos.Accounts.{GroupRequest}
|
||||
|
||||
schema "group_requests" do
|
||||
field :state, :integer
|
||||
field :group_id, :integer
|
||||
field :account_id, :integer
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(%GroupRequest{} = group_request, attrs) do
|
||||
group_request
|
||||
|> cast(attrs, [:state])
|
||||
|> validate_required([:state])
|
||||
end
|
||||
end
|
||||
43
lib/eventos/accounts/user.ex
Normal file
43
lib/eventos/accounts/user.ex
Normal file
@@ -0,0 +1,43 @@
|
||||
defmodule Eventos.Accounts.User do
|
||||
use Ecto.Schema
|
||||
use Coherence.Schema
|
||||
import Ecto.Changeset
|
||||
alias Eventos.Accounts.{User}
|
||||
|
||||
|
||||
schema "users" do
|
||||
field :email, :string
|
||||
field :role, :integer, default: 0
|
||||
field :username, :string
|
||||
field :account_id, :integer
|
||||
|
||||
coherence_schema()
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
def changeset(user, attrs, :password) do
|
||||
user
|
||||
|> cast(attrs, ~w(password password_confirmation reset_password_token reset_password_sent_at))
|
||||
|> validate_coherence_password_reset(attrs)
|
||||
end
|
||||
|
||||
def changeset(user, attrs, :registration) do
|
||||
user
|
||||
|> cast(attrs, [:username, :email] ++ coherence_fields())
|
||||
|> validate_required([:username, :email])
|
||||
|> validate_format(:email, ~r/@/)
|
||||
|> unique_constraint(:username)
|
||||
|> validate_coherence(attrs)
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(%User{} = user, attrs) do
|
||||
user
|
||||
|> cast(attrs, [:username, :email, :password_hash, :role] ++ coherence_fields())
|
||||
|> validate_required([:username, :email])
|
||||
|> unique_constraint(:username)
|
||||
|> validate_format(:email, ~r/@/)
|
||||
|> validate_coherence(attrs)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user