View Source AshAuthentication.Phoenix.Router (ash_authentication_phoenix v2.0.0)

Phoenix route generation for AshAuthentication.

Using this module imports the macros in this module and the plug functions from AshAuthentication.Phoenix.Plug.

Usage

Adding authentication to your live-view router is very simple:

defmodule MyAppWeb.Router do
  use MyAppWeb, :router
  use AshAuthentication.Phoenix.Router

  pipeline :browser do
    # ...
    plug(:load_from_session)
  end

  pipeline :api do
    # ...
    plug(:load_from_bearer)
  end

  scope "/", MyAppWeb do
    pipe_through :browser
    sign_in_route
    sign_out_route AuthController
    auth_routes_for MyApp.Accounts.User, to: AuthController
    reset_route
  end

Summary

Types

Options that can be passed to auth_routes_for.

A sub-path if required. Defaults to /auth.

Any options which should be passed to the generated scope.

The controller which will handle success and failure.

Functions

Generates the routes needed for the various strategies for a given AshAuthentication resource.

Generates a generic, white-label password reset page using LiveView and the components in AshAuthentication.Phoenix.Components.

Generates a generic, white-label sign-in page using LiveView and the components in AshAuthentication.Phoenix.Components.

Generates a sign-out route which points to the sign_out action in your auth controller.

Types

@type auth_route_options() :: [path_option() | to_option() | scope_opts_option()]

Options that can be passed to auth_routes_for.

@type path_option() :: {:path, String.t()}

A sub-path if required. Defaults to /auth.

@type scope_opts_option() :: {:scope_opts, keyword()}

Any options which should be passed to the generated scope.

@type to_option() :: {:to, AshAuthentication.Phoenix.Controller.t()}

The controller which will handle success and failure.

Functions

Link to this macro

auth_routes_for(resource, opts)

View Source (macro)
@spec auth_routes_for(Ash.Resource.t(), auth_route_options()) :: Macro.t()

Generates the routes needed for the various strategies for a given AshAuthentication resource.

This is required if you wish to use authentication.

Options

  • to - a module which implements the AshAuthentication.Phoenix.Controller behaviour. This is required.
  • path - a string (starting with "/") wherein to mount the generated routes.
  • scope_opts - any options to pass to the generated scope.

Example

scope "/", DevWeb do
  auth_routes_for(MyApp.Accounts.User,
    to: AuthController,
    path: "/authentication",
    scope_opts: [host: "auth.example.com"]
  )
end
Link to this macro

reset_route(opts \\ [])

View Source (macro)
@spec reset_route(
  opts :: [
    {:path, String.t()}
    | {:live_view, module()}
    | {:as, atom()}
    | {:overrides, [module()]}
    | {:on_mount, [module()]}
    | {atom(), any()}
  ]
) :: Macro.t()

Generates a generic, white-label password reset page using LiveView and the components in AshAuthentication.Phoenix.Components.

Available options are:

  • path the path under which to mount the live-view. Defaults to "/password-reset".
  • live_view the name of the live view to render. Defaults to AshAuthentication.Phoenix.ResetLive.
  • as which is passed to the generated live route. Defaults to :auth.
  • overrides specify any override modules for customisation. See AshAuthentication.Phoenix.Overrides for more information. all other options are passed to the generated scope.

This is completely optional.

Link to this macro

sign_in_route(opts \\ [])

View Source (macro)
@spec sign_in_route(
  opts :: [
    {:path, String.t()}
    | {:live_view, module()}
    | {:as, atom()}
    | {:overrides, [module()]}
    | {:on_mount, [module()]}
    | {atom(), any()}
  ]
) :: Macro.t()

Generates a generic, white-label sign-in page using LiveView and the components in AshAuthentication.Phoenix.Components.

This is completely optional.

Available options are:

  • path the path under which to mount the sign-in live-view. Defaults to "/sign-in".

  • register_path - the path under which to mount the password strategy's registration live-view. If not set, and registration is supported, registration will use a dynamic toggle and will not be routeable to.

  • reset_path - the path under which to mount the password strategy's password reset live-view. If not set, and password reset is supported, password reset will use a dynamic toggle and will not be routeable to.

  • live_view the name of the live view to render. Defaults to AshAuthentication.Phoenix.SignInLive.

  • as which is passed to the generated live route. Defaults to :auth.

  • otp_app the otp app or apps to find authentication resources in. Pulls from the socket by default.

  • overrides specify any override modules for customisation. See AshAuthentication.Phoenix.Overrides for more information.

    all other options are passed to the generated scope.

Link to this macro

sign_out_route(auth_controller, path \\ "/sign-out", opts \\ [])

View Source (macro)
@spec sign_out_route(AshAuthentication.Phoenix.Controller.t(), path :: String.t(), [
  {:as, atom()} | {atom(), any()}
]) :: Macro.t()

Generates a sign-out route which points to the sign_out action in your auth controller.

This is optional, but you probably want it.