Проблема области действия маршрутизатора Phoenix - PullRequest
0 голосов
/ 07 ноября 2018

Как я могу сделать так, чтобы я отправлял запрос GET в api / events и получал только публичные события, но если я отправляю токен аутентификации, то я получаю события пользователя? В основном, используя тот же маршрут, но возвращая что-то другое, если вошел пользователь. Я считаю, что это должно что-то делать с маршрутизатором, если я отправлю только в / api scope, у него никогда не будет пользователя, но если я отправлю [: api,: jwt_authenticated] без токена, то это, очевидно, говорит, что я не вошли в. Я пытался сделать отдельное определение для возврата, если не вошел в систему, но тот же результат

  scope "/api", DotooAppWeb do
pipe_through(:api)
get("/users", UserController, :index_not_logged)
post("/users", UserController, :create)
get("/events", EventController, :index_not_logged)

scope "/auth" do
  post("/identity/callback", AuthenticationController, :identity_callback)
end

pipe_through(:jwt_authenticated)

resources("/users", UserController, only: [:index, :create, :show, :update, :delete])
resources("/events", EventController, only: [:index, :create, :show, :update, :delete])
end

Есть ли способ обойти это? Я следовал этой статье в основном для настройки моей аутентификации: http://blog.nathansplace.co.uk/2018/ueberauth-and-guardian

1 Ответ

0 голосов
/ 08 ноября 2018

Я не думаю, что это должно происходить в маршрутизаторе, хотя технически вы могли бы заставить его работать.

Если ваша мотивация состоит в том, чтобы разделить логику для обоих этих случаев, вы можете использовать функцию UserController.index, просто проверяя, вошел ли пользователь в систему, а затем делегируйте функции, которые извлекают публичные / пользовательские события. Он также обладает тем преимуществом, что он очень прозрачен, поскольку вся логика, определяющая, что возвращает конечная точка, находится в одном месте.

Надеюсь, это поможет!

...