active_entry 1.2.4 → 2.0.0

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.
@@ -1,3 +1,3 @@
1
1
  module ActiveEntry
2
- VERSION = '1.2.4'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Installs Active Entry. Generates an ApplicationPolicy.
3
+
4
+ Example:
5
+ bin/rails generate active_entry:install
6
+
7
+ This will create:
8
+ app/policies/application_policy.rb
@@ -0,0 +1,9 @@
1
+ module ActiveEntry
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('templates', __dir__)
4
+
5
+ def create_application_policy
6
+ template "application_policy.rb", File.join("app/policies/application_policy.rb"), skip: true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ module ApplicationPolicy
2
+ class Authentication < ActiveEntry::Base::Authentication
3
+ end
4
+
5
+ class Authorization < ActiveEntry::Base::Authorization
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Generates a new policy class for authentication/authorization.
3
+
4
+ Example:
5
+ bin/rails generate policy Users
6
+
7
+ This will create:
8
+ app/policies/users_policy.rb
@@ -0,0 +1,7 @@
1
+ class PolicyGenerator < Rails::Generators::NamedBase
2
+ source_root File.expand_path('templates', __dir__)
3
+
4
+ def create_policy
5
+ template "policy.rb", File.join("app/policies", class_path, "#{file_name}_policy.rb")
6
+ end
7
+ end
@@ -0,0 +1,53 @@
1
+ module <%= class_name %>Policy
2
+ class Authentication < ApplicationPolicy::Authentication
3
+ # It's all about decision makers. In your decision makers you tell
4
+ # Active Entry when and if somebody is authenticated/authorized.
5
+ #
6
+ # You can declare decision makers for any method you want.
7
+ # Just use the same name as your action and add a ? at the end.
8
+
9
+ # def index?
10
+ # end
11
+
12
+ # def new?
13
+ # end
14
+
15
+ # def create?
16
+ # end
17
+
18
+ # def show?
19
+ # end
20
+
21
+ # def edit?
22
+ # end
23
+
24
+ # def update?
25
+ # end
26
+
27
+ # def destroy?
28
+ # end
29
+ end
30
+
31
+ class Authorization < ApplicationPolicy::Authorization
32
+ # def index?
33
+ # end
34
+
35
+ # def new?
36
+ # end
37
+
38
+ # def create?
39
+ # end
40
+
41
+ # def show?
42
+ # end
43
+
44
+ # def edit?
45
+ # end
46
+
47
+ # def update?
48
+ # end
49
+
50
+ # def destroy?
51
+ # end
52
+ end
53
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Generates a new policy spec to test authentication/authorization.
3
+
4
+ Example:
5
+ bin/rails generate rspec:policy Users
6
+
7
+ This will create:
8
+ spec/policies/users_policy_spec.rb
@@ -0,0 +1,11 @@
1
+ module Rspec
2
+ module Generators
3
+ class PolicyGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path("templates", __dir__)
5
+
6
+ def create_policy_spec
7
+ template "policy_spec.rb", File.join("spec/policies", class_path, "#{file_name}_policy_spec.rb")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ require "<%= File.exists?('spec/rails_helper.rb') ? 'rails_helper' : 'spec_helper' %>"
2
+
3
+ RSpec.describe <%= class_name %>Policy, type: :policy do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_entry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TFM Agency GmbH
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-19 00:00:00.000000000 Z
12
+ date: 2021-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -81,8 +81,8 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
- description: An easy and flexible access control system. No need for policies, abilities,
85
- etc. Do authentication and authorization directly in your controller.
84
+ description: An easy and flexible access control system. Authentication and authorization
85
+ before a method/action is executed.
86
86
  email:
87
87
  - hello@tfm.agency
88
88
  executables: []
@@ -92,11 +92,25 @@ files:
92
92
  - MIT-LICENSE
93
93
  - README.md
94
94
  - Rakefile
95
+ - app/controllers/concerns/active_entry/concern.rb
96
+ - app/helpers/active_entry/view_helper.rb
95
97
  - lib/active_entry.rb
96
- - lib/active_entry/controller_methods.rb
98
+ - lib/active_entry/base.rb
97
99
  - lib/active_entry/errors.rb
100
+ - lib/active_entry/generators.rb
101
+ - lib/active_entry/policy_finder.rb
98
102
  - lib/active_entry/railtie.rb
103
+ - lib/active_entry/rspec.rb
99
104
  - lib/active_entry/version.rb
105
+ - lib/generators/active_entry/install/USAGE
106
+ - lib/generators/active_entry/install/install_generator.rb
107
+ - lib/generators/active_entry/install/templates/application_policy.rb
108
+ - lib/generators/policy/USAGE
109
+ - lib/generators/policy/policy_generator.rb
110
+ - lib/generators/policy/templates/policy.rb
111
+ - lib/generators/rspec/USAGE
112
+ - lib/generators/rspec/policy_generator.rb
113
+ - lib/generators/rspec/templates/policy_spec.rb
100
114
  - lib/tasks/active_entry_tasks.rake
101
115
  homepage: https://github.com/TFM-Agency/active_entry
102
116
  licenses:
@@ -1,99 +0,0 @@
1
- # @author Tobias Feistmantl
2
- #
3
- # Helper methods for your controller
4
- # to identify RESTful actions.
5
- module ActiveEntry
6
- # @!visibility private
7
- def method_missing method_name, *args
8
- method_name_str = method_name.to_s
9
-
10
- if methods.include?(:action_name) && method_name_str.include?("_action?")
11
- method_name_str.slice! "_action?"
12
-
13
- if methods.include? method_name_str.to_sym
14
- return method_name_str == action_name
15
- end
16
- end
17
-
18
- super
19
- end
20
-
21
- # @return [Boolean]
22
- # True if the called action
23
- # is a only-read action.
24
- def read_action?
25
- action_name == 'index' ||
26
- action_name == 'show'
27
- end
28
-
29
- # @return [Boolean]
30
- # True if the called action
31
- # is a write action.
32
- def write_action?
33
- action_name == 'new' ||
34
- action_name == 'create' ||
35
- action_name == 'edit' ||
36
- action_name == 'update' ||
37
- action_name == 'destroy'
38
- end
39
-
40
- # @return [Boolean]
41
- # True if the called action
42
- # is a change action.
43
- def change_action?
44
- action_name == 'edit' ||
45
- action_name == 'update' ||
46
- action_name == 'destroy'
47
- end
48
-
49
- # @note
50
- # Also true for the pseudo
51
- # update action `new`.
52
- #
53
- # @note
54
- # Only true for create methods
55
- # such as new and create.
56
- #
57
- # @return [Boolean]
58
- # True if the called action
59
- # is a create action.
60
- def create_action?
61
- action_name == 'new' ||
62
- action_name == 'create'
63
- end
64
-
65
- # @note
66
- # Also true for the pseudo
67
- # update action `edit`.
68
- #
69
- # @return [Boolean]
70
- # True if the called action
71
- # is a update action.
72
- def update_action?
73
- action_name == 'edit' ||
74
- action_name == 'update'
75
- end
76
-
77
- # @return [Boolean]
78
- # True if it's a destroy action.
79
- def destroy_action?
80
- action_name == 'destroy'
81
- end
82
- alias delete_action? destroy_action?
83
-
84
- # @return [Boolean]
85
- # True if called action
86
- # is index, new or create.
87
- def collection_action?
88
- action_name == 'index' ||
89
- action_name == 'new' ||
90
- action_name == 'create'
91
- end
92
-
93
- # @return [Boolean]
94
- # True if called action
95
- # is not a collection action.
96
- def member_action?
97
- !collection_action?
98
- end
99
- end