hariharasudhan94

hariharasudhan94

let say i have routes like follow
web routes:
http://localhost:4000/department/:id/show
http://localhost:4000/department/:dept_id/user/:user_id
api routes:
http://localhost:4000/api/v1/department/:id/show
http://localhost:4000/api/v1/department/:dept_id/user/:user_id
and my module plug looks like

def call(%Plug.Conn{ params: %{ "dept_id" => dept_id } } = conn, _params) do
  logged_in_user = Guardian.Plug.current_resource(conn)
  result = MemberRepo.findUserBelongsToDept(logged_in_user, dept_id)
  case result do
    {:ok, 1} ->
      conn #user belongs to group continue
    {:ok, 0} ->
      IO.puts "#{conn}"
      conn
      |> put_status(404)

    {:error, error}->
      conn
end

On those routes which i mentioned above i was checking whether the user belongs to the department or not using above plug. if not it returns {:ok, 0}

i want to render 404.html for webpage and json response for api calls within the plug , how can i achieve this?

Showing Posts 1 to 6

OvermindDL1

OvermindDL1

Easiest way is to call the error view render function with whatever code you want then halt() the pipeline. :slight_smile:

Probably more correct ways, but that would work.

hariharasudhan94

hariharasudhan94 OP

How can i check its halted or not , currently inside the call/2 i am doing like follow

    body = "oops not found"
    conn
    |> put_resp_content_type("application/json")
    |> send_resp(404, body)
    |> halt
Ankhers

Ankhers

You could write a controller test that looks something like the following

test "this thing halts", %{conn: conn} do
  conn = get(conn, some_path(conn, :index)
  assert conn.halted
end
chrismccord

chrismccord

Creator of Phoenix

this is the right answer :slight_smile:

def call(conn, _) do
  case logics(...) do
    :ok -> conn  
    :error ->
      conn
      |> Phoenix.Controller.render(MyApp.Web.ErrorView, :"404")
      |> halt()
  end
end

Passing an atom to Phoenix.Controller.render will handle the content negation and render the html/json/etc template.

10
Post #4
hariharasudhan94

hariharasudhan94 OP

when i am trying to pass halt in pipes like follow

conn
|> Phoenix.Controller.render(XXXX.Api.V1.ErrorView, :“404error”)
|> halt()

it continues to call another plug, why doesn’t it work, ?

hariharasudhan94

hariharasudhan94 OP

Mistake from my side only, this code works now :relaxed:

 conn = conn
            |>  Phoenix.Controller.render(XXXX.Api.V1.ErrorView, :"404error")
            |>  halt()
— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
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
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews