voltex 0.0.5 → 0.0.6
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 +154 -0
- data/Rakefile +1 -1
- data/lib/voltex/version.rb +1 -1
- metadata +22 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cfc96e3f591dcffa4d5118a19ba8f93a577b562
|
4
|
+
data.tar.gz: 8b5c5e101cf8a4f00d22ad5f21b1b57452749394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0158489ca3fbde74c60bb58466505f225fff4fbdb22057b0741a36def2dbbcd3cfbfcd67888b2375fe3fb091d0b80eea1b35a20eff5be5c837bff74f7ef60646
|
7
|
+
data.tar.gz: ec5e3f9f3c11128579353550178373272c193f8af1ac2706f9df3072f0b71ac65decc31a12e6b4a6900ce46b004d9ec1430aeecf44083b5c239f5640447fa4a4
|
data/README.md
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
# Voltex
|
2
|
+
This engine aims to provide an easy way to work with dynamic permissions.
|
3
|
+
|
4
|
+
|
5
|
+
## Compatibility
|
6
|
+
* Rails 4+
|
7
|
+
* ActiveRecord 4+
|
8
|
+
* Ruby 2+
|
9
|
+
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
1. Add Voltex to your Gemfile.
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'voltex'
|
16
|
+
```
|
17
|
+
|
18
|
+
2. Generate voltex initializer.
|
19
|
+
|
20
|
+
```
|
21
|
+
bundle exec rails g voltex:install
|
22
|
+
```
|
23
|
+
|
24
|
+
3. Update initializer according your needs.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
Voltex.setup do |config|
|
28
|
+
# Voltex classes configuration.
|
29
|
+
# config.user_class = 'User'
|
30
|
+
# config.role_class = 'Role'
|
31
|
+
# config.permission_class = 'Permission'
|
32
|
+
...
|
33
|
+
end
|
34
|
+
```
|
35
|
+
|
36
|
+
4. Generate voltex resources.
|
37
|
+
|
38
|
+
```
|
39
|
+
bundle exec rails g voltex:resources
|
40
|
+
```
|
41
|
+
|
42
|
+
5. Migrate your database.
|
43
|
+
|
44
|
+
```
|
45
|
+
bundle exec rake db:migrate
|
46
|
+
```
|
47
|
+
|
48
|
+
6. Create default permissions.
|
49
|
+
|
50
|
+
```
|
51
|
+
bundle exec rake voltex
|
52
|
+
```
|
53
|
+
|
54
|
+
7. Load current user permissions in your application controller.
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
class ApplicationController < ActionController::Base
|
58
|
+
...
|
59
|
+
before_action :set_current_permissions
|
60
|
+
end
|
61
|
+
```
|
62
|
+
|
63
|
+
By default this callback preloads permissions for `current_user` if this
|
64
|
+
is defined. If you need that this callback preloads permission for
|
65
|
+
another user just overwrite `voltex_user` method.
|
66
|
+
|
67
|
+
Example:
|
68
|
+
```ruby
|
69
|
+
class ApplicationController < ActionController::Base
|
70
|
+
...
|
71
|
+
def voltex_user
|
72
|
+
# Default is current_user.
|
73
|
+
another_awesome_user
|
74
|
+
end
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
|
79
|
+
## Using Voltex with Pundit
|
80
|
+
Include voltex in your application policy.
|
81
|
+
```ruby
|
82
|
+
require 'voltex/pundit'
|
83
|
+
|
84
|
+
class ApplicationPolicy
|
85
|
+
include Voltex::Pundit
|
86
|
+
end
|
87
|
+
```
|
88
|
+
Now a new helper is available in your policies.
|
89
|
+
```ruby
|
90
|
+
class PostPolicy
|
91
|
+
def index?
|
92
|
+
permission?(Post, :index)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
```
|
96
|
+
|
97
|
+
|
98
|
+
## Using Voltex with CanCan
|
99
|
+
Include voltex in your ability class.
|
100
|
+
```ruby
|
101
|
+
require 'voltex/cancan/ability'
|
102
|
+
|
103
|
+
class Ability
|
104
|
+
include CanCan::Ability
|
105
|
+
include Voltex::CanCan::Ability
|
106
|
+
|
107
|
+
def initialize(user)
|
108
|
+
define_voltex_abilities(user)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
|
114
|
+
## Including and Excluding permissions
|
115
|
+
Update your voltex initializer:
|
116
|
+
```ruby
|
117
|
+
Voltex.setup do |config|
|
118
|
+
# Voltex classes configuration.
|
119
|
+
# config.user_class = 'User'
|
120
|
+
# config.role_class = 'Role'
|
121
|
+
# config.permission_class = 'Permission'
|
122
|
+
#
|
123
|
+
# Excluding default permissions.
|
124
|
+
config.exclude = [
|
125
|
+
{ resource: 'Payment', action: 'destroy' },
|
126
|
+
{ resource: 'Post', action: 'update' },
|
127
|
+
]
|
128
|
+
#
|
129
|
+
# Including other permissions.
|
130
|
+
config.include = [
|
131
|
+
{ resource: 'User', action: 'enable' },
|
132
|
+
{ resource: 'User', action: 'disable' },
|
133
|
+
]
|
134
|
+
end
|
135
|
+
```
|
136
|
+
And run voltex rake task again:
|
137
|
+
```
|
138
|
+
bundle exec rake voltex
|
139
|
+
```
|
140
|
+
|
141
|
+
|
142
|
+
## Defining role permissions
|
143
|
+
Mount voltex engine in your application:
|
144
|
+
```ruby
|
145
|
+
Rails.application.routes.draw do
|
146
|
+
mount Voltex::Engine => '/voltex'
|
147
|
+
end
|
148
|
+
```
|
149
|
+
Run voltex views generator:
|
150
|
+
```
|
151
|
+
bundle exec rails g voltex:views
|
152
|
+
```
|
153
|
+
This will define a route `/voltex/roles/:id/edit` where
|
154
|
+
permissions can be defined for each role.
|
data/Rakefile
CHANGED
data/lib/voltex/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voltex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erick Fabian
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-03-
|
12
|
+
date: 2016-03-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,98 +17,98 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
20
|
+
version: '4.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
27
|
+
version: '4.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: request_store
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: '1.3'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: '1.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: sqlite3
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '1.3'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '1.3'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec-rails
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '3.
|
62
|
+
version: '3.4'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
69
|
+
version: '3.4'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: cucumber
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 2.
|
76
|
+
version: '2.3'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 2.
|
83
|
+
version: '2.3'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: aruba
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0.
|
90
|
+
version: '0.14'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
97
|
+
version: '0.14'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: cancan
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: 1.6
|
104
|
+
version: '1.6'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.6
|
111
|
+
version: '1.6'
|
112
112
|
description: This engine aims to provide an easy way to work with dynamic permissions.
|
113
113
|
email:
|
114
114
|
- fabianerickalfonso@gmail.com
|
@@ -118,6 +118,7 @@ extensions: []
|
|
118
118
|
extra_rdoc_files: []
|
119
119
|
files:
|
120
120
|
- MIT-LICENSE
|
121
|
+
- README.md
|
121
122
|
- Rakefile
|
122
123
|
- app/controllers/voltex/application_controller.rb
|
123
124
|
- app/controllers/voltex/roles_controller.rb
|
@@ -148,7 +149,7 @@ files:
|
|
148
149
|
- lib/voltex/scope.rb
|
149
150
|
- lib/voltex/setup.rb
|
150
151
|
- lib/voltex/version.rb
|
151
|
-
homepage:
|
152
|
+
homepage: https://github.com/SyeSoftware/voltex
|
152
153
|
licenses:
|
153
154
|
- MIT
|
154
155
|
metadata: {}
|
@@ -160,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
161
|
requirements:
|
161
162
|
- - ">="
|
162
163
|
- !ruby/object:Gem::Version
|
163
|
-
version:
|
164
|
+
version: 2.0.0
|
164
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
166
|
requirements:
|
166
167
|
- - ">="
|
@@ -168,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
169
|
version: '0'
|
169
170
|
requirements: []
|
170
171
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
172
|
+
rubygems_version: 2.5.1
|
172
173
|
signing_key:
|
173
174
|
specification_version: 4
|
174
175
|
summary: Dynamic permissions authorization.
|