Class: CanTango::Permits::UserPermit

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

Defined Under Namespace

Classes: Builder, Finder

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ability) ⇒ UserPermit

creates the permit

Parameters:

  • the (Permits::Ability)

    ability

  • the (Hash)

    options



28
29
30
# File 'lib/cantango/permits/user_permit.rb', line 28

def initialize ability
  super
end

Class Method Details

.hash_keyObject



54
55
56
# File 'lib/cantango/permits/user_permit.rb', line 54

def self.hash_key
  user_type_name(self)
end

.inherited(base_clazz) ⇒ Object



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

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

.typeObject



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

def self.type
  :user
end

.user_type_name(clazz) ⇒ Object



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

def self.user_type_name clazz
  clazz.name.demodulize.gsub(/(.*)(Permit)/, '\1').underscore.to_sym
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)


45
46
47
# File 'lib/cantango/permits/user_permit.rb', line 45

def permit?
  super
end

#permit_nameObject Also known as: user_type

UserPermit becomes :user



20
21
22
# File 'lib/cantango/permits/user_permit.rb', line 20

def permit_name
  self.class.user_type_name self.class
end

#valid_for?(subject) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
# File 'lib/cantango/permits/user_permit.rb', line 49

def valid_for? subject
  debug_invalid if !(subject_user == permit_user)
  subject_user == permit_user
end