Merge branch 'admin-users' into 'master'

feat: Make users adminable

See merge request mythic-insight/legendary!9
This commit is contained in:
Robert Prehn 2020-07-28 13:06:38 +00:00
commit 2141dd4686
5 changed files with 54 additions and 1 deletions

View file

@ -21,6 +21,16 @@ defmodule Auth.User do
timestamps() timestamps()
end end
def admin_changeset(user_or_changeset, attrs) do
role_list = Phoenix.json_library().decode!(Map.get(attrs, "roles"))
attrs = Map.put(attrs, "roles", role_list)
user_or_changeset
|> pow_user_id_field_changeset(attrs)
|> Changeset.cast(attrs, [:roles])
|> pow_extension_changeset(attrs)
end
def changeset(user_or_changeset, attrs) do def changeset(user_or_changeset, attrs) do
user_or_changeset user_or_changeset
|> pow_user_id_field_changeset(attrs) |> pow_user_id_field_changeset(attrs)

View file

@ -2,6 +2,14 @@ defmodule Auth.UserAdmin do
import Ecto.Query, only: [from: 2] import Ecto.Query, only: [from: 2]
alias Auth.{Repo,User} alias Auth.{Repo,User}
def create_changeset(schema, attrs) do
Auth.User.admin_changeset(schema, attrs)
end
def update_changeset(schema, attrs) do
Auth.User.admin_changeset(schema, attrs)
end
def widgets(_schema, _conn) do def widgets(_schema, _conn) do
user_count = user_count =
(from u in User, (from u in User,
@ -18,4 +26,26 @@ defmodule Auth.UserAdmin do
} }
] ]
end end
def index(_) do
[
id: nil,
email: nil,
roles: %{value: fn u -> Enum.join(u.roles, ", ") end},
display_name: nil,
homepage_url: nil,
email_confirmed_at: nil,
inserted_at: nil,
updated_at: nil,
]
end
def form_fields(_) do
[
email: nil,
roles: nil,
display_name: nil,
homepage_url: nil,
]
end
end end

View file

@ -17,6 +17,18 @@ defmodule Content.PostAdmin do
Content.Post.changeset(schema, attrs) Content.Post.changeset(schema, attrs)
end end
def index(_) do
[
id: nil,
post_type: nil,
post_name: nil,
post_title: nil,
post_status: nil,
post_date_gmt: nil,
post_modified_gmt: nil,
]
end
def form_fields(_) do def form_fields(_) do
authors_query = authors_query =
from u in Auth.User, from u in Auth.User,

View file

@ -57,5 +57,6 @@ defmodule CoreWeb.Endpoint do
plug Plug.Head plug Plug.Head
plug Plug.Session, @session_options plug Plug.Session, @session_options
plug Pow.Plug.Session, otp_app: :auth_web plug Pow.Plug.Session, otp_app: :auth_web
plug PowPersistentSession.Plug.Cookie
plug CoreWeb.Router plug CoreWeb.Router
end end

View file

@ -23,7 +23,7 @@ config :auth_web,
config :auth_web, :pow, config :auth_web, :pow,
user: Auth.User, user: Auth.User,
repo: Auth.Repo, repo: Auth.Repo,
extensions: [PowEmailConfirmation], extensions: [PowEmailConfirmation, PowPersistentSession],
controller_callbacks: Pow.Extension.Phoenix.ControllerCallbacks, controller_callbacks: Pow.Extension.Phoenix.ControllerCallbacks,
mailer_backend: AuthWeb.Pow.Mailer, mailer_backend: AuthWeb.Pow.Mailer,
web_mailer_module: AuthWeb, web_mailer_module: AuthWeb,