Class: Decidim::PermissionsRegistry
- Inherits:
-
Object
- Object
- Decidim::PermissionsRegistry
- Defined in:
- lib/decidim/permissions_registry.rb
Overview
Takes care of holding and accessing permissions classes for each artifact.
Class Method Summary collapse
-
.chain_for(artifact) ⇒ Object
Syntactic sugar for the ‘chain_for` instance method.
Instance Method Summary collapse
-
#artifact_to_key(artifact) ⇒ Object
Registry accepts the class or the class name of the artifact, but the registry only indexes by the name.
-
#chain_for(artifact) ⇒ Object
Returns the registered array of permissions for the given ‘artifact`.
-
#initialize ⇒ PermissionsRegistry
constructor
A new instance of PermissionsRegistry.
-
#register_permissions(artifact, *permission_classes) ⇒ Object
Registers the of ‘Permissions` for the given `artifact`.
Constructor Details
#initialize ⇒ PermissionsRegistry
Returns a new instance of PermissionsRegistry.
8 9 10 |
# File 'lib/decidim/permissions_registry.rb', line 8 def initialize @registry = {} end |
Class Method Details
.chain_for(artifact) ⇒ Object
Syntactic sugar for the ‘chain_for` instance method.
13 14 15 |
# File 'lib/decidim/permissions_registry.rb', line 13 def self.chain_for(artifact) ::Decidim..chain_for(artifact) end |
Instance Method Details
#artifact_to_key(artifact) ⇒ Object
Registry accepts the class or the class name of the artifact, but the registry only indexes by the name. Artifact name normalization is done here.
35 36 37 |
# File 'lib/decidim/permissions_registry.rb', line 35 def artifact_to_key(artifact) artifact.respond_to?(:name) ? artifact.name : artifact end |
#chain_for(artifact) ⇒ Object
Returns the registered array of permissions for the given ‘artifact`.
artifact
is expected to be the class or module that declares ‘NeedsPermission.permission_class_chain`.
20 21 22 |
# File 'lib/decidim/permissions_registry.rb', line 20 def chain_for(artifact) @registry[artifact_to_key(artifact)] end |
#register_permissions(artifact, *permission_classes) ⇒ Object
Registers the of ‘Permissions` for the given `artifact`.
artifact
is expected to be the class or module that declares ‘NeedsPermission.permission_class_chain`. permission_classes
are subclasses of `DefaultPermissions`.
28 29 30 |
# File 'lib/decidim/permissions_registry.rb', line 28 def (artifact, *) @registry[artifact_to_key(artifact)] = .dup end |