Thank you very much for your time and very neat explanation.
One small dout
My current router is like this
scope “/admin”, LogisticsWeb.Admin, as: :admin do
pipe_through [:browser, :admin, LogisticsWeb.Plugs.AuthenticateAdmin]
get "/", DashboardController, :index
resources "/admins", AdminController
get "/locations", LocationsController, :show
get "/locations/add", LocationsController, :add
post "/locations/add", LocationsController, :create
get "/products", ProductsController, :show
get "/product/add", ProductsController, :add
post "/products/add", ProductsController, :create_product
get "/barcodes", ProductsController, :show_barcodes
get "/barcode/add", ProductsController, :add_barcode
post "/barcode/add", ProductsController, :create_barcode
end
I am changing like this. Is this a proper way to achieve this?
pipeline :ensure_barcode_routes_authorized do
plug MyAppWeb.AuthorizationPlug, resource: :barcode_routes
end
pipeline :ensure_location_routes_authorized do
plug MyAppWeb.AuthorizationPlug, resource: :location_routes
end
scope "/admin", LogisticsWeb.Admin, as: :admin do
pipe_through [:browser, :admin, LogisticsWeb.Plugs.AuthenticateAdmin]
get "/", DashboardController, :index
resources "/admins", AdminController
end
scope "/admin/location", LogisticsWeb.Admin, as: :admin do
pipe_through [:browser, :admin, LogisticsWeb.Plugs.AuthenticateAdmin, :ensure_location_routes_authorized]
get "/locations", LocationsController, :show
get "/locations/add", LocationsController, :add
post "/locations/add", LocationsController, :create
end
scope "/admin/barcodes", LogisticsWeb.Admin, as: :admin do
pipe_through [:browser, :admin, LogisticsWeb.Plugs.AuthenticateAdmin, :ensure_barcode_routes_authorized]
get "/barcodes", ProductsController, :show_barcodes
get "/barcode/add", ProductsController, :add_barcode
post "/barcode/add", ProductsController, :create_barcode
end






















