Class: CanTango::Permits::RolePermit

Inherits:
CanTango::Permit
  • Object
show all
Extended by:
Helpers::RoleMethods
Includes:
Helpers::RoleMethods
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

Methods included from Helpers::RoleMethods

config, has_role_group_meth, has_role_meth, role_groups_list_meth, roles_list_meth

Constructor Details

#initialize(ability) ⇒ RolePermit

creates the permit

Parameters:

  • the (Permits::Ability)

    ability

  • the (Hash)

    options



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

def initialize ability
  super
end

Class Method Details

.hash_keyObject



52
53
54
# File 'lib/cantango/permits/role_permit.rb', line 52

def self.hash_key
  roles_list_meth
end

.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

#permit_nameObject Also known as: role



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

def permit_name
  self.class.role_name self.class
end

#valid_for?(subject) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/cantango/permits/role_permit.rb', line 48

def valid_for? subject
  in_role? subject
end