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.
- checksums.yaml +4 -4
- data/LICENSE +19 -21
- data/app/assets/stylesheets/{releaf/controllers → controllers}/releaf/permissions/sessions.scss +0 -0
- data/app/builders/releaf/permissions/page/header_builder.rb +35 -0
- data/app/builders/releaf/permissions/page/layout_builder.rb +17 -0
- data/app/builders/releaf/permissions/page/menu_builder.rb +18 -0
- data/app/builders/releaf/permissions/roles/form_builder.rb +10 -6
- data/app/builders/releaf/permissions/roles/table_builder.rb +2 -6
- data/app/controllers/releaf/permissions/profile_controller.rb +25 -46
- data/app/controllers/releaf/permissions/roles_controller.rb +3 -5
- data/app/controllers/releaf/permissions/sessions_controller.rb +17 -27
- data/app/controllers/releaf/permissions/users_controller.rb +11 -14
- data/app/models/releaf/permissions/role.rb +0 -25
- data/app/models/releaf/permissions/user.rb +3 -9
- data/lib/releaf-permissions.rb +23 -27
- data/lib/releaf/permissions/access_control.rb +37 -0
- data/lib/releaf/permissions/configuration.rb +26 -0
- data/lib/releaf/permissions/controller_support.rb +33 -0
- data/lib/releaf/permissions/default_controller_resolver.rb +22 -0
- data/lib/releaf/permissions/engine.rb +1 -18
- data/lib/releaf/permissions/layout.rb +5 -0
- data/lib/releaf/permissions/{profile_component.rb → profile.rb} +6 -2
- data/lib/releaf/permissions/{roles_component.rb → roles.rb} +2 -2
- data/lib/releaf/permissions/settings_manager.rb +22 -0
- data/lib/releaf/permissions/users.rb +11 -0
- data/spec/builders/releaf/permissions/page/header_builder_spec.rb +87 -0
- data/spec/builders/releaf/permissions/page/layout_builder_spec.rb +64 -0
- data/spec/builders/releaf/permissions/page/menu_builder_spec.rb +100 -0
- data/spec/builders/{profile → releaf/permissions/profile}/form_builder_spec.rb +0 -0
- data/spec/builders/releaf/permissions/roles/form_builder_spec.rb +56 -0
- data/spec/builders/releaf/permissions/roles/table_builder_spec.rb +41 -0
- data/spec/builders/{users → releaf/permissions/users}/form_builder_spec.rb +0 -0
- data/spec/builders/{users → releaf/permissions/users}/table_builder_spec.rb +0 -0
- data/spec/controllers/permissions/profile_controller_spec.rb +0 -27
- data/spec/controllers/permissions/users_controller_spec.rb +1 -1
- data/spec/features/roles_spec.rb +3 -3
- data/spec/features/users_spec.rb +2 -2
- data/spec/lib/access_control_spec.rb +35 -50
- data/spec/lib/releaf/permissions/configuration_spec.rb +38 -0
- data/spec/lib/releaf/permissions/controller_support_spec.rb +76 -0
- data/spec/lib/releaf/permissions/default_controller_resolver_spec.rb +49 -0
- data/spec/lib/releaf/permissions/layout_spec.rb +10 -0
- data/spec/lib/releaf/permissions/profile_spec.rb +11 -0
- data/spec/lib/releaf/permissions/roles_spec.rb +10 -0
- data/spec/lib/releaf/permissions/settings_manager_spec.rb +38 -0
- data/spec/lib/releaf/permissions/users_spec.rb +17 -0
- data/spec/models/permissions/role_spec.rb +0 -28
- data/spec/models/permissions/user_spec.rb +33 -3
- metadata +56 -32
- data/app/controllers/releaf/permissions/home_controller.rb +0 -32
- data/app/lib/releaf/permissions/access_control.rb +0 -36
- data/lib/releaf/permissions/builders_autoload.rb +0 -11
- data/lib/releaf/permissions/devise_component.rb +0 -8
- data/lib/releaf/permissions/users_component.rb +0 -7
- data/releaf-permissions.gemspec +0 -19
- data/spec/builders/roles/form_builder_spec.rb +0 -38
- data/spec/builders/roles/table_builder_spec.rb +0 -29
- data/spec/controllers/permissions/home_controller_spec.rb +0 -52
data/releaf-permissions.gemspec
DELETED
@@ -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
|