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
@@ -0,0 +1,10 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Permissions::Layout do
4
+ describe ".configure_component" do
5
+ it "changes layout_builder_class_name to `Releaf::Permissions::Page::LayoutBuilder`" do
6
+ expect(Releaf.application.config).to receive(:layout_builder_class_name=).with("Releaf::Permissions::Page::LayoutBuilder")
7
+ described_class.configure_component
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Permissions::Profile do
4
+ describe ".configure_component" do
5
+ it "adds `releaf/permissions/profile` to additional controllers" do
6
+ expect(Releaf.application.config).to receive(:additional_controllers).and_return(["a", "b"])
7
+ expect(Releaf.application.config).to receive(:additional_controllers=).with(["a", "b", "releaf/permissions/profile"])
8
+ described_class.configure_component
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Permissions::Roles do
4
+ describe ".draw_component_routes" do
5
+ it "register roles resource route" do
6
+ expect(described_class).to receive(:resource_route).with("_router", :permissions, :roles)
7
+ described_class.draw_component_routes("_router")
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,38 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Permissions::SettingsManager do
4
+ let(:controller){ Releaf::RootController.new }
5
+ let(:user){ Releaf::Permissions::User.new }
6
+
7
+ before do
8
+ allow(user.settings).to receive(:[]).with("asd.a").and_return("lalal")
9
+ allow(controller).to receive(:user).and_return(user)
10
+ end
11
+
12
+ describe ".configure_component" do
13
+ it "registers itself as settings manager" do
14
+ expect(Releaf.application.config).to receive(:settings_manager=).and_return(described_class)
15
+ described_class.configure_component
16
+ end
17
+ end
18
+
19
+ describe ".read" do
20
+ it "returns user settings for given key" do
21
+ expect(described_class.read(controller: controller, key: "asd.a")).to eq("lalal")
22
+ end
23
+
24
+ context "when controller has no user method" do
25
+ it "returns nil" do
26
+ allow(controller).to receive(:respond_to?).with(:user).and_return(false)
27
+ expect(described_class.read(controller: controller, key: "asd.a")).to be nil
28
+ end
29
+ end
30
+ end
31
+
32
+ describe ".write" do
33
+ it "writes user settings for given key and value" do
34
+ expect(user.settings).to receive(:[]=).with("asd.a", "op")
35
+ described_class.write(controller: controller, key: "asd.a", value: "op")
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Permissions::Users do
4
+ describe ".configure_component" do
5
+ it "sets `releaf/permissions/user` as devise model" do
6
+ expect(Releaf.application.config.permissions).to receive(:devise_for=).with("releaf/permissions/user")
7
+ described_class.configure_component
8
+ end
9
+ end
10
+
11
+ describe ".draw_component_routes" do
12
+ it "register users resource route" do
13
+ expect(described_class).to receive(:resource_route).with("_router", :permissions, :users)
14
+ described_class.draw_component_routes("_router")
15
+ end
16
+ end
17
+ end
@@ -10,32 +10,4 @@ describe Releaf::Permissions::Role do
10
10
  describe 'associations' do
11
11
  it { is_expected.to have_many(:users).dependent(:restrict_with_exception) }
12
12
  end
13
-
14
- describe "#controller_permitted?" do
15
- before do
16
- allow(subject).to receive(:allowed_controllers).and_return(["a", "b"])
17
- end
18
-
19
- context "when given controller name exists within permissions" do
20
- it "returns true" do
21
- expect(subject.controller_permitted?("a")).to be true
22
- expect(subject.controller_permitted?("b")).to be true
23
- end
24
- end
25
-
26
- context "when given controller name does not exist within permissions" do
27
- it "returns false" do
28
- expect(subject.controller_permitted?("c")).to be false
29
- end
30
- end
31
- end
32
-
33
- describe "#allowed_controllers" do
34
- it "returns array of roles allowed controllers" do
35
- subject.permissions.build(permission: "controller.a")
36
- subject.permissions.build(permission: "controller.x")
37
- subject.permissions.build(permission: "export.some_data")
38
- expect(subject.allowed_controllers).to match_array(["a", "x"])
39
- end
40
- end
41
13
  end
@@ -14,10 +14,40 @@ describe Releaf::Permissions::User do
14
14
  it { is_expected.to belong_to(:role) }
15
15
  end
16
16
 
17
- describe "#display_name" do
18
- let(:user){ FactoryGirl.create(:user) }
17
+ describe "#releaf_title" do
19
18
  it "returns concated name and surname" do
20
- expect(user.display_name).to eq(user.name + " " + user.surname)
19
+ subject.name = "John"
20
+ subject.surname = "Baum"
21
+ expect(subject.releaf_title).to eq("John Baum")
22
+ end
23
+ end
24
+
25
+ describe "#password_required?" do
26
+ context "when existing record" do
27
+ before do
28
+ allow(subject).to receive(:new_record?).and_return(false)
29
+ end
30
+
31
+ context "when new password is blank" do
32
+ it "returns true" do
33
+ allow(subject).to receive(:encrypted_password).and_return("")
34
+ expect(subject.password_required?).to be true
35
+ end
36
+ end
37
+
38
+ context "when new password is not blank" do
39
+ it "returns false" do
40
+ allow(subject).to receive(:encrypted_password).and_return("asdasd")
41
+ expect(subject.password_required?).to be false
42
+ end
43
+ end
44
+ end
45
+
46
+ context "when new record" do
47
+ it "returns true" do
48
+ allow(subject).to receive(:new_record?).and_return(true)
49
+ expect(subject.password_required?).to be true
50
+ end
21
51
  end
22
52
  end
23
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: releaf-permissions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - CubeSystems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-26 00:00:00.000000000 Z
11
+ date: 2016-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: releaf-core
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.1
19
+ version: 1.0.3
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: 0.2.1
26
+ version: 1.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: devise
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4.2'
41
41
  description: Admin/role subsystem for releaf
42
42
  email: info@cubesystems.lv
43
43
  executables: []
@@ -45,46 +45,61 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - LICENSE
48
- - app/assets/stylesheets/releaf/controllers/releaf/permissions/sessions.scss
48
+ - app/assets/stylesheets/controllers/releaf/permissions/sessions.scss
49
+ - app/builders/releaf/permissions/page/header_builder.rb
50
+ - app/builders/releaf/permissions/page/layout_builder.rb
51
+ - app/builders/releaf/permissions/page/menu_builder.rb
49
52
  - app/builders/releaf/permissions/profile/form_builder.rb
50
53
  - app/builders/releaf/permissions/roles/form_builder.rb
51
54
  - app/builders/releaf/permissions/roles/table_builder.rb
52
55
  - app/builders/releaf/permissions/users/form_builder.rb
53
56
  - app/builders/releaf/permissions/users/table_builder.rb
54
- - app/controllers/releaf/permissions/home_controller.rb
55
57
  - app/controllers/releaf/permissions/profile_controller.rb
56
58
  - app/controllers/releaf/permissions/roles_controller.rb
57
59
  - app/controllers/releaf/permissions/sessions_controller.rb
58
60
  - app/controllers/releaf/permissions/users_controller.rb
59
- - app/lib/releaf/permissions/access_control.rb
60
61
  - app/models/releaf/permissions/permission.rb
61
62
  - app/models/releaf/permissions/role.rb
62
63
  - app/models/releaf/permissions/user.rb
63
64
  - app/views/releaf/permissions/sessions/new.html.haml
64
65
  - lib/releaf-permissions.rb
65
- - lib/releaf/permissions/builders_autoload.rb
66
- - lib/releaf/permissions/devise_component.rb
66
+ - lib/releaf/permissions/access_control.rb
67
+ - lib/releaf/permissions/configuration.rb
68
+ - lib/releaf/permissions/controller_support.rb
69
+ - lib/releaf/permissions/default_controller_resolver.rb
67
70
  - lib/releaf/permissions/engine.rb
68
- - lib/releaf/permissions/profile_component.rb
69
- - lib/releaf/permissions/roles_component.rb
70
- - lib/releaf/permissions/users_component.rb
71
- - releaf-permissions.gemspec
72
- - spec/builders/profile/form_builder_spec.rb
73
- - spec/builders/roles/form_builder_spec.rb
74
- - spec/builders/roles/table_builder_spec.rb
75
- - spec/builders/users/form_builder_spec.rb
76
- - spec/builders/users/table_builder_spec.rb
77
- - spec/controllers/permissions/home_controller_spec.rb
71
+ - lib/releaf/permissions/layout.rb
72
+ - lib/releaf/permissions/profile.rb
73
+ - lib/releaf/permissions/roles.rb
74
+ - lib/releaf/permissions/settings_manager.rb
75
+ - lib/releaf/permissions/users.rb
76
+ - spec/builders/releaf/permissions/page/header_builder_spec.rb
77
+ - spec/builders/releaf/permissions/page/layout_builder_spec.rb
78
+ - spec/builders/releaf/permissions/page/menu_builder_spec.rb
79
+ - spec/builders/releaf/permissions/profile/form_builder_spec.rb
80
+ - spec/builders/releaf/permissions/roles/form_builder_spec.rb
81
+ - spec/builders/releaf/permissions/roles/table_builder_spec.rb
82
+ - spec/builders/releaf/permissions/users/form_builder_spec.rb
83
+ - spec/builders/releaf/permissions/users/table_builder_spec.rb
78
84
  - spec/controllers/permissions/profile_controller_spec.rb
79
85
  - spec/controllers/permissions/users_controller_spec.rb
80
86
  - spec/features/profile_updating_spec.rb
81
87
  - spec/features/roles_spec.rb
82
88
  - spec/features/users_spec.rb
83
89
  - spec/lib/access_control_spec.rb
90
+ - spec/lib/releaf/permissions/configuration_spec.rb
91
+ - spec/lib/releaf/permissions/controller_support_spec.rb
92
+ - spec/lib/releaf/permissions/default_controller_resolver_spec.rb
93
+ - spec/lib/releaf/permissions/layout_spec.rb
94
+ - spec/lib/releaf/permissions/profile_spec.rb
95
+ - spec/lib/releaf/permissions/roles_spec.rb
96
+ - spec/lib/releaf/permissions/settings_manager_spec.rb
97
+ - spec/lib/releaf/permissions/users_spec.rb
84
98
  - spec/models/permissions/role_spec.rb
85
99
  - spec/models/permissions/user_spec.rb
86
100
  homepage: https://github.com/cubesystems/releaf
87
- licenses: []
101
+ licenses:
102
+ - MIT
88
103
  metadata: {}
89
104
  post_install_message:
90
105
  rdoc_options: []
@@ -102,23 +117,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
117
  version: '0'
103
118
  requirements: []
104
119
  rubyforge_project:
105
- rubygems_version: 2.4.8
120
+ rubygems_version: 2.5.1
106
121
  signing_key:
107
122
  specification_version: 4
108
123
  summary: Built-in admin and role support for releaf
109
124
  test_files:
110
- - spec/builders/profile/form_builder_spec.rb
111
- - spec/builders/roles/form_builder_spec.rb
112
- - spec/builders/roles/table_builder_spec.rb
113
- - spec/builders/users/form_builder_spec.rb
114
- - spec/builders/users/table_builder_spec.rb
115
- - spec/controllers/permissions/home_controller_spec.rb
125
+ - spec/builders/releaf/permissions/page/header_builder_spec.rb
126
+ - spec/builders/releaf/permissions/page/layout_builder_spec.rb
127
+ - spec/builders/releaf/permissions/page/menu_builder_spec.rb
128
+ - spec/builders/releaf/permissions/profile/form_builder_spec.rb
129
+ - spec/builders/releaf/permissions/roles/form_builder_spec.rb
130
+ - spec/builders/releaf/permissions/roles/table_builder_spec.rb
131
+ - spec/builders/releaf/permissions/users/form_builder_spec.rb
132
+ - spec/builders/releaf/permissions/users/table_builder_spec.rb
116
133
  - spec/controllers/permissions/profile_controller_spec.rb
117
134
  - spec/controllers/permissions/users_controller_spec.rb
118
135
  - spec/features/profile_updating_spec.rb
119
136
  - spec/features/roles_spec.rb
120
137
  - spec/features/users_spec.rb
121
138
  - spec/lib/access_control_spec.rb
139
+ - spec/lib/releaf/permissions/configuration_spec.rb
140
+ - spec/lib/releaf/permissions/controller_support_spec.rb
141
+ - spec/lib/releaf/permissions/default_controller_resolver_spec.rb
142
+ - spec/lib/releaf/permissions/layout_spec.rb
143
+ - spec/lib/releaf/permissions/profile_spec.rb
144
+ - spec/lib/releaf/permissions/roles_spec.rb
145
+ - spec/lib/releaf/permissions/settings_manager_spec.rb
146
+ - spec/lib/releaf/permissions/users_spec.rb
122
147
  - spec/models/permissions/role_spec.rb
123
148
  - spec/models/permissions/user_spec.rb
124
- has_rdoc:
@@ -1,32 +0,0 @@
1
- module Releaf::Permissions
2
- class HomeController < Releaf::BaseController
3
- def home
4
- respond_to do |format|
5
- format.html { redirect_to default_or_available_controller_path }
6
- end
7
- end
8
- protected
9
-
10
- def default_or_available_controller_path
11
- controllers_to_try.each do |controller_string|
12
- begin
13
- return url_for(action: 'index', controller: "/#{controller_string}")
14
- rescue ActionController::UrlGenerationError
15
- next
16
- end
17
- end
18
-
19
- root_path
20
- end
21
-
22
- def controllers_to_try
23
- [access_control.user.role.default_controller, allowed_controllers].flatten.uniq
24
- end
25
-
26
- def allowed_controllers
27
- # Note: This basically sorts allowed controllers in order specified by
28
- # Releaf.application.config.available_controllers
29
- Releaf.application.config.available_controllers & access_control.user.role.allowed_controllers
30
- end
31
- end
32
- end
@@ -1,36 +0,0 @@
1
- module Releaf::Permissions
2
- class AccessControl
3
- include ActiveModel::Model
4
- attr_accessor :controller
5
-
6
- def controller_permitted?(controller_name)
7
- permitted_controllers.include?(controller_name) || user.role.controller_permitted?(controller_name)
8
- end
9
-
10
- def current_controller_name
11
- controller.class.name.gsub("Controller", "").underscore
12
- end
13
-
14
- def user
15
- controller.send("current_#{devise_model_name}")
16
- end
17
-
18
- def permitted_controllers
19
- ['releaf/permissions/home', 'releaf/core/errors']
20
- end
21
-
22
- def authorized?
23
- method_name = "#{devise_model_name}_signed_in?"
24
- controller.send(method_name)
25
- end
26
-
27
- def authenticate!
28
- method_name = "authenticate_#{devise_model_name}!"
29
- controller.send(method_name)
30
- end
31
-
32
- def devise_model_name
33
- Releaf.application.config.devise_for.underscore.tr('/', '_')
34
- end
35
- end
36
- end
@@ -1,11 +0,0 @@
1
- root_path = File.expand_path('../..', File.dirname(__dir__))
2
- files = %w(
3
- roles/form_builder
4
- roles/table_builder
5
- users/form_builder
6
- users/table_builder
7
- profile/form_builder
8
- )
9
- files.each do|file|
10
- require "#{root_path}/app/builders/releaf/permissions/#{file}"
11
- end
@@ -1,8 +0,0 @@
1
- module Releaf::Permissions::DeviseComponent
2
- def self.draw_component_routes router
3
- router.devise_for Releaf.application.config.devise_for, path: "", controllers: { sessions: "releaf/permissions/sessions" }
4
- router.namespace :releaf, path: nil do
5
- router.root to: "permissions/home#home", as: :root
6
- end
7
- end
8
- end
@@ -1,7 +0,0 @@
1
- module Releaf::Permissions::UsersComponent
2
- extend Releaf::Core::Component
3
-
4
- def self.draw_component_routes(router)
5
- resource_route(router, :permissions, :users)
6
- end
7
- end