effective_trash 0.3.3 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c0d2f4720fc5c9eab98d6f37af76dd186969899b
4
- data.tar.gz: 1c24401c5cb30fbdd9954e48c84b65a74ff61b96
2
+ SHA256:
3
+ metadata.gz: a74c78184cb3ec900ce2336bd3cc00b2f4db31df0743aae8f0c0e81345cc262e
4
+ data.tar.gz: 1e79f5bfacebcda566c36b5f11ce271be53e5f975294fb49babd82e349c98f0a
5
5
  SHA512:
6
- metadata.gz: 322a4d6d987aaa52a181afcc16225b4f01537d430194f8ab81a6b8a22c557fbb8db86213044ea06e3217c153f0e1197926e4926aad228a40975adbf73137ffd9
7
- data.tar.gz: 5d03c55908dad4827371a2edb199a2aea6c8724637bcfc86decbc57f3bf0a2adc1553468b1d9e0561365a6460be1108284ae80026b4869917508bea46a47722d
6
+ metadata.gz: 85d54f6faddf75ef480bd44c6a81c12013aca4ca3f63c81a64f228be7cda2cf8720a6743d2871c0f7d191c70431837ebe07086e3aff5fb0c56f70459219b365b
7
+ data.tar.gz: 3bc56877b4ec4abd95d7958aa945375c64ff16463b244514c0fef3dd9c2c2210e46a67c14e2a25921c1ad8871e278972fdfac1e8d87fd9aa0aedfa1966f55ccd
data/README.md CHANGED
@@ -46,7 +46,7 @@ and to your contoller:
46
46
 
47
47
  ```ruby
48
48
  class ApplicationController < ActionController::Base
49
- before_action :set_effective_trash_current_user
49
+ around_action :set_effective_trash_current_user
50
50
  end
51
51
  ```
52
52
 
@@ -114,4 +114,3 @@ MIT License. Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
114
114
  4. Push to the branch (`git push origin my-new-feature`)
115
115
  5. Bonus points for test coverage
116
116
  6. Create new Pull Request
117
-
@@ -11,16 +11,16 @@ module Admin
11
11
 
12
12
  @page_title = 'Trash'
13
13
 
14
- EffectiveTrash.authorize!(self, :index, Effective::Trash)
15
- EffectiveTrash.authorize!(self, :admin, :effective_trash)
14
+ EffectiveResources.authorize!(self, :index, Effective::Trash)
15
+ EffectiveResources.authorize!(self, :admin, :effective_trash)
16
16
  end
17
17
 
18
18
  def show
19
19
  @trash = Effective::Trash.all.find(params[:id])
20
20
  @page_title = "Trash item - #{@trash.trashed_to_s}"
21
21
 
22
- EffectiveTrash.authorize!(self, :show, @trash)
23
- EffectiveTrash.authorize!(self, :admin, :effective_trash)
22
+ EffectiveResources.authorize!(self, :show, @trash)
23
+ EffectiveResources.authorize!(self, :admin, :effective_trash)
24
24
  end
25
25
  end
26
26
  end
@@ -8,7 +8,7 @@ module Effective
8
8
 
9
9
  @page_title = 'Trash'
10
10
 
11
- EffectiveTrash.authorize!(self, :index, Effective::Trash.new(user_id: current_user.id))
11
+ EffectiveResources.authorize!(self, :index, Effective::Trash.new(user_id: current_user.id))
12
12
  end
13
13
 
14
14
  # This is the User show event
@@ -16,12 +16,12 @@ module Effective
16
16
  @trash = Effective::Trash.where(user_id: current_user.id).find(params[:id])
17
17
  @page_title = "Trash item - #{@trash.to_s}"
18
18
 
19
- EffectiveTrash.authorize!(self, :show, @trash)
19
+ EffectiveResources.authorize!(self, :show, @trash)
20
20
  end
21
21
 
22
22
  def restore
23
23
  @trash = Effective::Trash.find(params[:id])
24
- EffectiveTrash.authorize!(self, :update, @trash)
24
+ EffectiveResources.authorize!(self, :update, @trash)
25
25
 
26
26
  Effective::Trash.transaction do
27
27
  begin
@@ -34,9 +34,9 @@ module ActsAsTrashable
34
34
  end
35
35
 
36
36
  module ClassMethods
37
+ def acts_as_trashable?; true; end
37
38
  end
38
39
 
39
40
  # Regular instance methods
40
41
 
41
42
  end
42
-
@@ -2,27 +2,6 @@ EffectiveTrash.setup do |config|
2
2
  # Configure Database Table
3
3
  config.trash_table_name = :trash
4
4
 
5
- # Authorization Method
6
- #
7
- # This method is called by all controller actions with the appropriate action and resource
8
- # If the method returns false, an Effective::AccessDenied Error will be raised (see README.md for complete info)
9
- #
10
- # Use via Proc (and with CanCan):
11
- # config.authorization_method = Proc.new { |controller, action, resource| can?(action, resource) }
12
- #
13
- # Use via custom method:
14
- # config.authorization_method = :my_authorization_method
15
- #
16
- # And then in your application_controller.rb:
17
- #
18
- # def my_authorization_method(action, resource)
19
- # current_user.is?(:admin)
20
- # end
21
- #
22
- # Or disable the check completely:
23
- # config.authorization_method = false
24
- config.authorization_method = Proc.new { |controller, action, resource| authorize!(action, resource) } # CanCanCan
25
-
26
5
  # Admin Screens Layout Settings
27
6
  config.layout = 'application' # All EffectiveTrash controllers will use this layout
28
7
 
@@ -6,10 +6,14 @@ module EffectiveTrash
6
6
  # before_action :set_effective_trash_current_user
7
7
 
8
8
  def set_effective_trash_current_user
9
- EffectiveTrash.current_user = current_user
9
+ begin
10
+ EffectiveTrash.current_user = current_user
11
+ yield
12
+ ensure
13
+ EffectiveTrash.current_user = nil
14
+ end
10
15
  end
11
16
 
12
17
  end
13
18
  end
14
19
  end
15
-
@@ -1,3 +1,3 @@
1
1
  module EffectiveTrash
2
- VERSION = '0.3.3'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
@@ -4,33 +4,13 @@ require 'effective_trash/version'
4
4
 
5
5
  module EffectiveTrash
6
6
 
7
- # The following are all valid config keys
8
- mattr_accessor :trash_table_name
9
-
10
- mattr_accessor :authorization_method
11
- mattr_accessor :layout
12
- mattr_accessor :routes_enabled
13
-
14
- def self.setup
15
- yield self
7
+ def self.config_keys
8
+ [
9
+ :trash_table_name, :layout, :routes_enabled
10
+ ]
16
11
  end
17
12
 
18
- def self.authorized?(controller, action, resource)
19
- @_exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact
20
-
21
- return !!authorization_method unless authorization_method.respond_to?(:call)
22
- controller = controller.controller if controller.respond_to?(:controller)
23
-
24
- begin
25
- !!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
26
- rescue *@_exceptions
27
- false
28
- end
29
- end
30
-
31
- def self.authorize!(controller, action, resource)
32
- raise Effective::AccessDenied unless authorized?(controller, action, resource)
33
- end
13
+ include EffectiveGem
34
14
 
35
15
  # This is set by the "set_effective_trash_current_user" before_filter.
36
16
  def self.current_user=(user)
@@ -45,13 +25,14 @@ module EffectiveTrash
45
25
  # This is run in a before_destroy, or through a script.
46
26
  def self.trash!(obj)
47
27
  args = (obj.respond_to?(:acts_as_trashable_options) ? obj.acts_as_trashable_options : {})
28
+ details = Effective::Resource.new(obj).instance_attributes(only: args[:only], except: args[:except])
48
29
 
49
30
  trash = Effective::Trash.new(
50
31
  trashed: obj,
51
32
  user: EffectiveTrash.current_user,
52
33
  trashed_to_s: obj.to_s,
53
- trashed_extra: (trashed_extra if obj.respond_to?(:trashed_extra)),
54
- details: Effective::Resource.new(obj).instance_attributes(args)
34
+ trashed_extra: obj.try(:trashed_extra),
35
+ details: details
55
36
  ).save!
56
37
  end
57
38
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_trash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-02 00:00:00.000000000 Z
11
+ date: 2023-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -80,7 +80,6 @@ files:
80
80
  - app/datatables/effective_trash_datatable.rb
81
81
  - app/helpers/effective_trash_helper.rb
82
82
  - app/models/concerns/acts_as_trashable.rb
83
- - app/models/effective/access_denied.rb
84
83
  - app/models/effective/trash.rb
85
84
  - app/views/admin/trash/_actions.html.haml
86
85
  - app/views/admin/trash/index.html.haml
@@ -102,7 +101,7 @@ homepage: https://github.com/code-and-effect/effective_trash
102
101
  licenses:
103
102
  - MIT
104
103
  metadata: {}
105
- post_install_message:
104
+ post_install_message:
106
105
  rdoc_options: []
107
106
  require_paths:
108
107
  - lib
@@ -117,9 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
116
  - !ruby/object:Gem::Version
118
117
  version: '0'
119
118
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.4.5.1
122
- signing_key:
119
+ rubygems_version: 3.1.2
120
+ signing_key:
123
121
  specification_version: 4
124
122
  summary: Trash and Restore any Active Record object.
125
123
  test_files: []
@@ -1,17 +0,0 @@
1
- unless defined?(Effective::AccessDenied)
2
- module Effective
3
- class AccessDenied < StandardError
4
- attr_reader :action, :subject
5
-
6
- def initialize(message = nil, action = nil, subject = nil)
7
- @message = message
8
- @action = action
9
- @subject = subject
10
- end
11
-
12
- def to_s
13
- @message || I18n.t(:'unauthorized.default', :default => 'Access Denied')
14
- end
15
- end
16
- end
17
- end