feat(user): use gen auth for users

This commit is contained in:
Anhgelus Morhtuuzh 2025-08-14 20:49:11 +02:00
parent fbb65e77c0
commit c1385df0f9
Signed by: anhgelus
GPG key ID: 617773CACE89052C
36 changed files with 3256 additions and 129 deletions

View file

@ -1,6 +1,8 @@
defmodule LearningPhoenixWeb.Router do
use LearningPhoenixWeb, :router
import LearningPhoenixWeb.UserAuth
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
@ -8,6 +10,7 @@ defmodule LearningPhoenixWeb.Router do
plug :put_root_layout, html: {LearningPhoenixWeb.Layouts, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
plug :fetch_current_scope_for_user
end
pipeline :api do
@ -18,7 +21,6 @@ defmodule LearningPhoenixWeb.Router do
pipe_through :browser
get "/", PageController, :home
resources "/users", UserController
end
# Other scopes may use custom stacks.
@ -42,4 +44,32 @@ defmodule LearningPhoenixWeb.Router do
forward "/mailbox", Plug.Swoosh.MailboxPreview
end
end
## Authentication routes
scope "/", LearningPhoenixWeb do
pipe_through [:browser, :require_authenticated_user]
live_session :require_authenticated_user,
on_mount: [{LearningPhoenixWeb.UserAuth, :require_authenticated}] do
live "/users/settings", UserLive.Settings, :edit
live "/users/settings/confirm-email/:token", UserLive.Settings, :confirm_email
end
post "/users/update-password", UserSessionController, :update_password
end
scope "/", LearningPhoenixWeb do
pipe_through [:browser]
live_session :current_user,
on_mount: [{LearningPhoenixWeb.UserAuth, :mount_current_scope}] do
live "/users/register", UserLive.Registration, :new
live "/users/log-in", UserLive.Login, :new
live "/users/log-in/:token", UserLive.Confirmation, :new
end
post "/users/log-in", UserSessionController, :create
delete "/users/log-out", UserSessionController, :delete
end
end