Current section

Files

Jump to
sql_membership_provider lib sql_membership_provider role.ex
Raw

lib/sql_membership_provider/role.ex

defmodule SqlMembershipProvider.Role do
@moduledoc """
Struct for representing a security role that a user may assume
"""
use Ecto.Schema
import Ecto.Query, only: [from: 2]
@primary_key {:role_id, :binary_id, autogenerate: true}
@field_source_mapper fn name -> name |> Atom.to_string() |> Macro.camelize() end
schema "aspnet_Roles" do
field(:application_id, :binary_id)
field(:role_name, :string)
field(:lowered_role_name, :string)
field(:description, :string)
many_to_many(:users, SqlMembershipProvider.User,
join_keys: [RoleId: :role_id, UserId: :user_id],
join_through: "aspnet_UsersInRoles"
)
end
@type t() :: %SqlMembershipProvider.Role{
application_id: String.t(),
role_id: String.t(),
role_name: String.t(),
lowered_role_name: String.t(),
description: String.t() | nil
}
@doc """
Fetch all roles that a user belongs to.
"""
@spec find_by_user_id(String.t()) :: Ecto.Query.t()
def find_by_user_id(user_id) when is_binary(user_id) do
from(r in SqlMembershipProvider.Role,
join: u in assoc(r, :users),
where: u.user_id == ^user_id
)
end
end