Module: Fibman::Additions::TargeterAddition

Extended by:
ActiveSupport::Concern
Includes:
ContainerAddition
Defined in:
lib/fibman/additions/targeter_addition.rb

Instance Method Summary collapse

Methods included from ContainerAddition

#fib_container, #fib_inherit

Instance Method Details

#add_permissions(*permission_keys) ⇒ Object



34
35
36
37
38
# File 'lib/fibman/additions/targeter_addition.rb', line 34

def add_permissions *permission_keys
  new_permissions = fib_container.permissions.extract_by_keys permission_keys
  @permissions = permissions + new_permissions
  save_permissions
end

#clear_permissionsObject



46
47
48
49
# File 'lib/fibman/additions/targeter_addition.rb', line 46

def clear_permissions
  fib_container.fpa.clear fib_redis_key
  @permissions = nil
end

#create_permissions(*permission_keys) ⇒ Object



23
24
25
26
27
# File 'lib/fibman/additions/targeter_addition.rb', line 23

def create_permissions *permission_keys
  clear_permissions
  new_permissions permission_keys
  save_permissions
end

#del_permissions(*permission_keys) ⇒ Object



40
41
42
43
44
# File 'lib/fibman/additions/targeter_addition.rb', line 40

def del_permissions *permission_keys
  del_permissions = fib_container.permissions.extract_by_keys permission_keys
  @permissions = permissions - del_permissions
  save_permissions
end

#fib_identifyObject



59
60
61
62
# File 'lib/fibman/additions/targeter_addition.rb', line 59

def fib_identify
  raise UnSetTargeterIdentify, "Please rewrite [fib_identify] method and set only sign in #{self.class.name}" unless respond_to? :id
  id
end

#fib_redis_keyObject



55
56
57
# File 'lib/fibman/additions/targeter_addition.rb', line 55

def fib_redis_key
  "Fibman:#{fib_container.key}:#{self.class.name}:#{fib_identify}"
end

#get_persistence_permissionsObject



51
52
53
# File 'lib/fibman/additions/targeter_addition.rb', line 51

def get_persistence_permissions
  fib_container.restore_permissions(fib_redis_key)
end

#new_permissions(*permission_keys) ⇒ Object



29
30
31
32
# File 'lib/fibman/additions/targeter_addition.rb', line 29

def new_permissions *permission_keys
  permission_keys = [permission_keys].flatten
  @permissions = fib_container.permissions.extract_by_keys permission_keys
end

#permissionsObject

最终权限来源自于权限范围与持久化权限的并集



10
11
12
# File 'lib/fibman/additions/targeter_addition.rb', line 10

def permissions
  @permissions ||= permissions_scope & (get_persistence_permissions || permissions_scope)
end

#permissions_scopeObject



14
15
16
# File 'lib/fibman/additions/targeter_addition.rb', line 14

def permissions_scope
  fib_inherit.permissions
end

#save_permissionsObject



18
19
20
21
# File 'lib/fibman/additions/targeter_addition.rb', line 18

def save_permissions
  fib_container.fpa.clear fib_redis_key
  fib_container.fpa.save fib_redis_key, permissions.keys
end