# `Rivet.Ident.Access.Lib`
[🔗](https://github.com/srevenant/rivet-ident/blob/main/lib/ident/access/lib.ex#L1)

# `ecto_p_result`

```elixir
@type ecto_p_result() :: {:ok | :error, Ecto.Changeset.t()}
```

# `model_p_result`

```elixir
@type model_p_result() :: {:ok, Rivet.Ident.Access.t()}
```

# `add`

```elixir
@spec add(Rivet.Ident.User.t() | String.t(), atom(), atom(), String.t() | nil) ::
  {:ok, Rivet.Ident.Access.t()} | {:error, String.t()}
```

# `delete_user_access`

# `delete_user_domain`

# `drop`

```elixir
@spec drop(Rivet.Ident.User.t(), atom(), atom(), String.t() | nil) ::
  {:ok, Rivet.Ident.Access.t()} | {:error, String.t()}
```

# `get_actions`

```elixir
@spec get_actions(Rivet.Ident.User.t()) :: MapSet.t()
```

Fold a list of accesses into a set of actions, using memory cache

# `get_actions`

```elixir
@spec get_actions(Rivet.Ident.User.t(), domain :: atom(), ref_id :: binary()) ::
  MapSet.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
