spree_admin_roles_and_access 1.0.0 → 1.1.0
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.
- data/LICENSE +1 -1
- data/README.md +15 -1
- data/app/controllers/spree/admin/roles_controller.rb +4 -0
- data/app/models/spree/permission.rb +2 -4
- data/app/models/spree/role_decorator.rb +1 -2
- data/lib/spree/permissions.rb +13 -9
- metadata +65 -46
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
SpreeAdminRolesAndAccess
|
1
|
+
SpreeAdminRolesAndAccess [](https://codeclimate.com/github/vinsol/spree_admin_roles_and_access) [](https://travis-ci.org/vinsol/spree_admin_roles_and_access)
|
2
2
|
========================
|
3
3
|
|
4
4
|
This spree extension is build on CanCan to dynamically add new roles and define its access through permissions.
|
@@ -12,6 +12,12 @@ Add spree_admin_roles_and_access to your Gemfile:
|
|
12
12
|
gem 'spree_admin_roles_and_access'
|
13
13
|
```
|
14
14
|
|
15
|
+
But if you are using 2.0.x version of spree
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
gem 'spree_admin_roles_and_access', '1.0.0'
|
19
|
+
```
|
20
|
+
|
15
21
|
Bundle your dependencies and run the installation generator:
|
16
22
|
|
17
23
|
```shell
|
@@ -77,3 +83,11 @@ bundle
|
|
77
83
|
bundle exec rake test_app
|
78
84
|
bundle exec rspec spec
|
79
85
|
```
|
86
|
+
|
87
|
+
|
88
|
+
Credits
|
89
|
+
-------
|
90
|
+
|
91
|
+
[](http://vinsol.com)
|
92
|
+
|
93
|
+
Copyright (c) 2014 [vinsol.com](http://vinsol.com "Ruby on Rails, iOS and Android developers"), released under the New MIT License
|
@@ -2,15 +2,13 @@ module Spree
|
|
2
2
|
class Permission < ActiveRecord::Base
|
3
3
|
include Permissions
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
default_scope order(:priority)
|
5
|
+
default_scope { order(:priority) }
|
8
6
|
|
9
7
|
has_and_belongs_to_many :roles, :join_table => 'spree_roles_permissions', :class_name => 'Spree::Role'
|
10
8
|
|
11
9
|
validates :title, :presence => true, :uniqueness => true
|
12
10
|
|
13
|
-
scope :visible, where(:visible => true)
|
11
|
+
scope :visible, lambda { where(:visible => true) }
|
14
12
|
|
15
13
|
def ability(current_ability, user)
|
16
14
|
send(title, current_ability, user)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
Spree::Role.class_eval do
|
2
|
-
attr_accessible :name, :permission_ids
|
3
2
|
|
4
3
|
has_and_belongs_to_many :permissions, :join_table => 'spree_roles_permissions', :class_name => 'Spree::Permission'
|
5
4
|
|
@@ -15,5 +14,5 @@ Spree::Role.class_eval do
|
|
15
14
|
permissions.pluck(:title).include?(permission_title)
|
16
15
|
end
|
17
16
|
|
18
|
-
scope :default_role, where(:is_default => true)
|
17
|
+
scope :default_role, lambda { where(:is_default => true) }
|
19
18
|
end
|
data/lib/spree/permissions.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
module Spree
|
2
2
|
module Permissions
|
3
|
-
def method_missing(name,
|
4
|
-
|
3
|
+
def method_missing(name, *args, &block)
|
4
|
+
if name.to_s.starts_with?('can')
|
5
|
+
can, action, subject, attribute = find_action_and_subject(name)
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
Permissions.send(:define_method, name) do |current_ability, user|
|
8
|
+
if attribute.nil?
|
9
|
+
current_ability.send(can, action, subject)
|
10
|
+
else
|
11
|
+
current_ability.send(can, action, subject, attribute)
|
12
|
+
end
|
11
13
|
end
|
14
|
+
send(name, args[0], args[1]) if self.respond_to?(name)
|
15
|
+
else
|
16
|
+
super
|
12
17
|
end
|
13
|
-
send(name, current_ability, user) if self.respond_to?(name)
|
14
18
|
end
|
15
|
-
|
19
|
+
|
16
20
|
define_method('default-permissions') do |current_ability, user|
|
17
21
|
current_ability.can [:read, :update, :destroy], Spree.user_class do |resource|
|
18
22
|
resource == user
|
metadata
CHANGED
@@ -1,92 +1,111 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_admin_roles_and_access
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Nishant 'CyRo' Tuteja
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2014-03-10 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: spree_core
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '2.0'
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
25
|
+
requirements:
|
27
26
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 1
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 1
|
32
|
+
version: "2.1"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
30
35
|
description:
|
31
36
|
email: info@vinsol.com
|
32
37
|
executables: []
|
38
|
+
|
33
39
|
extensions: []
|
40
|
+
|
34
41
|
extra_rdoc_files: []
|
35
|
-
|
42
|
+
|
43
|
+
files:
|
36
44
|
- LICENSE
|
37
45
|
- README.md
|
38
|
-
- app/assets/stylesheets/store/spree_admin_roles_and_access.css
|
39
|
-
- app/assets/stylesheets/admin/spree_admin_roles_and_access.css
|
40
|
-
- app/assets/javascripts/store/spree_admin_roles_and_access.js
|
41
46
|
- app/assets/javascripts/admin/spree_admin_roles_and_access.js
|
42
|
-
- app/
|
43
|
-
- app/
|
44
|
-
- app/
|
45
|
-
- app/models/spree/role_decorator.rb
|
46
|
-
- app/models/spree/ability_decorator.rb
|
47
|
+
- app/assets/javascripts/store/spree_admin_roles_and_access.js
|
48
|
+
- app/assets/stylesheets/admin/spree_admin_roles_and_access.css
|
49
|
+
- app/assets/stylesheets/store/spree_admin_roles_and_access.css
|
47
50
|
- app/controllers/spree/admin/base_controller_decorator.rb
|
48
51
|
- app/controllers/spree/admin/roles_controller.rb
|
52
|
+
- app/models/spree/ability_decorator.rb
|
53
|
+
- app/models/spree/permission.rb
|
54
|
+
- app/models/spree/role_decorator.rb
|
55
|
+
- app/models/spree/user_decorator.rb
|
56
|
+
- app/overrides/add_roles_to_admin_configuration_sidebar.rb
|
49
57
|
- app/views/spree/admin/roles/_form.html.erb
|
50
|
-
- app/views/spree/admin/roles/new.html.erb
|
51
58
|
- app/views/spree/admin/roles/edit.html.erb
|
52
59
|
- app/views/spree/admin/roles/index.html.erb
|
53
|
-
-
|
54
|
-
- config/locales/en.yml
|
55
|
-
- config/initializers/cancan_controller_additions.rb
|
56
|
-
- config/initializers/constants.rb
|
60
|
+
- app/views/spree/admin/roles/new.html.erb
|
57
61
|
- config/initializers/cancan_ability.rb
|
62
|
+
- config/initializers/cancan_controller_additions.rb
|
58
63
|
- config/initializers/cancan_rule.rb
|
64
|
+
- config/initializers/constants.rb
|
65
|
+
- config/locales/en.yml
|
66
|
+
- config/routes.rb
|
59
67
|
- lib/generators/spree_admin_roles_and_access/install/install_generator.rb
|
60
68
|
- lib/spree/permissions.rb
|
61
|
-
- lib/spree_admin_roles_and_access.rb
|
62
69
|
- lib/spree_admin_roles_and_access/engine.rb
|
70
|
+
- lib/spree_admin_roles_and_access.rb
|
63
71
|
- lib/tasks/populate.rake
|
64
|
-
- db/migrate/20130709104945_create_spree_roles_permissions.rb
|
65
72
|
- db/migrate/20130709104101_create_spree_permissions.rb
|
73
|
+
- db/migrate/20130709104945_create_spree_roles_permissions.rb
|
66
74
|
- db/migrate/20130709105614_add_editable_is_default_and_index_on_editable_is_default_and_name_to_spree_roles.rb
|
67
75
|
homepage: http://vinsol.com
|
68
76
|
licenses: []
|
77
|
+
|
69
78
|
post_install_message:
|
70
79
|
rdoc_options: []
|
71
|
-
|
80
|
+
|
81
|
+
require_paths:
|
72
82
|
- lib
|
73
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
84
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 53
|
89
|
+
segments:
|
90
|
+
- 1
|
91
|
+
- 9
|
92
|
+
- 3
|
78
93
|
version: 1.9.3
|
79
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
95
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
requirements:
|
86
104
|
- none
|
87
105
|
rubyforge_project:
|
88
|
-
rubygems_version: 1.8.
|
106
|
+
rubygems_version: 1.8.24
|
89
107
|
signing_key:
|
90
108
|
specification_version: 3
|
91
109
|
summary: Dynamically defines roles and grants it permissions
|
92
110
|
test_files: []
|
111
|
+
|