Class: CanTango::Permits::RolePermit

Inherits:
CanTango::Permit
  • Object
show all
Defined in:
lib/cantango/permits/role_permit.rb,
lib/cantango/permits/role_permit/finder.rb,
lib/cantango/permits/role_permit/builder.rb

Defined Under Namespace

Classes: Builder, Finder

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ability) ⇒ RolePermit

creates the permit

Parameters:

  • the (Permits::Ability)

    ability

  • the (Hash)

    options



26
27
28
# File 'lib/cantango/permits/role_permit.rb', line 26

def initialize ability
  super
end

Class Method Details

.inherited(base_clazz) ⇒ Object



7
8
9
# File 'lib/cantango/permits/role_permit.rb', line 7

def self.inherited(base_clazz)
  CanTango.config.permits.register_permit_class role_name(base_clazz), base_clazz, type, (base_clazz)
end

.role_name(clazz) ⇒ Object



15
16
17
# File 'lib/cantango/permits/role_permit.rb', line 15

def self.role_name clazz
  clazz.name.demodulize.gsub(/(.*)(RolePermit)/, '\1').underscore.to_sym
end

.typeObject



11
12
13
# File 'lib/cantango/permits/role_permit.rb', line 11

def self.type
  :role
end

Instance Method Details

#permit?Boolean

In a specific Role based Permit you can use

def permit? user, options = {}
  ... permission logic follows

This will call the Permit::Base#permit? instance method (the method below) It will only return true if the user matches the role of the Permit class and the

If these confitions are not met, it will return false and thus the outer permit will not run the permission logic to follow

Normally super for #permit? should not be called except for this case, or if subclassing another Permit than Permit::Base

Returns:

  • (Boolean)


44
45
46
# File 'lib/cantango/permits/role_permit.rb', line 44

def permit?
  super
end

#roleObject



19
20
21
# File 'lib/cantango/permits/role_permit.rb', line 19

def role
  self.class.role_name self.class
end