BryanJBryce

BryanJBryce

I realize this is pushing the boundaries of tested space for this library, but I’ve got two Auth resources (Admin and User, one is global the other schema-based both with their own token tables) and I’m trying to figure out how to use the generate UI with them, but have them be separated. The default when you do that is this fun UI:

I tried this:

 scope "/admin", AppWeb do
    pipe_through :browser

    auth_routes AdminAuthController, App.Accounts.Admin,
      path: "/admin/auth",
      sign_in_path: "/admin/sign-in",
      register_path: nil,
      reset_path: "/admin/reset"
  end
  scope "/", AppWeb do
    pipe_through :browser

    # User authentication routes
    auth_routes AuthController, App.Accounts.User,
      path: "/auth",
      sign_in_path: "/sign-in",
      register_path: "/register",
      reset_path: "/reset"

No dice:

== Compilation error in file lib/app_web/router.ex ==
** (ArgumentError) AshAuthentication.Phoenix.StrategyRouter has already been forwarded to. A module can only be forwarded a single time
(phoenix 1.7.18) lib/phoenix/router/scope.ex:87: Phoenix.Router.Scope.register_forwards/3
(phoenix 1.7.18) lib/phoenix/router/scope.ex:58: Phoenix.Router.Scope.route/8
lib/app_web/router.ex:74: (module)

Showing Posts 1 to 5

zachdaniel

zachdaniel

Creator of Ash

:thinking: A module can only be forwarded to a single time??? This is news to me :cry:

Looking into it there are certain kinds of workarounds that could be done:

https://github.com/graphql-elixir/plug_graphql/issues/7

but honestly nothing I can think of that is something that you could apply yourself in this situation. I would first really like to understand why you can’t forward to the same plug multiple times from different routes??

BryanJBryce

BryanJBryce OP

Right?!

jimsynz

jimsynz

Ash Core Team

that is so goddamn weird.

zachdaniel

zachdaniel

Creator of Ash

I’ve pushed something up to main that you can try.

First define a plug that wraps AshAuthentication.Phoenix.StrategyRouter like so:

defmodule MyPlugThatShouldNotBeNecessary do
  defdelegate init(opts), to: AshAuthentication.Phoenix.StrategyRouter
  defdelegate call(conn, opts), to: AshAuthentication.Phoenix.StrategyRouter
end

then in your second call to auth_routes add strategy_router_plug: MyPlugThatShouldNotBeNecessary

This seems like a very strange limitation, but this should get you around it. If you wouldn’t mind, a PR with docs for this or an issue reminding us to add some docs around it would be great.

BryanJBryce

BryanJBryce OP

I’ll get that done :saluting_face:

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews