Class: Mxrb::Compiler::DomainSecurityCompiler
- Inherits:
-
Object
- Object
- Mxrb::Compiler::DomainSecurityCompiler
- Includes:
- ModelValues
- Defined in:
- lib/mxrb/compiler/domain_security_compiler.rb
Overview
Resolves project roles and association security into Runtime fields.
Instance Method Summary collapse
- #access_rule(source) ⇒ Object
- #association(source, module_name) ⇒ Object
-
#initialize(source) ⇒ DomainSecurityCompiler
constructor
A new instance of DomainSecurityCompiler.
Constructor Details
#initialize(source) ⇒ DomainSecurityCompiler
Returns a new instance of DomainSecurityCompiler.
9 10 11 |
# File 'lib/mxrb/compiler/domain_security_compiler.rb', line 9 def initialize(source) @role_map = project_role_map(source) end |
Instance Method Details
#access_rule(source) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/mxrb/compiler/domain_security_compiler.rb', line 13 def access_rule(source) module_roles = array(source['AllowedModuleRoles']).map(&:to_s) { '$ID' => source['$ID'], '$Type' => source['$Type'], 'MemberAccesses' => array(source['MemberAccesses']).map { member_access(_1) }, 'AllowedUserRoles' => module_roles.flat_map { @role_map.fetch(_1, []) }.uniq, 'AllowCreate' => source['AllowCreate'] == true, 'AllowDelete' => source['AllowDelete'] == true, 'XPathConstraint' => source['XPathConstraint'].to_s } end |
#association(source, module_name) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/mxrb/compiler/domain_security_compiler.rb', line 24 def association(source, module_name) name = source['Name'].to_s result = association_fields(source).merge( 'QualifiedName' => "#{module_name}.#{name}", 'UnqualifiedName' => name, 'Navigability' => 'BothDirections' ) child_key = source['$Type'] == 'DomainModels$CrossAssociation' ? 'Child' : 'ChildPointer' result.merge(child_key => source[child_key]) end |