releaf-permissions 0.2.1 → 1.0.3

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -21
  3. data/app/assets/stylesheets/{releaf/controllers → controllers}/releaf/permissions/sessions.scss +0 -0
  4. data/app/builders/releaf/permissions/page/header_builder.rb +35 -0
  5. data/app/builders/releaf/permissions/page/layout_builder.rb +17 -0
  6. data/app/builders/releaf/permissions/page/menu_builder.rb +18 -0
  7. data/app/builders/releaf/permissions/roles/form_builder.rb +10 -6
  8. data/app/builders/releaf/permissions/roles/table_builder.rb +2 -6
  9. data/app/controllers/releaf/permissions/profile_controller.rb +25 -46
  10. data/app/controllers/releaf/permissions/roles_controller.rb +3 -5
  11. data/app/controllers/releaf/permissions/sessions_controller.rb +17 -27
  12. data/app/controllers/releaf/permissions/users_controller.rb +11 -14
  13. data/app/models/releaf/permissions/role.rb +0 -25
  14. data/app/models/releaf/permissions/user.rb +3 -9
  15. data/lib/releaf-permissions.rb +23 -27
  16. data/lib/releaf/permissions/access_control.rb +37 -0
  17. data/lib/releaf/permissions/configuration.rb +26 -0
  18. data/lib/releaf/permissions/controller_support.rb +33 -0
  19. data/lib/releaf/permissions/default_controller_resolver.rb +22 -0
  20. data/lib/releaf/permissions/engine.rb +1 -18
  21. data/lib/releaf/permissions/layout.rb +5 -0
  22. data/lib/releaf/permissions/{profile_component.rb → profile.rb} +6 -2
  23. data/lib/releaf/permissions/{roles_component.rb → roles.rb} +2 -2
  24. data/lib/releaf/permissions/settings_manager.rb +22 -0
  25. data/lib/releaf/permissions/users.rb +11 -0
  26. data/spec/builders/releaf/permissions/page/header_builder_spec.rb +87 -0
  27. data/spec/builders/releaf/permissions/page/layout_builder_spec.rb +64 -0
  28. data/spec/builders/releaf/permissions/page/menu_builder_spec.rb +100 -0
  29. data/spec/builders/{profile → releaf/permissions/profile}/form_builder_spec.rb +0 -0
  30. data/spec/builders/releaf/permissions/roles/form_builder_spec.rb +56 -0
  31. data/spec/builders/releaf/permissions/roles/table_builder_spec.rb +41 -0
  32. data/spec/builders/{users → releaf/permissions/users}/form_builder_spec.rb +0 -0
  33. data/spec/builders/{users → releaf/permissions/users}/table_builder_spec.rb +0 -0
  34. data/spec/controllers/permissions/profile_controller_spec.rb +0 -27
  35. data/spec/controllers/permissions/users_controller_spec.rb +1 -1
  36. data/spec/features/roles_spec.rb +3 -3
  37. data/spec/features/users_spec.rb +2 -2
  38. data/spec/lib/access_control_spec.rb +35 -50
  39. data/spec/lib/releaf/permissions/configuration_spec.rb +38 -0
  40. data/spec/lib/releaf/permissions/controller_support_spec.rb +76 -0
  41. data/spec/lib/releaf/permissions/default_controller_resolver_spec.rb +49 -0
  42. data/spec/lib/releaf/permissions/layout_spec.rb +10 -0
  43. data/spec/lib/releaf/permissions/profile_spec.rb +11 -0
  44. data/spec/lib/releaf/permissions/roles_spec.rb +10 -0
  45. data/spec/lib/releaf/permissions/settings_manager_spec.rb +38 -0
  46. data/spec/lib/releaf/permissions/users_spec.rb +17 -0
  47. data/spec/models/permissions/role_spec.rb +0 -28
  48. data/spec/models/permissions/user_spec.rb +33 -3
  49. metadata +56 -32
  50. data/app/controllers/releaf/permissions/home_controller.rb +0 -32
  51. data/app/lib/releaf/permissions/access_control.rb +0 -36
  52. data/lib/releaf/permissions/builders_autoload.rb +0 -11
  53. data/lib/releaf/permissions/devise_component.rb +0 -8
  54. data/lib/releaf/permissions/users_component.rb +0 -7
  55. data/releaf-permissions.gemspec +0 -19
  56. data/spec/builders/roles/form_builder_spec.rb +0 -38
  57. data/spec/builders/roles/table_builder_spec.rb +0 -29
  58. data/spec/controllers/permissions/home_controller_spec.rb +0 -52
@@ -1,19 +0,0 @@
1
- require File.expand_path("../../releaf-core/lib/releaf/version.rb", __FILE__)
2
-
3
- Gem::Specification.new do |s|
4
- s.name = "releaf-permissions"
5
- s.version = Releaf::VERSION
6
-
7
- s.summary = "Built-in admin and role support for releaf"
8
- s.description = "Admin/role subsystem for releaf"
9
- s.authors = ["CubeSystems"]
10
- s.email = 'info@cubesystems.lv'
11
- s.homepage = 'https://github.com/cubesystems/releaf'
12
-
13
- s.files = `git ls-files`.split("\n")
14
- s.test_files = Dir["spec/**/*"]
15
-
16
- s.add_dependency 'releaf-core', Releaf::VERSION
17
- s.add_dependency 'devise'
18
-
19
- end
@@ -1,38 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Releaf::Permissions::Roles::FormBuilder, type: :class do
4
- class FormBuilderTestHelper < ActionView::Base; end
5
- let(:template){ FormBuilderTestHelper.new }
6
- let(:object){ Releaf::Permissions::Role.new }
7
- let(:subject){ described_class.new(:resource, object, template, {}) }
8
-
9
- describe "#render_default_controller" do
10
- it "pass localized controller options to releaf item field" do
11
- allow(Releaf.application.config).to receive(:available_controllers)
12
- .and_return(["releaf/i18n_database/translations", "releaf/content/nodes"])
13
- translated_controllers = {"Releaf/i18n database/translations"=>"releaf/i18n_database/translations", "Releaf/content/nodes"=>"releaf/content/nodes"}
14
-
15
- allow(subject).to receive(:releaf_item_field).with(:default_controller, options: {select_options: translated_controllers}).and_return("x")
16
- expect(subject.render_default_controller).to eq("x")
17
- end
18
- end
19
-
20
- describe "#render_permissions" do
21
- it "returns associated set field" do
22
- options = {association: {items: "x", field: :permission}}
23
- allow(subject).to receive(:permission_items).and_return("x")
24
- allow(subject).to receive(:releaf_associated_set_field).with(:permissions, options: options).and_return("y")
25
- expect(subject.render_permissions).to eq("y")
26
- end
27
- end
28
-
29
- describe "#permission_items" do
30
- it "returns scoped and translated controller values" do
31
- allow(Releaf.application.config).to receive(:available_controllers)
32
- .and_return(["releaf/content/nodes", "admin/chapters"])
33
- allow(subject).to receive(:t).with("releaf/content/nodes", scope: "admin.controllers").and_return("controller 1")
34
- allow(subject).to receive(:t).with("admin/chapters", scope: "admin.controllers").and_return("controller 2")
35
- expect(subject.permission_items).to eq("controller.releaf/content/nodes" => "controller 1", "controller.admin/chapters" => "controller 2")
36
- end
37
- end
38
- end
@@ -1,29 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Permissions::Roles::TableBuilder, type: :class do
4
- class TableBuilderTestHelper < ActionView::Base; end
5
- let(:template){ TableBuilderTestHelper.new }
6
- let(:resource_class){ Releaf::Permissions::Role }
7
- let(:subject){ described_class.new([], resource_class, template, {}) }
8
-
9
- describe "#column_names" do
10
- it "returns name and default_controller as column names array" do
11
- expect(subject.column_names).to eq([:name, :default_controller])
12
- end
13
- end
14
-
15
- describe "#default_controller_content" do
16
- context "when default controller is defined for given resource" do
17
- it "returns translated value" do
18
- allow(I18n).to receive(:t).with("releaf/i18n/database/translations", scope: "admin.controllers").and_return("x")
19
- expect(subject.default_controller_content(resource_class.new(default_controller: "releaf/i18n_database/translations"))).to eq("x")
20
- end
21
- end
22
-
23
- context "when default controller is not defined for given resource" do
24
- it "returns dash" do
25
- expect(subject.default_controller_content(resource_class.new)).to eq("-")
26
- end
27
- end
28
- end
29
- end
@@ -1,52 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Releaf::Permissions::HomeController do
4
-
5
- describe "GET home" do
6
- context "when authorized as user" do
7
- login_as_user :user
8
-
9
- before do
10
- @role = subject.current_releaf_permissions_user.role
11
- end
12
-
13
- it "redirects to users controller" do
14
- get :home
15
- expect(response).to redirect_to(url_for(action: 'index', controller: @role.default_controller, only_path: true))
16
- end
17
-
18
- context "when users default controller doesn't exist" do
19
- before do
20
- @role.update_attribute(:default_controller, 'non_existing/controllers_name')
21
- end
22
-
23
- it "redirects to first available controller" do
24
- get :home
25
- expect(response).to redirect_to(url_for(action: 'index', controller: "releaf/content/nodes", only_path: true))
26
- end
27
-
28
- context "when no releaf controller is available" do
29
- before do
30
- @role.permissions = []
31
- @role.save!
32
- end
33
-
34
- it "redirects to root_path" do
35
- get :home
36
- expect(response).to redirect_to(root_path)
37
- end
38
- end
39
- end
40
- end
41
-
42
- context "when authorized as content user" do
43
- login_as_user :user
44
-
45
- it "redirects to content controller" do
46
- get :home
47
- expect(response)
48
- .to redirect_to(url_for(action: 'index', controller: subject.current_releaf_permissions_user.role.default_controller, only_path: true))
49
- end
50
- end
51
- end
52
- end