@@ -19,44 +19,47 @@ defmodule AlgoraWeb.UserAuth do
19
19
end
20
20
21
21
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 ) }
28
25
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
32
30
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 )
35
36
end
36
37
37
- % { } ->
38
+ { :cont , Phoenix.Component . assign_new ( socket , :current_user , fn -> user end ) }
39
+
40
+ { :error , :unauthenticated } ->
38
41
{ :halt , redirect_require_login ( socket ) }
39
42
end
40
- rescue
41
- Ecto.NoResultsError -> { :halt , redirect_require_login ( socket ) }
42
43
end
43
44
44
- def on_mount ( :ensure_admin , _params , session , socket ) do
45
+ defp get_authenticated_user ( session , socket ) do
45
46
case session do
46
47
% { "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 )
48
49
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 }
52
53
53
- { :cont , socket }
54
+ nil ->
55
+ { :error , :unauthenticated }
56
+ end
54
57
55
58
% { } ->
56
- { :halt , redirect_require_login ( socket ) }
59
+ { :error , :unauthenticated }
57
60
end
58
61
rescue
59
- Ecto.NoResultsError -> { :halt , redirect_require_login ( socket ) }
62
+ Ecto.NoResultsError -> { :error , :unauthenticated }
60
63
end
61
64
62
65
defp redirect_require_login ( socket ) do
0 commit comments