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は誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント