File size: 2,811 Bytes
3f219b5
 
26f4775
3f219b5
b039812
d77a9fd
 
 
 
 
3f219b5
d77a9fd
 
26f4775
d77a9fd
 
 
 
 
 
 
3f219b5
d77a9fd
 
 
 
3f219b5
d77a9fd
 
 
 
 
 
 
 
 
 
3f219b5
d77a9fd
 
b039812
 
 
 
 
3f219b5
b039812
 
3f219b5
b039812
d77a9fd
26f4775
 
 
3f219b5
26f4775
 
 
3f219b5
26f4775
 
 
 
 
 
 
 
 
3f219b5
26f4775
 
 
3f219b5
26f4775
 
31c052b
deecaf3
26f4775
 
 
3f219b5
26f4775
 
 
 
 
3f219b5
26f4775
 
 
 
d77a9fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
defmodule MedicodeWeb.Router do
  use MedicodeWeb, :router

  import MedicodeWeb.UserAuth
  import PhoenixStorybook.Router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_live_flash
    plug :put_root_layout, html: {MedicodeWeb.Layouts, :root}
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug :fetch_current_user
  end

  pipeline :api do
    plug :accepts, ["json"]
  end

  # Other scopes may use custom stacks.
  # scope "/api", MedicodeWeb do
  #   pipe_through :api
  # end

  # Enable LiveDashboard and Swoosh mailbox preview in development
  if Application.compile_env(:medicode, :dev_routes) do
    # If you want to use the LiveDashboard in production, you should put
    # it behind authentication and allow only admins to access it.
    # If your application does not have an admins-only section yet,
    # you can use Plug.BasicAuth to set up some basic authentication
    # as long as you are also using SSL (which you should anyway).
    import Phoenix.LiveDashboard.Router

    scope "/dev" do
      pipe_through :browser

      live_dashboard "/dashboard", metrics: MedicodeWeb.Telemetry
      forward "/mailbox", Plug.Swoosh.MailboxPreview
    end

    scope "/" do
      storybook_assets()
    end

    scope "/", MedicodeWeb do
      pipe_through :browser

      live_storybook("/storybook", backend_module: MedicodeWeb.Storybook)
    end
  end

  ## Authentication routes

  scope "/", MedicodeWeb do
    pipe_through [:browser, :redirect_if_user_is_authenticated]

    live_session :redirect_if_user_is_authenticated,
      on_mount: [{MedicodeWeb.UserAuth, :redirect_if_user_is_authenticated}] do
      live "/users/register", UserRegistrationLive, :new
      live "/users/log_in", UserLoginLive, :new
      live "/users/reset_password", UserForgotPasswordLive, :new
      live "/users/reset_password/:token", UserResetPasswordLive, :edit
    end

    post "/users/log_in", UserSessionController, :create
  end

  scope "/", MedicodeWeb do
    pipe_through [:browser, :require_authenticated_user]

    live_session :require_authenticated_user,
      on_mount: [{MedicodeWeb.UserAuth, :ensure_authenticated}] do
      live "/users/settings", UserSettingsLive, :edit
      live "/users/settings/confirm_email/:token", UserSettingsLive, :confirm_email
      live "/", HomeLive.Index
      live "/transcriptions/:id", TranscriptionsLive.Show
    end
  end

  scope "/", MedicodeWeb do
    pipe_through [:browser]

    delete "/users/log_out", UserSessionController, :delete

    live_session :current_user,
      on_mount: [{MedicodeWeb.UserAuth, :mount_current_user}] do
      live "/users/confirm/:token", UserConfirmationLive, :edit
      live "/users/confirm", UserConfirmationInstructionsLive, :new
    end
  end
end