This repository was archived by the owner on Sep 27, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 141
Expand file tree
/
Copy pathuser_controller.ex
More file actions
52 lines (40 loc) · 1.45 KB
/
user_controller.ex
File metadata and controls
52 lines (40 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
defmodule RealWorldWeb.UserController do
use RealWorldWeb, :controller
use RealWorldWeb.GuardedController
alias RealWorld.Accounts.{Auth, Users}
action_fallback(RealWorldWeb.FallbackController)
plug(Guardian.Plug.EnsureAuthenticated when action in [:current_user, :update])
def create(conn, %{"user" => user_params}, _) do
case Auth.register(user_params) do
{:ok, user} ->
{:ok, jwt, _full_claims} = RealWorldWeb.Guardian.encode_and_sign(user, %{}, token_type: :token)
conn
|> put_status(:created)
|> render("show.json", jwt: jwt, user: user)
{:error, changeset} ->
render(conn, RealWorldWeb.ChangesetView, "error.json", changeset: changeset)
end
end
def current_user(conn, _params, user) do
jwt = RealWorldWeb.Guardian.Plug.current_token(conn)
if user != nil do
render(conn, "show.json", jwt: jwt, user: user)
else
conn
|> put_status(:not_found)
|> render(RealWorldWeb.ErrorView, "404.json", [])
end
conn
|> put_status(:ok)
|> render("show.json", jwt: jwt, user: user)
end
def update(conn, %{"user" => user_params}, user) do
jwt = RealWorldWeb.Guardian.Plug.current_token(conn)
case Users.update_user(user, user_params) do
{:ok, user} ->
render(conn, "show.json", jwt: jwt, user: user)
{:error, changeset} ->
render(conn, RealWorldWeb.ChangesetView, "error.json", changeset: changeset)
end
end
end