| Class | Authorization::DevelopmentSupport::AnalyzerEngine::Role |
| In: |
lib/declarative_authorization/development_support/development_support.rb
|
| Parent: | Object |
| role | [R] |
# File lib/declarative_authorization/development_support/development_support.rb, line 125
125: def self.all (engine)
126: rules_by_role = engine.auth_rules.inject({}) do |memo, rule|
127: memo[rule.role] ||= []
128: memo[rule.role] << rule
129: memo
130: end
131: engine.roles.collect do |role|
132: new(role, (rules_by_role[role] || []).
133: collect {|rule| Rule.new(rule, engine)}, engine)
134: end
135: end
# File lib/declarative_authorization/development_support/development_support.rb, line 136
136: def self.all_for_privilege (privilege, context, engine)
137: privilege = privilege.is_a?(Symbol) ? Privilege.for_sym(privilege, engine) : privilege
138: privilege_symbols = ([privilege] + privilege.ancestors).map(&:to_sym)
139: all(engine).select {|role| role.rules.any? {|rule| rule.matches?([role.to_sym], privilege_symbols, context)}}.
140: collect {|role| [role] + role.descendants}.flatten.uniq
141: end
# File lib/declarative_authorization/development_support/development_support.rb, line 121
121: def self.for_sym (role_sym, engine)
122: @@role_objects[[role_sym, engine]] ||= new(role_sym, nil, engine)
123: end
# File lib/declarative_authorization/development_support/development_support.rb, line 81
81: def initialize (role, rules, engine)
82: @role = role
83: @rules = rules
84: @engine = engine
85: end
ancestors’ privileges are included in in the current role
# File lib/declarative_authorization/development_support/development_support.rb, line 95
95: def ancestors (role_symbol = nil)
96: role_symbol ||= @role
97: (@engine.role_hierarchy[role_symbol] || []).
98: collect {|lower_role| ancestors(lower_role) }.flatten +
99: (role_symbol == @role ? [] : [Role.for_sym(role_symbol, @engine)])
100: end
# File lib/declarative_authorization/development_support/development_support.rb, line 101
101: def descendants (role_symbol = nil)
102: role_symbol ||= @role
103: (@engine.rev_role_hierarchy[role_symbol] || []).
104: collect {|higher_role| descendants(higher_role) }.flatten +
105: (role_symbol == @role ? [] : [Role.for_sym(role_symbol, @engine)])
106: end
# File lib/declarative_authorization/development_support/development_support.rb, line 108
108: def rules
109: @rules ||= @engine.auth_rules.select {|rule| rule.role == @role}.
110: collect {|rule| Rule.new(rule, @engine)}
111: end
# File lib/declarative_authorization/development_support/development_support.rb, line 112
112: def rules_for_permission (privilege, context)
113: rules.select do |rule|
114: rule.matches?([@role], [privilege.to_sym], context)
115: end
116: end
# File lib/declarative_authorization/development_support/development_support.rb, line 90
90: def source_file
91: @rules.empty? ? nil : @rules.first.source_file
92: end