Skip to content

Commit 6426366

Browse files
committed
feat: redirect user to original URL on signing in
1 parent 547d3ce commit 6426366

File tree

4 files changed

+19
-13
lines changed

4 files changed

+19
-13
lines changed

lib/algora/integrations/github/github.ex

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,6 @@ defmodule Algora.Github do
2929
end
3030

3131
def authorize_url(data \\ nil) do
32-
# TODO: find out a way to set return_to w/o github complaining about redirect_uri mismatch
33-
34-
# redirect_query = if return_to, do: URI.encode_query(return_to: return_to)
35-
# redirect_uri = "#{AlgoraWeb.Endpoint.url()}/callbacks/github/oauth?#{redirect_query}"
36-
3732
redirect_uri = "#{AlgoraWeb.Endpoint.url()}/callbacks/github/oauth"
3833

3934
query =

lib/algora_web/controllers/oauth_callback_controller.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@ defmodule AlgoraWeb.OAuthCallbackController do
2020
%{info: info, primary_email: primary, emails: emails, token: token} = info,
2121
{:ok, user} <- Accounts.register_github_user(primary, info, emails, token) do
2222
conn =
23-
if params["return_to"] do
24-
put_session(conn, :user_return_to, params["return_to"])
25-
else
26-
conn
23+
case data[:return_to] do
24+
nil -> conn
25+
return_to -> put_session(conn, :user_return_to, return_to)
2726
end
2827

2928
conn

lib/algora_web/controllers/user_auth.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,13 @@ defmodule AlgoraWeb.UserAuth do
6363
end
6464

6565
defp redirect_require_login(socket) do
66-
LiveView.redirect(socket, to: ~p"/auth/login")
66+
redirect_url =
67+
case socket.private.connect_info.request_path do
68+
nil -> ~p"/auth/login"
69+
request_path -> ~p"/auth/login?#{%{return_to: request_path}}"
70+
end
71+
72+
LiveView.redirect(socket, to: redirect_url)
6773
end
6874

6975
@doc """

lib/algora_web/live/sign_in_live.ex

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ defmodule AlgoraWeb.SignInLive do
1010
Algora Console
1111
</h2>
1212
<.link
13-
href={Algora.Github.authorize_url()}
13+
href={@authorize_url}
1414
rel="noopener"
1515
class="mt-8 flex w-full justify-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-600 focus:outline-none focus:ring-2 focus:ring-indigo-400 focus:ring-offset-2"
1616
>
@@ -21,7 +21,13 @@ defmodule AlgoraWeb.SignInLive do
2121
"""
2222
end
2323

24-
def mount(_params, _session, socket) do
25-
{:ok, socket}
24+
def mount(params, _session, socket) do
25+
authorize_url =
26+
case params["return_to"] do
27+
nil -> Algora.Github.authorize_url()
28+
return_to -> Algora.Github.authorize_url(%{return_to: return_to})
29+
end
30+
31+
{:ok, assign(socket, authorize_url: authorize_url)}
2632
end
2733
end

0 commit comments

Comments
 (0)