releaf-permissions 0.2.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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