View Source Terminator.UUID.Role (terminator_uuid v0.6.0)

Role is grouped representation of multiple abilities. It allows you to assign or manage multiple roles at once.

Link to this section Summary

Types

t()

A role struct

Link to this section Types

@type t() :: %Terminator.UUID.Role{
  __meta__: term(),
  abilities: term(),
  id: term(),
  identifier: term(),
  inserted_at: term(),
  name: term(),
  performers: term(),
  updated_at: term()
}

A role struct

Link to this section Functions

Link to this function

build(identifier, abilities, name)

View Source
@spec build(identifier :: String.t(), abilities :: [String.t()], name :: String.t()) ::
  Ecto.Changeset.t()

Builds ecto changeset for a role.

examples

Examples

iex> changeset = Terminator.UUID.Role.build("admin", ["delete_account"], "Administrator of application")
#Ecto.Changeset<
  action: nil,
  changes: %{
  abilities: ["delete_account"],
  identifier: "admin",
  name: "Administrator of application"
},
errors: [],
data: #Terminator.UUID.Role<>,
valid?: true
>
iex> changeset |> Repo.insert
{:ok,
%Terminator.UUID.Role{
  __meta__: #Ecto.Schema.Metadata<:loaded, "terminator_uuid_roles">,
  abilities: ["delete_account"],
  id: 1,
  identifier: "admin",
  inserted_at: ~N[2019-01-03 19:50:13],
  name: "Administrator of application",
  updated_at: ~N[2019-01-03 19:50:13]
}}
Link to this function

changeset(struct, params \\ %{})

View Source
@spec changeset(struct :: t(), params :: map() | nil) :: Ecto.Changeset.t()
@spec grant(t(), Terminator.UUID.Ability.t()) :: t()

Grant Terminator.UUID.Ability to a role.

examples

Examples

Function accepts Terminator.UUID.Ability grant. Function is merging existing grants with the new ones, so calling grant with same grants will not duplicate entries in table.

To grant particular ability to a role

iex> Terminator.UUID.Performer.grant(%Terminator.UUID.Role{id: 1}, %Terminator.UUID.Ability{identifier: "manage"})
@spec revoke(t(), Terminator.UUID.Ability.t()) :: t()

Revoke Terminator.UUID.Ability from a role.

examples

Examples

Function accepts Terminator.UUID.Ability grant. Function is directly opposite of Terminator.UUID.Role.grant/2

To revoke particular ability from a given role

iex> Terminator.UUID.Performer.revoke(%Terminator.UUID.Role{id: 1}, %Terminator.UUID.Ability{identifier: "manage"})