# permit_ecto v0.3.1 - Table of Contents

> Ecto integration for the Permit authorization library.

## Modules

- Setup
  - [Permit.Ecto](Permit.Ecto.md): Integrates [`Permit`](https://github.com/curiosum-dev/permit) with Ecto, providing means to convert permissions to Ecto queries,
automatically constructing `Ecto.Query` scopes to preload records that meet authorization criteria.

- Permissions
  - [Permit.Ecto.Permissions](Permit.Ecto.Permissions.md): Defines the application's permission set. Replaces `Permit.Permissions` when
`Permit.Ecto` is used, but its syntax is identical.
  - [Permit.Ecto.Permissions.DynamicQueryJoiner](Permit.Ecto.Permissions.DynamicQueryJoiner.md): Joins a DNF of conditions represented by a `Permit.Permissions.DisjunctiveNormalForm`
into an Ecto dynamic query.
  - [Permit.Ecto.Permissions.ParsedCondition](Permit.Ecto.Permissions.ParsedCondition.md): Represents the product of parsing a condition by a function implementing
the `c:Permit.Permissions.can/1` callback.

- Operators
  - [Permit.Operators.DynamicQuery](Permit.Operators.DynamicQuery.md): Implemented to define a dynamic query builder function for an operator, that is
a module that implements `Permit.Operators.GenOperator`.

- Resolution
  - [Permit.Ecto.Resolver](Permit.Ecto.Resolver.md): Implementation of `Permit.ResolverBase` behaviour, resolving and checks authorization of records or lists of records based on automatic Ecto query construction, taking parameters as input and `:base_query` and `:finalize_query` functions as means to transform the query based on e.g. current controller context.

- Types
  - [Permit.Ecto.Types](Permit.Ecto.Types.md): Defines Ecto-specific types for usage with Permit.

  - [Permit.Ecto.Types.ConditionTypes](Permit.Ecto.Types.ConditionTypes.md): Provides new types for usage with Ecto queries, as well as  replacements for
types initially defined in `Permit.Types.ConditionTypes`.

- Errors
  - [Permit.Ecto.UnconvertibleConditionError](Permit.Ecto.UnconvertibleConditionError.md)
  - [Permit.Ecto.UndefinedConditionError](Permit.Ecto.UndefinedConditionError.md): Raised when the permissions module (implementing `Permit.Permissions`) does not contain sufficient
information to compute authorization for a given action.

## Mix Tasks

- [mix permit_ecto.install](Mix.Tasks.PermitEcto.Install.md): Installs Permit.Ecto authorization into your project, creating an authorization
module and a permissions module configured for Ecto.

