File size: 3,086 Bytes
3f219b5
 
26f4775
3f219b5
b039812
d77a9fd
 
 
 
 
3f219b5
d77a9fd
 
26f4775
d77a9fd
 
 
 
 
 
 
3f219b5
d77a9fd
 
 
 
3f219b5
d77a9fd
 
 
 
 
c77c303
d77a9fd
 
 
 
c77c303
d77a9fd
 
b039812
 
 
 
 
3f219b5
b039812
 
3f219b5
b039812
d77a9fd
26f4775
 
 
3f219b5
26f4775
 
 
3f219b5
26f4775
 
 
 
 
 
 
 
 
c77c303
 
 
 
 
 
 
 
3f219b5
26f4775
 
4d43dfd
 
26f4775
3f219b5
26f4775
 
d4a4157
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
94
95
96
97
98
99
100
101
102
103
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 "/" do
    pipe_through [:browser, :require_authenticated_user]

    import Phoenix.LiveDashboard.Router

    live_dashboard "/dashboard", metrics: MedicodeWeb.Telemetry
  end

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

    get "/transcription/reports/:id", TranscriptionReportsController, :show

    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 "/", TranscriptionsLive.Show
      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