lucky_can

Version, currently master branch1 version
  • master branchlatestMar 24, 2020

github.com/confact/lucky_can

A simple pundit policies library for Lucky Framework in Crystal

11 stars
2 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  lucky_can:
    github: confact/lucky_can
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
0.33.0
License
MIT
Author
Håkan Nylén

Dependencies

This version declares no dependencies.

README

lucky_can

An little nicer way to handle authorization rules for your lucky app

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      lucky_can:
        github: confact/lucky_can
  2. Run shards install

Usage

  1.  require "lucky_can"
  2. create an policies directory where all your policies will be. Now you will Add an require for that directory to the app.cr file before pages require. Add this: require "./policies/**"

  3. now you can create your policies in policies directory.

Simple usage

class TeamPolicy < LuckyCan::BasePolicy
  can show, team, current_user do
    return false if current_user.nil?
    team.users.include?(current_user)
  end
end

this generate following methods for you to use by an macro:

  • TeamPolicy.show?(team, current_user) - for simple bool check if the user have access to the team.
  • TeamPolicy.show_not_found?(team, current_user, context) - Return an Lucky::RouteNotFoundError if the code in the block return false.
  • TeamPolicy.show_forbidden?(team, current_user, context) - Return an LuckyCan::ForbiddenError if the code in the block return false.

Contributing

  1. Fork it (https://github.com/confact/lucky_can/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors