permissify 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,42 +1,10 @@
1
- # TODO : this could be an active record
2
- # - needs to support a set of interfaces (all, all_for, others?)
1
+ # TODO : this could be an activerecord, does not need to be.
2
+ # - needs to support interface(s) : seed ?also: all, all_for, others?
3
3
  class Ability
4
4
 
5
5
  class << self
6
- include Permissify::Abilities
6
+ include Permissify::AbilityClass
7
7
  include SystemFixtures::Abilities
8
- # @@abilities = []
9
- #
10
- # def all; seed if @@abilities.empty?; @@abilities; end
11
- #
12
- # def all_for(applicability_types)
13
- # applicability_types = [applicability_types] if applicability_types.kind_of?(String)
14
- # all.select{|a| (a[:applicability] & applicability_types) == applicability_types}
15
- # end
16
- #
17
- # def add_category(category, section, applicability=['Role'], actions=%w(View Create Update Delete), category_allows = :multiple)
18
- # actions = [actions] unless actions.kind_of?(Array)
19
- # actions.collect do |action|
20
- # add("#{key_token(category)}_#{key_token(action)}", category, section, action, applicability, 1, actions.index(action)+1, [false], '', category_allows)
21
- # end
22
- # end
23
- #
24
- # def create_permissions_hash(view_only_categories=[], remove_categories=[], applicability_types = 'Role')
25
- # @@permissions = {}
26
- # all_for(applicability_types).each{|permission| @@permissions[permission[:key]] = {'0' => '1'}}
27
- # view_only_categories.each{|category| view_only(category)}
28
- # remove_categories.each{|category| remove(category)}
29
- # @@permissions
30
- # end
31
- #
32
- # private
33
- # def key_token(token); token.downcase.gsub('-','_').gsub(':','').gsub(' ',' ').gsub(' ','_'); end
34
- # def view_only(category); %w(create update delete).each{|action| @@permissions.delete("#{category}_#{action}")}; end
35
- # def remove(permission_prefix); @@permissions.keys.each{|key| @@permissions.delete(key) if key.starts_with?(permission_prefix)}; end
36
- # def add(key, category, section, action, applicability, number_of_values, position, default_values, admin_expression='', category_allows = :multiple)
37
- # @@abilities << { :key => key, :category => category, :section => section, :action => action,
38
- # :applicability => applicability, :number_of_values => number_of_values, :position => position,
39
- # :default_values => default_values, :administration_expression => admin_expression, :category_allows => category_allows}
40
- # end
41
8
  end
9
+
42
10
  end
@@ -0,0 +1,40 @@
1
+ module Permissify
2
+ module AbilityClass
3
+
4
+ @@abilities = []
5
+
6
+ def clear; @@abilities = []; end
7
+ def all; seed if @@abilities.empty?; @@abilities; end
8
+
9
+ def all_for(applicability_types)
10
+ applicability_types = [applicability_types] if applicability_types.kind_of?(String)
11
+ all.select{|a| (a[:applicability] & applicability_types) == applicability_types}
12
+ end
13
+
14
+ def add_category(category, section, applicability=['Role'], actions=%w(View Create Update Delete), category_allows = :multiple)
15
+ actions = [actions] unless actions.kind_of?(Array)
16
+ actions.collect do |action|
17
+ add("#{key_token(category)}_#{key_token(action)}", category, section, action, applicability, 1, actions.index(action)+1, [false], '', category_allows)
18
+ end
19
+ end
20
+
21
+ def create_permissions_hash(view_only_categories=[], remove_categories=[], applicability_types = 'Role')
22
+ @@permissions = {}
23
+ all_for(applicability_types).each{|permission| @@permissions[permission[:key]] = {'0' => '1'}}
24
+ view_only_categories.each{|category| view_only(category)}
25
+ remove_categories.each{|category| remove(category)}
26
+ @@permissions
27
+ end
28
+
29
+ private
30
+ def key_token(token); token.downcase.gsub('-','_').gsub(':','').gsub(' ',' ').gsub(' ','_'); end
31
+ def view_only(category); %w(create update delete).each{|action| @@permissions.delete("#{category}_#{action}")}; end
32
+ def remove(permission_prefix); @@permissions.keys.each{|key| @@permissions.delete(key) if key.starts_with?(permission_prefix)}; end
33
+ def add(key, category, section, action, applicability, number_of_values, position, default_values, admin_expression='', category_allows = :multiple)
34
+ @@abilities << { :key => key, :category => category, :section => section, :action => action,
35
+ :applicability => applicability, :number_of_values => number_of_values, :position => position,
36
+ :default_values => default_values, :administration_expression => admin_expression, :category_allows => category_allows}
37
+ end
38
+
39
+ end
40
+ end
data/lib/permissify.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'permissify/ability_class'
1
2
  require 'permissify/aggregate'
2
3
  require 'permissify/controller'
3
4
  require 'permissify/model'
data/spec/spec_helper.rb CHANGED
@@ -14,3 +14,14 @@ RSpec.configure do |config|
14
14
  config.run_all_when_everything_filtered = true
15
15
  config.filter_run :focus
16
16
  end
17
+
18
+ class Ability
19
+ class << self
20
+ include Permissify::Ability
21
+
22
+ def seed
23
+ # required interface method : app Ability class must implement
24
+ # - use Permissify::Abilities helper methods or *ml or whatever : just get @@abilities set
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permissify
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Frederick Fix
@@ -101,7 +101,7 @@ files:
101
101
  - lib/generators/permissify/views/template/roles_helper.rb
102
102
  - lib/generators/permissify/views/USAGE
103
103
  - lib/generators/permissify/views/views_generator.rb
104
- - lib/permissify/ability.rb
104
+ - lib/permissify/ability_class.rb
105
105
  - lib/permissify/aggregate.rb
106
106
  - lib/permissify/controller.rb
107
107
  - lib/permissify/model.rb
@@ -1,46 +0,0 @@
1
- # TODO : this could be an active record
2
- # - needs to support a set of interfaces (all, all_for, others?)
3
- # - very specific hash structure
4
- # - does this need to be a module?
5
- module Permissify
6
- module Ability
7
-
8
- # class << self
9
- # include SystemFixtures::Abilities
10
- @@abilities = []
11
-
12
- def clear; @@abilities = []; end
13
- def all; seed if @@abilities.empty?; @@abilities; end
14
-
15
- def all_for(applicability_types)
16
- applicability_types = [applicability_types] if applicability_types.kind_of?(String)
17
- all.select{|a| (a[:applicability] & applicability_types) == applicability_types}
18
- end
19
-
20
- def add_category(category, section, applicability=['Role'], actions=%w(View Create Update Delete), category_allows = :multiple)
21
- actions = [actions] unless actions.kind_of?(Array)
22
- actions.collect do |action|
23
- add("#{key_token(category)}_#{key_token(action)}", category, section, action, applicability, 1, actions.index(action)+1, [false], '', category_allows)
24
- end
25
- end
26
-
27
- def create_permissions_hash(view_only_categories=[], remove_categories=[], applicability_types = 'Role')
28
- @@permissions = {}
29
- all_for(applicability_types).each{|permission| @@permissions[permission[:key]] = {'0' => '1'}}
30
- view_only_categories.each{|category| view_only(category)}
31
- remove_categories.each{|category| remove(category)}
32
- @@permissions
33
- end
34
-
35
- private
36
- def key_token(token); token.downcase.gsub('-','_').gsub(':','').gsub(' ',' ').gsub(' ','_'); end
37
- def view_only(category); %w(create update delete).each{|action| @@permissions.delete("#{category}_#{action}")}; end
38
- def remove(permission_prefix); @@permissions.keys.each{|key| @@permissions.delete(key) if key.starts_with?(permission_prefix)}; end
39
- def add(key, category, section, action, applicability, number_of_values, position, default_values, admin_expression='', category_allows = :multiple)
40
- @@abilities << { :key => key, :category => category, :section => section, :action => action,
41
- :applicability => applicability, :number_of_values => number_of_values, :position => position,
42
- :default_values => default_values, :administration_expression => admin_expression, :category_allows => category_allows}
43
- end
44
- # end
45
- end
46
- end