Current section
Files
Jump to
Current section
Files
lib/canary.ex
defmodule Canary do
@moduledoc """
An authorization library in Elixir for `Plug` and `Phoenix.LiveView` applications that restricts what resources the current user is allowed to access, and automatically load and assigns resources.
`load_resource/2` and `authorize_resource/2` can be used by themselves, while `load_and_authorize_resource/2` combines them both.
The plug functions are defined in `Canary.Plugs`
In order to use `Canary` authorization in standard pages with plug, just `import Canary.Plugs` and use plugs, for example:
```elixir
defmodule MyAppWeb.PostController do
use MyAppWeb, :controller
import Canary.Plugs
plug :load_and_authorize_resource,
model: Post,
current_user: :current_user,
only: [:show, :edit, :update]
end
```
The LiveView hooks are defined in `Canary.Hooks`
In order to use `Canary` authorization in LiveView, just `use Canary.Hooks` and mount hooks, for example:
```elixir
defmodule MyAppWeb.PostLive do
use MyAppWeb, :live_view
use Canary.Hooks
mount_canary :load_and_authorize_resource,
on: [:handle_params, :handle_event],
current_user: :current_user,
model: Post,
only: [:show, :edit, :update]
end
```
This will attach hooks to the LiveView module with `Phoenix.LiveView.attach_hook/4`.
In the example above hooks will be attached to `handle_params` and `handle_event` stages of the LiveView lifecycle.
Please read the documentation for `Canary.Plugs` and `Canary.Hooks` for more information.
"""
end