Terminator

Simple elixir library for managing abilities

WIP: NOT INTENDED FOR PRODUCTION USE

Installation

If available in Hex, the package can be installed by adding terminator to your list of dependencies in mix.exs:

def deps do
  [
    {:terminator, "~> 0.1.0"}
  ]
end

Usage

config.exs

config :terminator,
  ecto_repo: Blog.Repo

lib/blog/post.ex

defmodule Blog.Post do
  alias Blog.User
  alias Blog.Role

  use Ecto.Schema
  use Terminator.Guard, performer: User, role: Role

  ...

  def create() do
    load_and_authorize_performer(%User{id: 1000})

    preconditions do
      ability(:create_blog_post)
    end  

    as_authorized do
      IO.inspect("Creating blog post")
    end
  do