diff --git a/config/dev.exs b/config/dev.exs index 56f047b..f6db328 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -26,6 +26,8 @@ config :sso_bsn, SsoBsnWeb.Endpoint, tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]} ] +config :sso_bsn, :session_domain, "localhost" + # ## SSL Support # # In order to use HTTPS in development, a self-signed diff --git a/lib/sso_bsn_web/controllers/openid/authorize_controller.ex b/lib/sso_bsn_web/controllers/openid/authorize_controller.ex index 3aa7442..bb799b4 100644 --- a/lib/sso_bsn_web/controllers/openid/authorize_controller.ex +++ b/lib/sso_bsn_web/controllers/openid/authorize_controller.ex @@ -7,8 +7,7 @@ defmodule SsoBsnWeb.Openid.AuthorizeController do alias Boruta.Oauth.Error alias Boruta.Oauth.ResourceOwner alias SsoBsnWeb.UserAuth - alias SsoBsnWeb.Openid.AuthorizeView - + def oauth_module, do: Application.get_env(:sso_bsn, :oauth_module, Boruta.Oauth) def authorize(%Plug.Conn{} = conn, _params) do diff --git a/lib/sso_bsn_web/controllers/user_session_controller.ex b/lib/sso_bsn_web/controllers/user_session_controller.ex index 0be717b..7b2fc0d 100644 --- a/lib/sso_bsn_web/controllers/user_session_controller.ex +++ b/lib/sso_bsn_web/controllers/user_session_controller.ex @@ -23,4 +23,13 @@ defmodule SsoBsnWeb.UserSessionController do |> put_flash(:info, "Logged out successfully.") |> UserAuth.log_out_user() end + + def check_auth(conn, _params) do + user = conn.assigns[:current_user] + conn + |> put_resp_header("X-Auth-Username", user.username) + |> json(%{ + username: user.username + }) + end end diff --git a/lib/sso_bsn_web/endpoint.ex b/lib/sso_bsn_web/endpoint.ex index 0abcd35..3cd102f 100644 --- a/lib/sso_bsn_web/endpoint.ex +++ b/lib/sso_bsn_web/endpoint.ex @@ -8,7 +8,8 @@ defmodule SsoBsnWeb.Endpoint do store: :cookie, key: "_sso_bsn_key", signing_salt: "2YoB6zeO", - same_site: "Lax" + same_site: "Lax", + domain: Application.compile_env(:sso_bsn, :session_domain) ] socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]] diff --git a/lib/sso_bsn_web/resource_owners.ex b/lib/sso_bsn_web/resource_owners.ex index 5a03d58..2f1291c 100644 --- a/lib/sso_bsn_web/resource_owners.ex +++ b/lib/sso_bsn_web/resource_owners.ex @@ -4,7 +4,6 @@ defmodule SsoBsnWeb.ResourceOwners do alias Boruta.Oauth.ResourceOwner alias SsoBsn.Accounts.User alias SsoBsn.Accounts - alias SsoBsn.Repo @impl Boruta.Oauth.ResourceOwners def get_by(username: username) do diff --git a/lib/sso_bsn_web/router.ex b/lib/sso_bsn_web/router.ex index 7c04f89..4391c57 100644 --- a/lib/sso_bsn_web/router.ex +++ b/lib/sso_bsn_web/router.ex @@ -74,6 +74,12 @@ defmodule SsoBsnWeb.Router do delete "/users/log_out", UserSessionController, :delete end + scope "/", SsoBsnWeb do + pipe_through [:api, :fetch_session, :fetch_current_user, :require_authenticated_user] + + get "/whoami", UserSessionController, :check_auth + end + # OIDC scope "/oauth", SsoBsnWeb.Oauth do