Skip to content

Instantly share code, notes, and snippets.

@tispratik
Created November 29, 2015 02:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tispratik/0e990bc5e3ec796b36ff to your computer and use it in GitHub Desktop.
Save tispratik/0e990bc5e3ec796b36ff to your computer and use it in GitHub Desktop.
defmodule Myapp.Domain do
import Plug.Conn
import Ecto.Model
@doc false
def init(opts), do: opts
@doc false
def call(conn, _opts) do
IO.inspect conn
site_obj = Myapp.Repo.get_by(Myapp.Site, domain: conn.host)
conn
|> put_private(:site_obj, site_obj)
end
end
defmodule Myapp.Endpoint do
...
...
plug Myapp.Domain
plug Myapp.Router
end
defmodule Myapp.RegistrationController do
use Myapp.Web, :controller
alias Myapp.User
alias Myapp.UserSite
# plug :scrub_params, "user" when action in [:create]
def new(conn, _params) do
changeset = User.changeset(%User{})
render conn, changeset: changeset
end
def create(conn, %{"user" => user_params}) do
user_changeset = User.changeset(%User{}, user_params)
if user_changeset.valid? do
Repo.transaction fn ->
user = Repo.insert!(user_changeset)
user_site = Ecto.Model.build(user, :user_sites, site: site_id(conn))
Repo.insert!(user_site)
conn
|> put_flash(:info, "Your account was created")
|> put_session(:current_user, user)
|> redirect(to: "/")
end
else
conn
|> render("new.html", changeset: user_changeset)
end
end
end
defmodule Myapp.RegistrationControllerTest do
use Myapp.ConnCase
alias Myapp.Site
@valid_attrs %{email: "a@a.com", passwd: "Abcdef123", passwd_confirmation: "Abcdef123"}
@invalid_attrs %{}
setup do
Repo.insert!(%Site{name: "Abc", slug: "abc", domain: "abc.com", license: "123", address: "Abc", email: "abc@abc.com", phone1: "123-456-7890"})
conn = %{conn() | host: "abc.com"}
{:ok, conn: conn}
end
test "creates resource and redirects when data is valid", %{conn: conn} do
# conn = post conn(), "abc.com/register", user: @valid_attrs
conn = post conn, registration_path(conn, :create), user: @valid_attrs
assert redirected_to(conn) == "/"
# assert Repo.get_by(User, @valid_attrs)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment