Skip to content

Commit 77fe588

Browse files
committed
Fix auth namespace references and add controller routes
Namespace fixes: - Replace alias Beacon.Auth with alias Beacon.LiveAdmin.Auth in: oidc_controller.ex, dev_login_controller.ex, require_auth.ex, require_role.ex Route additions: - GET /auth/:provider → OIDCController.authorize - GET /auth/:provider/callback → OIDCController.callback - POST /auth/dev/login → DevLoginController.login - GET /auth/logout → OIDCController.logout New logout action in OIDCController: - Deletes session token from database - Clears _beacon_session cookie - Redirects to login page
1 parent ff118a8 commit 77fe588

5 files changed

Lines changed: 30 additions & 5 deletions

File tree

lib/beacon/live_admin/auth/dev_login_controller.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ defmodule Beacon.LiveAdmin.Auth.DevLoginController do
1212

1313
use Phoenix.Controller
1414

15-
alias Beacon.Auth
15+
alias Beacon.LiveAdmin.Auth
1616
alias Beacon.LiveAdmin.Auth.Config, as: AuthConfig
1717

1818
@doc """

lib/beacon/live_admin/auth/oidc_controller.ex

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ defmodule Beacon.LiveAdmin.Auth.OIDCController do
1616

1717
use Phoenix.Controller
1818

19-
alias Beacon.Auth
19+
alias Beacon.LiveAdmin.Auth
2020
alias Beacon.LiveAdmin.Auth.Config, as: AuthConfig
2121

2222
@doc """
@@ -84,6 +84,25 @@ defmodule Beacon.LiveAdmin.Auth.OIDCController do
8484
|> redirect(to: "/admin/auth/login")
8585
end
8686

87+
@doc """
88+
Logs out the user by deleting the session and clearing the cookie.
89+
"""
90+
def logout(conn, _params) do
91+
case conn.cookies["_beacon_session"] do
92+
nil -> :ok
93+
encoded_token ->
94+
case Base.url_decode64(encoded_token) do
95+
{:ok, token} -> Auth.delete_session(token)
96+
_ -> :ok
97+
end
98+
end
99+
100+
conn
101+
|> delete_resp_cookie("_beacon_session")
102+
|> put_flash(:info, "Signed out successfully.")
103+
|> redirect(to: "/admin/login")
104+
end
105+
87106
defp callback_url(conn, provider) do
88107
endpoint = Phoenix.Controller.endpoint_module(conn)
89108
endpoint.url() <> "/admin/auth/#{provider}/callback"

lib/beacon/live_admin/auth/plug/require_auth.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ defmodule Beacon.LiveAdmin.Auth.Plug.RequireAuth do
1616

1717
import Plug.Conn
1818

19-
alias Beacon.Auth
19+
alias Beacon.LiveAdmin.Auth
2020

2121
@impl true
2222
def init(opts), do: opts

lib/beacon/live_admin/auth/plug/require_role.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ defmodule Beacon.LiveAdmin.Auth.Plug.RequireRole do
2626

2727
import Plug.Conn
2828

29-
alias Beacon.Auth
29+
alias Beacon.LiveAdmin.Auth
3030

3131
@impl true
3232
def init(opts), do: opts

lib/beacon/live_admin/router.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,15 @@ defmodule Beacon.LiveAdmin.Router do
100100

101101
{_instance_name, session_name, session_opts} = Beacon.LiveAdmin.Router.__options__(pages, opts)
102102

103-
import Phoenix.Router, only: [get: 4]
103+
import Phoenix.Router, only: [get: 4, post: 4]
104104
import Phoenix.LiveView.Router, only: [live: 4, live_session: 3]
105105

106+
# Auth controller routes (OIDC + dev login + logout)
107+
get "/auth/:provider", Beacon.LiveAdmin.Auth.OIDCController, :authorize
108+
get "/auth/:provider/callback", Beacon.LiveAdmin.Auth.OIDCController, :callback
109+
post "/auth/dev/login", Beacon.LiveAdmin.Auth.DevLoginController, :login
110+
get "/auth/logout", Beacon.LiveAdmin.Auth.OIDCController, :logout
111+
106112
# Login route — pre-auth, separate live_session with minimal layout
107113
live_session :beacon_live_admin_login,
108114
root_layout: {Beacon.LiveAdmin.Auth.LoginLayout, :render} do

0 commit comments

Comments
 (0)