Hi everyone!
I’m actually working with ueberuath for google login, the app works with subdomains, and I had to add for each subdomain a URI in the google console to make it work (the subdomains work with their own router and controller), now I’m trying to handle the callbacks with the normal controller and when the request come from a subdomain I want to redirect to a subdomain router route but for some reason when I redirect it redirect me to the same controller so I never get into the other controller to continue the flow as I spected.
Normal controller
def callback(%{assigns: %{ueberauth_failure: _fails}} = conn, _params) do
IO.inspect(conn, label: "WRONG CALLBACK")
conn
|> put_flash(:error, "Failed to authenticate.")
|> redirect(to: "/")
end
def callback(
%{
assigns: %{ueberauth_auth: %{info: user, provider: provider}},
query_params: %{"state" => state},
state: state_required
} = conn,
_params
) do
IO.inspect(state_required, label: "WORKED ON AUTH")
conn
|> redirect(to: SubdomainRoutes.listeners_auth_path(conn, :callback, provider))
|> IO.inspect(label: "REDIRECT!")
end
def callback(
%{
assigns: %{ueberauth_auth: %{info: user, provider: provider}}
} = conn,
_params
) do
user_params =
user
|> Map.from_struct()
|> Map.put(:provider, provider)
%{user: user_params}
|> Accounts.find_or_create()
|> sign_in(conn)
end
Subdomain controller
def callback(%{assigns: %{ueberauth_failure: _fails}} = conn, _params) do
IO.inspect(conn, label: "REDIRECT FAILED")
conn
|> put_flash(:error, "Failed to authenticate.")
|> redirect(to: "/")
end
def callback(
%{
assigns: %{
ueberauth_auth: %{
info: %{email: email, name: name},
extra: %{raw_info: %{user: user}}
}
},
host: host
} = conn,
_params
) do
IO.inspect("", label: "REDIRECT SUCCESS")
authenticate_according_to_host(host, conn, user, email, name)
end
So when the callback uses the redirect it send me to the first callback which is the error clause instead of sending me to the callback in the other controller
Maybe anyone know how can I accomplish this?