spree_admin_roles_and_access 1.3.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -5
- data/app/controllers/spree/admin/permissions_controller.rb +6 -0
- data/app/controllers/spree/admin/roles_controller.rb +2 -2
- data/app/models/spree/ability_decorator.rb +2 -2
- data/app/models/spree/permission.rb +1 -1
- data/app/models/spree/role_decorator.rb +4 -4
- data/app/models/spree/user_decorator.rb +1 -1
- data/app/overrides/spree/admin/roles/_form/add_permissions_to_role_form.html.erb.deface +13 -0
- data/app/overrides/spree/admin/shared/sub_menu/_configuration/add_permissions_to_configuration_sub_menu.html.erb.deface +2 -0
- data/app/views/spree/admin/permissions/_form.html.erb +22 -0
- data/app/views/spree/admin/permissions/edit.html.erb +10 -0
- data/app/views/spree/admin/permissions/index.html.erb +40 -0
- data/app/views/spree/admin/permissions/new.html.erb +10 -0
- data/config/locales/en.yml +8 -1
- data/config/locales/ru.yml +14 -0
- data/config/routes.rb +2 -1
- data/lib/spree/permissions.rb +5 -6
- metadata +20 -18
- data/app/overrides/add_roles_to_admin_configuration_sidebar.rb +0 -8
- data/app/views/spree/admin/roles/_form.html.erb +0 -19
- data/app/views/spree/admin/roles/edit.html.erb +0 -2
- data/app/views/spree/admin/roles/index.html.erb +0 -32
- data/app/views/spree/admin/roles/new.html.erb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64146eca6e414833fc625640dbcf12effbd80543
|
4
|
+
data.tar.gz: f611e1895d9ca6dbde6c3dfeca952b06f3461690
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a45920143eb48b5918613f6f607ec98a749300f9a7814ed11d64c5ff42544c7da2ac268f5aa64032b8cec1cbdf572d5a1174342f434163468ec1f9975f3017e2
|
7
|
+
data.tar.gz: 3f26e89a3a966d30a58f19b329b095c59dcc2496e992229b7da4415c2b4f011b0e7e1bff39e9875be1d75ccbf89172ceaa33773ad24c79cba1221b4c39841cb7
|
data/README.md
CHANGED
@@ -81,11 +81,6 @@ Points to remember
|
|
81
81
|
Override a module Permission. And define the permission in a method, and create a permission in the database.
|
82
82
|
|
83
83
|
|
84
|
-
To Do
|
85
|
-
-----
|
86
|
-
|
87
|
-
To provide a space in admin end, from where permissions can be added dynamically.
|
88
|
-
|
89
84
|
Testing
|
90
85
|
-------
|
91
86
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Spree
|
2
|
-
|
2
|
+
module Admin
|
3
3
|
class RolesController < ResourceController
|
4
4
|
before_filter :load_permissions, :only => [:edit, :new, :create, :update]
|
5
5
|
before_filter :restrict_unless_editable, :only => [:edit, :update]
|
@@ -22,4 +22,4 @@ module Spree
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
@@ -10,7 +10,7 @@ module Spree
|
|
10
10
|
alias_action :show, :to => :read
|
11
11
|
alias_action :delete, :to => :destroy
|
12
12
|
|
13
|
-
user ||= Spree
|
13
|
+
user ||= Spree.user_class.new
|
14
14
|
|
15
15
|
user_roles(user).each do |role|
|
16
16
|
ability(role, user)
|
@@ -30,4 +30,4 @@ module Spree
|
|
30
30
|
role.ability(self, user)
|
31
31
|
end
|
32
32
|
end
|
33
|
-
end
|
33
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Spree::Role.class_eval do
|
2
|
-
|
2
|
+
|
3
3
|
has_and_belongs_to_many :permissions, :join_table => 'spree_roles_permissions', :class_name => 'Spree::Permission'
|
4
4
|
|
5
|
-
validates :name, :
|
5
|
+
validates :name, uniqueness: true, allow_blank: true
|
6
6
|
|
7
7
|
def ability(current_ability, user)
|
8
8
|
permissions.each do |permission|
|
@@ -14,5 +14,5 @@ Spree::Role.class_eval do
|
|
14
14
|
permissions.pluck(:title).include?(permission_title)
|
15
15
|
end
|
16
16
|
|
17
|
-
scope :default_role, lambda { where(:is_default => true) }
|
18
|
-
end
|
17
|
+
scope :default_role, lambda { where(:is_default => true) }
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!-- insert_bottom "[data-hook='additional_role_fields']" -->
|
2
|
+
|
3
|
+
<div data-hook="admin_role_form_permissions" class="form-group">
|
4
|
+
<strong><%= Spree.t(:permissions) %></strong>
|
5
|
+
<% @permissions.each do |permission| %>
|
6
|
+
<div class="checkbox">
|
7
|
+
<%= label_tag "user_spree_permission_#{permission.title}" do %>
|
8
|
+
<%= check_box_tag 'role[permission_ids][]', permission.id, @role.has_permission?(permission.title), id: "user_spree_permission_#{permission.title}" %>
|
9
|
+
<%= permission.title.gsub('-',' ').titleize %>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div data-hook="admin_permission_form_fields">
|
2
|
+
<div data-hook="permission_title" class="form-group">
|
3
|
+
<%= f.label :title, Spree.t(:permission_title) %> <span class="required">*</span>
|
4
|
+
<%= f.text_field :title, class: 'form-control' %>
|
5
|
+
</div>
|
6
|
+
<div data-hook="permission_priority" class="form-group">
|
7
|
+
<%= f.label :priority, Spree.t(:permission_priority) %> <span class="required">*</span>
|
8
|
+
<%= f.number_field :priority, in: 0..9, step: 1, class: 'form-control' %>
|
9
|
+
</div>
|
10
|
+
<div data-hook="permission_visible" class="checkbox">
|
11
|
+
<label>
|
12
|
+
<%= f.check_box :visible, value: true %><%= Spree.t(:permission_visible) %>
|
13
|
+
</label>
|
14
|
+
</div>
|
15
|
+
<div data-hook="permission_boolean" class="checkbox">
|
16
|
+
<label>
|
17
|
+
<%= f.check_box :boolean, value: true %> <%= Spree.t(:permission_boolean) %>
|
18
|
+
</label>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div data-hook="additional_permission_fields"></div>
|
22
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for :page_title do %>
|
2
|
+
<%= Spree.t(:editing_resource, resource: Spree::Permission.model_name.human) %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= form_for [:admin, @permission] do |f| %>
|
6
|
+
<fieldset>
|
7
|
+
<%= render partial: 'form', locals: { f: f } %>
|
8
|
+
<%= render partial: 'spree/admin/shared/edit_resource_links' %>
|
9
|
+
</fieldset>
|
10
|
+
<% end %>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<% content_for :page_title do %>
|
2
|
+
<%= Spree.t(:permissions) %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :page_actions do %>
|
6
|
+
<%= button_link_to Spree.t(:new_permission), new_object_url, class: "btn-success", icon: 'add', id: 'admin_new_permission_link' %>
|
7
|
+
<% end if can? :create, Spree::Permission %>
|
8
|
+
|
9
|
+
<% if @permissions.any? %>
|
10
|
+
<table class="table">
|
11
|
+
<thead>
|
12
|
+
<tr data-hook="admin_permissions_index_headers">
|
13
|
+
<th><%= Spree.t(:permission_title) %></th>
|
14
|
+
<th><%= Spree.t(:permission_priority) %></th>
|
15
|
+
<th><%= Spree.t(:permission_visible) %></th>
|
16
|
+
<th><%= Spree.t(:permission_boolean) %></th>
|
17
|
+
<th class="actions"></th>
|
18
|
+
</tr>
|
19
|
+
</thead>
|
20
|
+
<tbody>
|
21
|
+
<% @permissions.each do |permission|%>
|
22
|
+
<tr id="<%= spree_dom_id permission %>" data-hook="admin_permissions_index_rows">
|
23
|
+
<td><%= permission.title %></td>
|
24
|
+
<td><%= permission.priority %></td>
|
25
|
+
<td><%= permission.visible %></td>
|
26
|
+
<td><%= permission.boolean %></td>
|
27
|
+
<td class="actions text-right">
|
28
|
+
<%= link_to_edit(permission, no_text: true) if can? :edit, permission %>
|
29
|
+
<%= link_to_delete(permission, no_text: true) if can? :destroy, permission %>
|
30
|
+
</td>
|
31
|
+
</tr>
|
32
|
+
<% end %>
|
33
|
+
</tbody>
|
34
|
+
</table>
|
35
|
+
<% else %>
|
36
|
+
<div class="alert alert-warning">
|
37
|
+
<%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::Permission)) %>,
|
38
|
+
<%= link_to(Spree.t(:add_one), new_object_url) if can? :create, Spree::Permission %>!
|
39
|
+
</div>
|
40
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for :page_title do %>
|
2
|
+
<%= Spree.t(:new_permission) %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= form_for [:admin, @permission] do |f| %>
|
6
|
+
<fieldset>
|
7
|
+
<%= render partial: 'form', locals: { f: f } %>
|
8
|
+
<%= render partial: 'spree/admin/shared/new_resource_links' %>
|
9
|
+
</fieldset>
|
10
|
+
<% end %>
|
data/config/locales/en.yml
CHANGED
@@ -7,6 +7,13 @@ en:
|
|
7
7
|
edit_role: "Edit Role"
|
8
8
|
listing_roles: "Listing Roles"
|
9
9
|
roles: "Roles"
|
10
|
-
|
10
|
+
role_name: "Name"
|
11
|
+
role_editable: "Editable"
|
12
|
+
role_is_default: "Is default"
|
11
13
|
permissions: "Permissions"
|
12
14
|
save_changes: "Save Changes"
|
15
|
+
new_permission: "New Permission"
|
16
|
+
permission_title: "Title"
|
17
|
+
permission_priority: "Priority"
|
18
|
+
permission_visible: "Visible"
|
19
|
+
permission_boolean: "Boolean"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
ru:
|
2
|
+
spree:
|
3
|
+
new_role: "Создать роль"
|
4
|
+
edit_role: "Редактировать роль"
|
5
|
+
listing_roles: "Список ролей"
|
6
|
+
permissions: "Права доступа"
|
7
|
+
new_permission: "Создать право доступа"
|
8
|
+
role_name: "Наименование"
|
9
|
+
role_editable: "Доступно редактирование"
|
10
|
+
role_is_default: "По-умолчанию"
|
11
|
+
permission_title: "Наименование"
|
12
|
+
permission_priority: "Приоритет"
|
13
|
+
permission_visible: "Видимость"
|
14
|
+
permission_boolean: "Boolean"
|
data/config/routes.rb
CHANGED
data/lib/spree/permissions.rb
CHANGED
@@ -36,19 +36,18 @@ module Spree
|
|
36
36
|
end
|
37
37
|
|
38
38
|
define_method('default-admin-permissions') do |current_ability, user|
|
39
|
-
current_ability.can :admin,
|
40
|
-
current_ability.can :index, 'spree/admin/overview'
|
39
|
+
current_ability.can :admin, Spree::Store.default
|
41
40
|
end
|
42
41
|
|
43
42
|
define_method('can-update-spree/users') do |current_ability, user|
|
44
|
-
current_ability.can :update, Spree
|
43
|
+
current_ability.can :update, Spree.user_class
|
45
44
|
# The permission of cannot update role_ids was given to user so that no onw with this permission can change role of user.
|
46
|
-
current_ability.cannot :update, Spree
|
45
|
+
current_ability.cannot :update, Spree.user_class, :role_ids
|
47
46
|
end
|
48
47
|
|
49
48
|
define_method('can-create-spree/users') do |current_ability, user|
|
50
|
-
current_ability.can :create, Spree
|
51
|
-
current_ability.cannot :create, Spree
|
49
|
+
current_ability.can :create, Spree.user_class
|
50
|
+
current_ability.cannot :create, Spree.user_class, :role_ids
|
52
51
|
end
|
53
52
|
|
54
53
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_admin_roles_and_access
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nishant 'CyRo' Tuteja
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_auth_devise
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,21 +81,21 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 3.1.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: shoulda-matchers
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '2.8'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '2.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rspec-activemodel-mocks
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -261,22 +261,25 @@ files:
|
|
261
261
|
- app/assets/stylesheets/spree/backend/spree_admin_roles_and_access.css
|
262
262
|
- app/assets/stylesheets/spree/frontend/spree_admin_roles_and_access.css
|
263
263
|
- app/controllers/spree/admin/base_controller_decorator.rb
|
264
|
+
- app/controllers/spree/admin/permissions_controller.rb
|
264
265
|
- app/controllers/spree/admin/roles_controller.rb
|
265
266
|
- app/models/spree/ability_decorator.rb
|
266
267
|
- app/models/spree/permission.rb
|
267
268
|
- app/models/spree/role_decorator.rb
|
268
269
|
- app/models/spree/user_decorator.rb
|
269
|
-
- app/overrides/
|
270
|
-
- app/
|
271
|
-
- app/views/spree/admin/
|
272
|
-
- app/views/spree/admin/
|
273
|
-
- app/views/spree/admin/
|
270
|
+
- app/overrides/spree/admin/roles/_form/add_permissions_to_role_form.html.erb.deface
|
271
|
+
- app/overrides/spree/admin/shared/sub_menu/_configuration/add_permissions_to_configuration_sub_menu.html.erb.deface
|
272
|
+
- app/views/spree/admin/permissions/_form.html.erb
|
273
|
+
- app/views/spree/admin/permissions/edit.html.erb
|
274
|
+
- app/views/spree/admin/permissions/index.html.erb
|
275
|
+
- app/views/spree/admin/permissions/new.html.erb
|
274
276
|
- config/initializers/cancan_ability.rb
|
275
277
|
- config/initializers/cancan_controller_additions.rb
|
276
278
|
- config/initializers/cancan_rule.rb
|
277
279
|
- config/initializers/constants.rb
|
278
280
|
- config/locales/en.yml
|
279
281
|
- config/locales/es-MX.yml
|
282
|
+
- config/locales/ru.yml
|
280
283
|
- config/routes.rb
|
281
284
|
- db/migrate/20130709104101_create_spree_permissions.rb
|
282
285
|
- db/migrate/20130709104945_create_spree_roles_permissions.rb
|
@@ -297,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
297
300
|
requirements:
|
298
301
|
- - ">="
|
299
302
|
- !ruby/object:Gem::Version
|
300
|
-
version:
|
303
|
+
version: 2.0.0
|
301
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
302
305
|
requirements:
|
303
306
|
- - ">="
|
@@ -306,9 +309,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
309
|
requirements:
|
307
310
|
- none
|
308
311
|
rubyforge_project:
|
309
|
-
rubygems_version: 2.
|
312
|
+
rubygems_version: 2.4.5
|
310
313
|
signing_key:
|
311
314
|
specification_version: 4
|
312
315
|
summary: Dynamically defines roles and grants it permissions
|
313
316
|
test_files: []
|
314
|
-
has_rdoc:
|
@@ -1,8 +0,0 @@
|
|
1
|
-
Deface::Override.new(
|
2
|
-
:virtual_path => 'spree/admin/shared/_configuration_menu',
|
3
|
-
:name => 'add_roles_to_admin_configuration_sidebar',
|
4
|
-
:insert_bottom => "[data-hook='admin_configurations_sidebar_menu']",
|
5
|
-
:text => %q{
|
6
|
-
<%= configurations_sidebar_menu_item Spree.t(:roles), admin_roles_path %>
|
7
|
-
}
|
8
|
-
)
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<div>
|
2
|
-
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @role } %>
|
3
|
-
</div>
|
4
|
-
|
5
|
-
<table>
|
6
|
-
<%= form_tag [:admin, @role], :method => method do %>
|
7
|
-
<tr><td><%= Spree.t(:name) %>:</td><td><%= text_field_tag 'role[name]', @role.name %></td></tr>
|
8
|
-
<tr><td><%= Spree.t(:permissions) %>:</td>
|
9
|
-
<td><% @permissions.each do |permission| %>
|
10
|
-
<% if @role.has_permission?(permission.title) %>
|
11
|
-
<span class='permission-check-box'><%= check_box_tag 'role[permission_ids][]', permission.id, true %> <%= permission.title.gsub('-',' ').titleize %></span>
|
12
|
-
<% else %>
|
13
|
-
<span class='permission-check-box'><%= check_box_tag 'role[permission_ids][]', permission.id %> <%= permission.title.gsub('-',' ').titleize %></span>
|
14
|
-
<% end %>
|
15
|
-
<br />
|
16
|
-
<% end %></td></tr>
|
17
|
-
<tr><td></td><td><%= submit_tag Spree.t(:save_changes) %></td></tr>
|
18
|
-
<% end %>
|
19
|
-
</table>
|
@@ -1,32 +0,0 @@
|
|
1
|
-
<%= render :partial => 'spree/admin/shared/configuration_menu' %>
|
2
|
-
|
3
|
-
<% content_for :page_title do %>
|
4
|
-
<%= Spree.t(:listing_roles) %>
|
5
|
-
<% end %>
|
6
|
-
|
7
|
-
<% content_for :page_actions do %>
|
8
|
-
<li>
|
9
|
-
<%= button_link_to Spree.t(:new_role), new_admin_role_path %>
|
10
|
-
</li>
|
11
|
-
<% end %>
|
12
|
-
|
13
|
-
<%= paginate @roles %>
|
14
|
-
|
15
|
-
<table class='index'>
|
16
|
-
<thead>
|
17
|
-
<tr>
|
18
|
-
<th><%= Spree.t(:name) %></th>
|
19
|
-
</tr>
|
20
|
-
</thead>
|
21
|
-
|
22
|
-
<tbody>
|
23
|
-
<% @roles.each do |role| %>
|
24
|
-
<tr class="<%= cycle('odd', 'even') %>">
|
25
|
-
<td class="align-center"><%= role.name %></td>
|
26
|
-
<% if role.editable? %>
|
27
|
-
<td class="actions"><%= link_to_edit role, :no_text => true, :class => 'edit' %></td>
|
28
|
-
<% end %>
|
29
|
-
</tr>
|
30
|
-
<% end %>
|
31
|
-
</tbody>
|
32
|
-
</table>
|