Current section
Files
Jump to
Current section
Files
lib/core/user/add_user/action.ex
defmodule Core.AddUser do
use Perspective.ActionRequest
@domain_event Core.UserAdded
defmodule Data do
use Vex.Struct
defstruct [:username, :password, :password_confirmation]
validates(:username, presence: true)
validates(:password, presence: true)
validates(:password_confirmation, &Data.matches_password_confirmation/2)
def matches_password_confirmation(password_confirmation, %{password: password}) do
case password_confirmation do
^password -> :ok
_no_match -> {:error, :password_and_password_confirmation_do_not_match}
end
end
end
validate_syntax(%{data: data}) do
Vex.errors(struct(Data, data))
end
authorize_request(%{actor_id: "user/anonymous"}) do
true
end
authorize_request(%{actor_id: _}) do
false
end
end