class Portier::Base

*************************************************************************************

Check if the access is granted or refused depending on the permission
setted in the permission files.

*************************************************************************************

Attributes

application_controller[R]
current_user[R]

Public Class Methods

new(application_controller, current_user) click to toggle source
# File lib/portier/base.rb, line 10
def initialize(application_controller, current_user)
  @application_controller = application_controller
  @current_user = current_user
end

Public Instance Methods

access_denied_message() click to toggle source
# File lib/portier/base.rb, line 15
def access_denied_message
  base_permission.access_denied_message
end
authorize_action() click to toggle source
# File lib/portier/base.rb, line 19
def authorize_action
  raise Portier::AccessDenied if not base_permission.granted? action
end
can?(action, object, options={}) click to toggle source
# File lib/portier/base.rb, line 23
def can?(action, object, options={})
  object_name = if object.is_a? Symbol or object.is_a? String
    object.to_s.singularize.pluralize
  else
    object.class.name.pluralize
  end

  object_name = "#{options[:namespace].to_s.camelize}::#{object_name.camelize}" if options[:namespace]

  permission = permission_for object_name
  permission.can? action, object, options
end
can_view?(tag, options={}) click to toggle source
# File lib/portier/base.rb, line 36
def can_view?(tag, options={})
  view_permission.can_view? tag, options
end
permitted_params() click to toggle source
# File lib/portier/base.rb, line 40
def permitted_params
  base_permission.build_permitted_params if base_permission.respond_to? :permitted_params
end

Private Instance Methods

action() click to toggle source
# File lib/portier/base.rb, line 46
def action
  request[:action]
end
base_permission() click to toggle source
# File lib/portier/base.rb, line 50
def base_permission
  @base_permission ||= permission_for controller_name
end
controller_name() click to toggle source
# File lib/portier/base.rb, line 54
def controller_name
  request[:controller]
end
permission_for(target) click to toggle source
# File lib/portier/base.rb, line 58
def permission_for(target)
  begin
    "#{target.camelize}Permission".constantize.new(application_controller, current_user)
  rescue
    raise Portier::Uninitalized, "You must define #{target.camelize}Permission in app/permissions/#{target}_permission.rb. See documentation for more details."
  end
end
view_permission() click to toggle source
# File lib/portier/base.rb, line 66
def view_permission
  if not @view_permission_object
    begin
      @view_permission_object = "ViewTagsPermission".constantize.new(application_controller, current_user)
    rescue
      raise Portier::Uninitalized, "You must define ViewTagsPermission in app/permissions/view_tags_permission.rb in order to use view permission. See documentation for more details."
    end
  end

  @view_permission_object
end