calcinator v1.6.0 Calcinator.Authorization.Can

Calcinator.Authorization where filter_associations_can/3 and filter_can/3 are implemented in terms of can/3, so only can/3 needs to be implemented.

Summary

Types

t()

A module that implements the Calcinator.Authorization.can?/3 callback

Functions

nil out all associations where the subject can’t do action on the association’s model

Filters models to only those where subject can do action to a specific model in models

Filters association_models to only those association_models where subject can do action on the combined association path of [association_model | association_ascent]

Macros

Uses Calcinator.Authorization.Can.filter_associations_can/4 for Calcinator.Authorization.filter_associations_can/3 and Calcinator.Authorization.Can.filter_can/4 for Calcinator.Authorization.filter_can/3, so using module only need to implement Calcinator.Authorization.can?/3

Types

t()
t() :: module

A module that implements the Calcinator.Authorization.can?/3 callback

Functions

filter_associations_can(models, subject, action, callback_module)
filter_associations_can(struct, Calcinator.Authorization.subject, Calcinator.Authorization.action, t) :: struct
filter_associations_can([struct], Calcinator.Authorization.subject, Calcinator.Authorization.action, t) :: [struct]

nil out all associations where the subject can’t do action on the association’s model

filter_can(models, subject, action, callback_module)

Filters models to only those where subject can do action to a specific model in models.

filter_can(association_models, association_ascent, subject, action, callback_module)

Filters association_models to only those association_models where subject can do action on the combined association path of [association_model | association_ascent].

Macros

__using__(list)

Uses Calcinator.Authorization.Can.filter_associations_can/4 for Calcinator.Authorization.filter_associations_can/3 and Calcinator.Authorization.Can.filter_can/4 for Calcinator.Authorization.filter_can/3, so using module only need to implement Calcinator.Authorization.can?/3.