Darkpingouin

Darkpingouin

Activate / Deactivate scopes in router from config

Hello,

So I have an API with a config file and several scopes in my router. I was wondering if it would be possible to disable / enable a specific scope from the config file. So that I wouldn’t have to recompile the project to activate or deactivate some routes.

Example :slight_smile:

scope “/scope1” do
pipe_through [:authenticate_user, :ensure_admin]
#SOME_ROUTES
end

scope “/scope2” do
pipe_through [:authenticate_user, :ensure_admin]
#SOME_ROUTES
end

Would it be possible to put something in the config.exs that tells the router to block the scope1 ?

Thank you in advance for your help.

Marked As Solved

Darkpingouin

Darkpingouin

Found a way, I did a specific plug that checks the variable in the config file :

def call(conn, _default) do
  if Application.get_env(:api, ApiWeb.Endpoint)[:hasAccess] do
     conn
  else
     send_resp(conn, 403, "You do not have access.")
     |> halt()
  end
end

Then I just call this plug in a pipeline in the router and I tell my scope to run through the pipeline.

Thanks a lot for the suggestion.

Also Liked

LostKobrakai

LostKobrakai

So you cannot make the router stop matching those routes – the phoenix router works by creating one big pattern match to select the route, which happens at compile time. Changing that therefore requires fresh compilation.

What you can do at runtime however is have an plug (or pipeline), which stops requests from being further processed.

Where Next?

Popular in Questions Top

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
sabri
Can someone explain the settings of pool_size of Ecto in config file? and what is the recommend size? Thanks
New
Mooodi
Given a string, how can I get access to its character by index? Enum.at("my_string", 2) doesn't work. Or rather, not char, but a substr...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

Other popular topics Top

sergio
In Ruby, I can go: User.find_by(email: "foobar@email.com").update(email: "hello@email.com") How can I do something similar in Elixir? ...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
magnetic
Hey :wave:t3: Elixir community, I’ve been learning Elixir, and working on some side projects. My editor of choice is VSCode, and althoug...
New

We're in Beta

About us Mission Statement