Skip to content

Commit a1e5a66

Browse files
refactor with Account context
1 parent 9d9d65c commit a1e5a66

File tree

6 files changed

+41
-21
lines changed

6 files changed

+41
-21
lines changed

lib/pointing_party/user.ex renamed to lib/pointing_party/account.ex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
defmodule PointingParty.User do
1+
defmodule PointingParty.Account do
22
use Ecto.Schema
33
import Ecto.Changeset
4-
alias PointingParty.User
4+
alias PointingParty.Account
55

6-
schema "users" do
6+
schema "accounts" do
77
field :username, :string
88
end
99

1010
def create(attrs) do
11-
changeset = changeset(%User{}, attrs)
11+
changeset = changeset(%Account{}, attrs)
1212
if changeset.valid? do
13-
user = apply_changes(changeset)
14-
{:ok, user}
13+
account = apply_changes(changeset)
14+
{:ok, account}
1515
else
1616
{:error, %{changeset | action: :insert}}
1717
end
1818
end
1919

2020
@doc false
21-
def changeset(user, attrs \\ %{}) do
22-
user
21+
def changeset(account, attrs \\ %{}) do
22+
account
2323
|> cast(attrs, [:username])
2424
|> validate_required([:username])
2525
end

lib/pointing_party/account/auth.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defmodule PointingParty.Account.Auth do
2+
alias PointingParty.Account
3+
def login(params) do
4+
Account.create(params)
5+
end
6+
end
Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
11
defmodule PointingPartyWeb.CardController do
22
use PointingPartyWeb, :controller
3-
plug :authenticate_user
43
alias PointingParty.Card
54

65
def index(conn, _params) do
76
# temporary, just to get something on the page for now
87
card = Card.get!(1)
98
render(conn, "index.html", card: card)
109
end
11-
12-
def authenticate_user(conn, _params) do
13-
case get_session(conn, :username) do
14-
nil -> redirect(conn, to: "/login") |> halt()
15-
username -> assign(conn, :username, username)
16-
end
17-
end
1810
end

lib/pointing_party_web/controllers/session_controller.ex

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
defmodule PointingPartyWeb.SessionController do
22
use PointingPartyWeb, :controller
3-
alias PointingParty.User
3+
alias PointingParty.Account.Auth
4+
alias PointingParty.Account
45

56
def new(conn, _params) do
6-
changeset = User.changeset(%User{})
7+
changeset = Account.changeset(%Account{})
78
render(conn, "new.html", changeset: changeset)
89
end
910

1011
def create(conn, params) do
11-
case User.create(params["user"]) do
12-
{:ok, user} ->
13-
put_session(conn, :username, user.username)
12+
case Auth.login(params["account"]) do
13+
{:ok, account} ->
14+
put_session(conn, :username, account.username)
1415
|> redirect(to: "/cards") |> halt()
1516
{:error, changeset} ->
1617
render(conn, "new.html", changeset: changeset)

lib/pointing_party_web/plugs/auth.ex

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
defmodule PointingPartyWeb.Plugs.Auth do
2+
import Plug.Conn
3+
import Phoenix.Controller
4+
5+
def init(default), do: default
6+
7+
def call(conn, _default) do
8+
case authenticate(conn) do
9+
nil -> redirect(conn, to: "/login") |> halt()
10+
username -> assign(conn, :username, username)
11+
end
12+
end
13+
14+
defp authenticate(conn) do
15+
get_session(conn, :username)
16+
end
17+
end

lib/pointing_party_web/router.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ defmodule PointingPartyWeb.Router do
1919
post "/login", SessionController, :create
2020
delete "/logout", SessionController, :delete
2121
get "/", PageController, :index
22+
end
23+
24+
scope "/", PointingPartyWeb do
25+
pipe_through [:browser, PointingPartyWeb.Plugs.Auth]
2226
get "/cards", CardController, :index
2327
end
2428

0 commit comments

Comments
 (0)