Переопределить текущего пользователя по умолчанию на текущего пользователя Guardian с помощью Canary - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь внедрить Canary в свое приложение, и я столкнулся с проблемой. Документы (https://github.com/cpjk/canary#overriding -the-default-user ) говорят, что мне нужно иметь запись Ecto для текущего пользователя в conn.assigns.current_user. Поскольку я использую Guardian, мой текущий пользователь хранится в Guardian.Plug.current_resource(conn). Как лучше всего сообщить канарейке, что именно здесь я храню моего текущего пользователя?

Я не могу использовать config :canary, current_user: :my_user_key, потому что его нет даже в conn.assigns.

Помощь приветствуется!

1 Ответ

1 голос
/ 20 апреля 2020

Следуя этой статье , вы должны создать для этого Plug:

defmodule MyApp.Plug.CurrentUser do
  def init(opts), do: opts

  def call(conn, _opts) do
    current_user = Guardian.Plug.current_resource(conn)
    Plug.Conn.assign(conn, :current_user, current_user)
  end
end

и поместить его в конвейер маршрутизатора:

pipeline :require_login do
  plug Guardian.Plug.EnsureAuthenticated, handler: MyApp.GuardianErrorHandler
  plug MyApp.Plug.CurrentUser
end
...