petergate 1.5.5 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -6
- data/lib/petergate/active_record/base.rb +18 -7
- data/lib/petergate/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acdb2ef4dd4f034a5a8ba195ed98db7de09b682b
|
4
|
+
data.tar.gz: 87e581e14a57eea73f588ddfd8a60c72c04b3212
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6edb852867594b047ff7a629fc45e27f76e51cb43113260afec72372f7026faffbe62e73b63acdebcd0222f7ef11a5bffb0597445468a156d5466752f8d15cbd
|
7
|
+
data.tar.gz: f22f4efcdccea3c1c932262ad2365d84cd6f43774d68dc724400a5b8876249141d232ed5945f510d4c60fc315b12974f3a6bacf6c8f72cdf1578d40ffa9c0383
|
data/README.md
CHANGED
@@ -12,19 +12,19 @@
|
|
12
12
|
|
13
13
|
Installation
|
14
14
|
------
|
15
|
-
|
16
|
-
|
15
|
+
#####Get the gem
|
16
|
+
Add this line to your application's Gemfile:
|
17
17
|
|
18
18
|
gem 'petergate'
|
19
19
|
|
20
|
-
|
20
|
+
And then execute:
|
21
21
|
|
22
22
|
bundle
|
23
23
|
|
24
|
-
|
24
|
+
Or install it yourself as:
|
25
25
|
|
26
26
|
gem install petergate
|
27
|
-
|
27
|
+
#####Prerequisites: Setup Authentication (Devise)
|
28
28
|
|
29
29
|
Make sure your user model is defined in
|
30
30
|
app/models/user.rb
|
@@ -37,7 +37,7 @@ If you're using [devise](https://github.com/plataformatec/devise) you're in luck
|
|
37
37
|
after_sign_in_path_for(current_user)
|
38
38
|
authenticate_user!
|
39
39
|
|
40
|
-
|
40
|
+
#####Run the generators
|
41
41
|
|
42
42
|
rails g petergate:install
|
43
43
|
rake db:migrate
|
@@ -93,6 +93,11 @@ def roles=(v)
|
|
93
93
|
end
|
94
94
|
```
|
95
95
|
|
96
|
+
If you want to change the `permission denied` message you can add to the access line:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
access user: [:show, :index], message: "You shall not pass"
|
100
|
+
```
|
96
101
|
|
97
102
|
Credits
|
98
103
|
-------
|
@@ -20,6 +20,16 @@ module Petergate
|
|
20
20
|
|
21
21
|
instance_eval do
|
22
22
|
const_set('ROLES', (roles + [:user]).uniq) unless defined?(User::ROLES)
|
23
|
+
|
24
|
+
if multiple
|
25
|
+
roles.each do |role|
|
26
|
+
define_singleton_method("role_#{role.to_s.pluralize}".downcase.to_sym){self.where("roles LIKE '%- :#{role}\n%'")}
|
27
|
+
end
|
28
|
+
else
|
29
|
+
roles.each do |role|
|
30
|
+
define_singleton_method("role_#{role.to_s.pluralize}".downcase.to_sym){self.where(roles: role)}
|
31
|
+
end
|
32
|
+
end
|
23
33
|
end
|
24
34
|
|
25
35
|
class_eval do
|
@@ -33,19 +43,20 @@ module Petergate
|
|
33
43
|
end
|
34
44
|
else
|
35
45
|
def roles=(v)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
46
|
+
r = case v.class.to_s
|
47
|
+
when "String", "Symbol"
|
48
|
+
v
|
49
|
+
when "Array"
|
50
|
+
v.first
|
51
|
+
end
|
52
|
+
self[:roles] = available_roles.include?(r) ? r : :user
|
42
53
|
end
|
43
54
|
end
|
44
55
|
|
45
56
|
def roles
|
46
57
|
case self[:roles].class.to_s
|
47
58
|
when "String", "Symbol"
|
48
|
-
[self[:roles].to_sym, :user]
|
59
|
+
[self[:roles].to_sym, :user].uniq
|
49
60
|
when "Array"
|
50
61
|
super
|
51
62
|
else
|
data/lib/petergate/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: petergate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Isaac Sloan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04
|
11
|
+
date: 2016-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|