CanCanCanSee 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +31 -4
- data/lib/CanCanCanSee.rb +15 -15
- data/lib/CanCanCanSee/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff25ff4f47b4bb97aecfdad5e7630b42a6e5c14e
|
4
|
+
data.tar.gz: 6a48bcad44cdc045c96836aa7dad388f84b77c1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0465dfd4c70ebbaeb003a805d2b12cff35990121e23f1a48cce8755ab9b32fe35b295be21debb204b4f1ab179eab9d927302dd41ef9285e6e63760d72aaefb24
|
7
|
+
data.tar.gz: f6cc19753227e2357ec73ae449d784cc7a263872bf51499da5e1fc8438e353db2b8e01f1dfcdd80aee4b3e737513fa592608e1c097e3449bbea1ee83f7a4a82f
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# CanCanCanSee
|
2
2
|
|
3
|
-
|
3
|
+
Read-only access to roles and abilities with CanCancan. Note: Since this relies on regex-magic at the moment, it requires a particular formatting that will be further articulated upon in future docs.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -20,13 +20,40 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
Your `Ability.rb` file should use a `case/when` statement for different roles and abilities for this to work.
|
24
|
+
|
25
|
+
Create a `config/initializers/cancancansee.rb` file, and if you have a normal Ability.rb file include:
|
26
|
+
|
27
|
+
`abilities_type = single`
|
28
|
+
|
29
|
+
And if you have a custom multiple Ability.rb setup include:
|
30
|
+
|
31
|
+
`abilities_type = multiple`
|
32
|
+
|
33
|
+
Then, anywhere in your code or CLI, you have access to this command:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
CanCanCanSee.all_abilities
|
37
|
+
|
38
|
+
#=> {"RoleOne"=>{"can"=>["manage Object"], "cannot"=>["delete Note", "edit Thing"},
|
39
|
+
#=> "RoleTwo"=>{"can"=>["edit User"], "cannot"=>["manage Telephone"]}}
|
40
|
+
|
41
|
+
#and if you only want to see abilities for a particular slug under multiple....
|
42
|
+
CanCanCanSee.all_abilities[my_slug]
|
43
|
+
|
44
|
+
#=> {"my_slug"=>{"RoleOne"=>{"can"=>["manage Object"], "cannot"=>["delete Note", "edit Thing"},
|
45
|
+
#=> "RoleTwo"=>{"can"=>["edit User"], "cannot"=>["manage Telephone"]}},
|
46
|
+
#=> "my_other_slug"=>{"RoleOne"=>{"can"=>["manage Object"], "cannot"=>["delete Note", "edit Thing"},
|
47
|
+
#=> "RoleTwo"=>{"can"=>["edit User"], "cannot"=>["manage Telephone"]}}
|
48
|
+
```
|
24
49
|
|
25
50
|
## Development
|
26
51
|
|
27
|
-
|
52
|
+
## TODO Before 1.0
|
28
53
|
|
29
|
-
|
54
|
+
* Confirm support for single and multiple Ability.rb files
|
55
|
+
* Create docs to show style guidelines to have gem work
|
56
|
+
* Create post to show layout for slug-based auth
|
30
57
|
|
31
58
|
## Contributing
|
32
59
|
|
data/lib/CanCanCanSee.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "CanCanCanSee/version"
|
2
|
+
require 'pry'
|
2
3
|
|
3
4
|
module CanCanCanSee
|
4
5
|
|
@@ -6,22 +7,15 @@ module CanCanCanSee
|
|
6
7
|
|
7
8
|
def self.initiate_gem
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
while user_answer.downcase != "single" && user_answer.downcase != "multiple"
|
12
|
-
# puts "Single or multiple ability file?"
|
13
|
-
user_answer = "multiple"
|
14
|
-
end
|
15
|
-
|
16
|
-
type = user_answer
|
10
|
+
configuration_file = File.read('config/initializers/cancancansee.rb')
|
17
11
|
|
18
12
|
|
19
|
-
if
|
13
|
+
if configuration_file.include?("abilities_type = single")
|
20
14
|
|
21
15
|
my_file = File.read('app/models/ability.rb') # for single
|
22
16
|
read_file(my_file)
|
23
17
|
|
24
|
-
elsif
|
18
|
+
elsif configuration_file.include?("abilities_type = multiple")
|
25
19
|
|
26
20
|
my_arr = []
|
27
21
|
|
@@ -63,7 +57,7 @@ module CanCanCanSee
|
|
63
57
|
counter = 0
|
64
58
|
roles = @current_file.scan(/when(.*)($|[ do])/)
|
65
59
|
roles.map! { |item| item.to_s.gsub(/[^0-9a-z ]/i, '') }
|
66
|
-
roles.map! { |item| item[1..-
|
60
|
+
roles.map! { |item| item[1..-2]}
|
67
61
|
|
68
62
|
role_count = roles.length
|
69
63
|
chunk_start = /when/ =~ @current_file
|
@@ -94,7 +88,7 @@ module CanCanCanSee
|
|
94
88
|
array_of_can = []
|
95
89
|
|
96
90
|
#establish can
|
97
|
-
can_abilities = all_text[roles[new_counter]].scan(/can (.*)
|
91
|
+
can_abilities = all_text[roles[new_counter]].scan(/can (.*)\n/)
|
98
92
|
|
99
93
|
can_abilities.each do |can_ability|
|
100
94
|
can_ability = can_ability[0]
|
@@ -105,7 +99,7 @@ module CanCanCanSee
|
|
105
99
|
array_of_cannot = []
|
106
100
|
|
107
101
|
#establish cannot
|
108
|
-
cannot_abilities = all_text[roles[new_counter]].scan(/cannot(.*)
|
102
|
+
cannot_abilities = all_text[roles[new_counter]].scan(/cannot(.*)\n/)
|
109
103
|
|
110
104
|
cannot_abilities.each do |cannot_ability|
|
111
105
|
cannot_ability = cannot_ability[0]
|
@@ -133,6 +127,9 @@ module CanCanCanSee
|
|
133
127
|
|
134
128
|
can_abilities.each do |can_ability|
|
135
129
|
can_ability = can_ability[0]
|
130
|
+
if can_ability.include?("do")
|
131
|
+
can_ability = "#{/(.*) do/.match(can_ability)[1]} WITH BLOCK"
|
132
|
+
end
|
136
133
|
array_of_can << can_ability.gsub(/[^0-9a-z ]/i, '')
|
137
134
|
end
|
138
135
|
|
@@ -144,6 +141,9 @@ module CanCanCanSee
|
|
144
141
|
|
145
142
|
cannot_abilities.each do |cannot_ability|
|
146
143
|
cannot_ability = cannot_ability[0]
|
144
|
+
if cannot_ability.include?("do")
|
145
|
+
cannot_ability = "#{/(.*) do/.match(cannot_ability)[1]} WITH BLOCK"
|
146
|
+
end
|
147
147
|
array_of_cannot << cannot_ability.gsub(/[^0-9a-z ]/i, '')
|
148
148
|
end
|
149
149
|
|
@@ -158,9 +158,9 @@ module CanCanCanSee
|
|
158
158
|
|
159
159
|
#public methods
|
160
160
|
|
161
|
-
def self.all_roles
|
161
|
+
def self.all_roles(desired_slug=nil)
|
162
162
|
initiate_gem
|
163
|
-
return MY_GLOBAL_HOLDER_OF_ABILITY.keys
|
163
|
+
return MY_GLOBAL_HOLDER_OF_ABILITY[desired_slug].keys
|
164
164
|
|
165
165
|
end
|
166
166
|
|
data/lib/CanCanCanSee/version.rb
CHANGED