2018-10-23に更新

Phoenixのex_adminでueberauthの認証

Phoenixでex_adminをueberauthを使って行う。
基本的には

Elixir/Phoenixにおけるueberauth(認証)とex_admin(管理画面)の連携方法

の解説通りでいいのだが、一部情報が古いので現在の対応方法を記載。

current_user_nameはログインしていないとエラーになるので下記のように修正。

  def current_user_name(conn) do
    user = current_user(conn)
    if user do
      user.name
    else
      ''
    end
  end

あと現在はconfigのauthorizeはなくなった。
ExAdmin.Authenticationの書き方と同様にできるようになったので下記をconn.exに追記。
コントローラによって処理を分けたいならAnyの部分を変えれば良い。

defimpl ExAdmin.Authorization, for: Any do
  def authorize_query(_, _, query, _, _), do: query
  def authorize_action(resource, conn, action) do
    App.UserAuth.check_logged_in(conn, action, resource)
  end
end

あとuser_auth.exのcheck_logged_inだが、identityが必要ならつける。

  def check_logged_in(conn, _action, _resource_model) do
    login_url = auth_path(conn, :request, "identity")
    if conn.request_path != login_url && !logged_in?(conn) do
      conn |> redirect(to: login_url)
    end
    true
  end
ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント