class Alchemy::Permissions

## Alchemy’s permissions

These are CanCan abilities, but to prevent any naming collusions we named it permissions.

Alchemy user rules are modules that can be included in your app’s/engine’s Ability class.

### Example:

# app/models/ability.rb
class Ability
  include CanCan::Ability
  include Alchemy::Permissions::EditorUser

  def initialize(user)
    return if user.nil?
    @user ||= user
    if @user.has_role?(:demo)
      alchemy_editor_rules # alchemy editor roles
      # your own rules
    end
  end
end

Public Class Methods

new(user) click to toggle source
# File lib/alchemy/permissions.rb, line 30
def initialize(user)
  set_action_aliases
  @user ||= user
  @user ? user_role_rules : alchemy_guest_user_rules
end

Private Instance Methods

exec_role_rules(role) click to toggle source
# File lib/alchemy/permissions.rb, line 200
def exec_role_rules(role)
  meth = :"alchemy_#{role}_rules"
  send(meth) if respond_to?(meth)
end
set_action_aliases() click to toggle source
# File lib/alchemy/permissions.rb, line 205
def set_action_aliases
  alias_action :configure,
    :fold,
    :info,
    :link,
    :read,
    :update,
    :unlock,
    :visit,
    :tree,
    to: :edit_content
end
user_role_rules() click to toggle source
# File lib/alchemy/permissions.rb, line 192
def user_role_rules
  return alchemy_guest_user_rules if @user.alchemy_roles.blank?

  @user.alchemy_roles.each do |role|
    exec_role_rules(role)
  end
end