(UndefinedFunctionError) function Magnify.Web.Router.Helpers.session_path/2 - after installing Coherence

I just installed Coherence mix package and followed the installation steps as required but I navigate to my protected route I get the following error

(UndefinedFunctionError) function Magnify.Web.Router.Helpers.session_path/2 is undefined (module Magnify.Web.Router.Helpers is not available)

Not sure what this error means as I’m new to Elixir

Here is my router

defmodule MagnifyWeb.Router do
  use MagnifyWeb, :router
  use Coherence.Router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug Coherence.Authentication.Session
  end

  pipeline :protected do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug Coherence.Authentication.Session, protected: true
  end

  scope "/" do
    pipe_through :browser
    coherence_routes()
  end

  scope "/" do
    pipe_through :protected
    coherence_routes :protected
  end

  scope "/", MagnifyWeb do
    pipe_through :browser # Use the default browser stack
    get "/", HomeController, :index
    get "/about", AboutController, :index
  end

  scope "/", MagnifyWeb do
    pipe_through :protected
    # add protected resources below
    resources "/magnets", MagnetController
    #resources "/magnets", MagnifyWeb.MagnetController
  end

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

end

There is probably a typo somewhere in your code since elixir looks for Magnify.Web.Router.Helpers module, which should probably be called MagnifyWeb.Router.Helpers judging by the name of your router module MagnifyWeb.Router.

Try searching for session_path and Magnify.Web.Router.Helpers in your project.

I don’t think that is it, I tried searching for “Magnify.Web.Router.Helpers” and nothing comes up and when I search for “session_path” it’s just session_path and if I search for “MagnifyWeb.Router.Helpers” it correct

Is this the same project you already posted parts of your config?

There you have a line in the config:

  web_module: Magnify.Web,

But you are talking about MagnifyWeb everywhere else…

Perhaps coherence is confused by that.

Yea that was it, I guess coherence config did it incorrect thanks so much for the help was really stuck on this

Maybe you might be able to help with this, now when I navigate to my protected route “http://0.0.0.0:4000/magnets” I get redirected to “http://0.0.0.0:4000/sessions/new” as I’m not logged in but now my logo is not showing up

[info] GET /sessions/images/logo-dark.png
[debug] ** (Phoenix.Router.NoRouteError) no route found for GET /sessions/images/logo-dark.png (MagnifyWeb.Router)

I don’t understand why now it’s looking under “sessions”

Probably because you are giving a relative URL instead of an absolute, but without seeing your corresponding template I can not tell for sure.

It’s just a particle _header which has the following <img class="logo logo-dark" alt="logo" src="images/logo-dark.png" />

What is the correct way?

Well the correct way where probably to use the static_path/2 helper:

<img src="<%= static_path(@conn, "/images/logo-dark.png") %>" class="logo logo-dark">

Of course you need to make sure that @conn is available in that partial then, I’m not doing phoenix right now, so I’m not sure if its passed down the road implicitely…

1 Like

Thanks that was it