Skip to content

Commit cf9be85

Browse files
committed
refactor: extract common auth logic into get_authenticated_user helper
1 parent 720f851 commit cf9be85

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

lib/algora_web/controllers/user_auth.ex

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,44 +19,47 @@ defmodule AlgoraWeb.UserAuth do
1919
end
2020

2121
def on_mount(:ensure_authenticated, _params, session, socket) do
22-
case session do
23-
%{"user_id" => user_id} ->
24-
new_socket =
25-
Phoenix.Component.assign_new(socket, :current_user, fn ->
26-
Accounts.get_user!(user_id)
27-
end)
22+
case get_authenticated_user(session, socket) do
23+
{:ok, user} ->
24+
{:cont, Phoenix.Component.assign_new(socket, :current_user, fn -> user end)}
2825

29-
case new_socket.assigns.current_user do
30-
%Accounts.User{} ->
31-
{:cont, new_socket}
26+
{:error, :unauthenticated} ->
27+
{:halt, redirect_require_login(socket)}
28+
end
29+
end
3230

33-
nil ->
34-
{:halt, redirect_require_login(socket)}
31+
def on_mount(:ensure_admin, _params, session, socket) do
32+
case get_authenticated_user(session, socket) do
33+
{:ok, user} ->
34+
if not Accounts.admin?(user) do
35+
raise(AlgoraWeb.NotFoundError)
3536
end
3637

37-
%{} ->
38+
{:cont, Phoenix.Component.assign_new(socket, :current_user, fn -> user end)}
39+
40+
{:error, :unauthenticated} ->
3841
{:halt, redirect_require_login(socket)}
3942
end
40-
rescue
41-
Ecto.NoResultsError -> {:halt, redirect_require_login(socket)}
4243
end
4344

44-
def on_mount(:ensure_admin, _params, session, socket) do
45+
defp get_authenticated_user(session, socket) do
4546
case session do
4647
%{"user_id" => user_id} ->
47-
user = Accounts.get_user!(user_id)
48+
new_socket = Phoenix.Component.assign_new(socket, :current_user, fn -> Accounts.get_user!(user_id) end)
4849

49-
if not Accounts.admin?(user) do
50-
raise(AlgoraWeb.NotFoundError)
51-
end
50+
case new_socket.assigns.current_user do
51+
%Accounts.User{} = user ->
52+
{:ok, user}
5253

53-
{:cont, socket}
54+
nil ->
55+
{:error, :unauthenticated}
56+
end
5457

5558
%{} ->
56-
{:halt, redirect_require_login(socket)}
59+
{:error, :unauthenticated}
5760
end
5861
rescue
59-
Ecto.NoResultsError -> {:halt, redirect_require_login(socket)}
62+
Ecto.NoResultsError -> {:error, :unauthenticated}
6063
end
6164

6265
defp redirect_require_login(socket) do

0 commit comments

Comments
 (0)