diff --git a/lib/philomena/users.ex b/lib/philomena/users.ex index 9016d2ab..f104963a 100644 --- a/lib/philomena/users.ex +++ b/lib/philomena/users.ex @@ -164,4 +164,13 @@ defmodule Philomena.Users do |> User.creation_changeset(params) |> Repo.insert() end + + @impl Pow.Ecto.Context + def get_by(clauses) do + User + |> join(:left, [u], _ in assoc(u, :roles)) + |> join(:left, [u, _], _ in assoc(u, :current_filter)) + |> preload([_, r, cf], [current_filter: cf, roles: r]) + |> Repo.get_by(clauses) + end end diff --git a/lib/philomena/users/user.ex b/lib/philomena/users/user.ex index 3861963b..12711f02 100644 --- a/lib/philomena/users/user.ex +++ b/lib/philomena/users/user.ex @@ -22,6 +22,7 @@ defmodule Philomena.Users.User do alias Philomena.Galleries.Gallery alias Philomena.Users.User alias Philomena.Commissions.Commission + alias Philomena.Roles.Role @derive {Phoenix.Param, key: :slug} @@ -34,6 +35,7 @@ defmodule Philomena.Users.User do has_many :unread_notifications, UnreadNotification has_many :notifications, through: [:unread_notifications, :notification] has_one :commission, Commission + many_to_many :roles, Role, join_through: "users_roles" belongs_to :current_filter, Filter belongs_to :deleted_by_user, User