rails-rapido 0.9.4 → 0.9.5

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
2
  SHA256:
3
- metadata.gz: ba95de45e5c2da70d27301f8e1dfa05aa67826b67e5181b1b0a1abf99c8364c1
4
- data.tar.gz: 135e89202da1052dc49da04497896d4254fb63e20f096b6473c6ef62b66b7367
3
+ metadata.gz: 8ad59d38c8d9c50021b6be12a144491e17d2025040f65c7714537ebe9831cf8e
4
+ data.tar.gz: b45ee3ef697c15438f7295704bcb4b0266a22612a9e59ddfb2c5f8e1c37a25c9
5
5
  SHA512:
6
- metadata.gz: 7538a106aab6e8abce41e80fbf69809834bf798350298a23a695a98d9be9939f8e5f8721b4748b05d298f8249ec5b8196872279818b047ae43ba8d2e0c66aee7
7
- data.tar.gz: afa72fbef3ad4a135dbddcb91ca8e2c2f0ecf7e1909ee863f9dc50d9a15fb0acbbf5df5a56790749e4ee63622ece92c245ef79df2f271072cb745c7908572c96
6
+ metadata.gz: 7bed2d6715e48d291343ae9dd18baed0feacbf9013372e518360c0df2ae0c02749f5b908d16de92756df30c2c3d2c889bfa91043def6571ce1127774e7c40b6c
7
+ data.tar.gz: '019ef8a8ff99a1c00a03e6ac395f435ee7ca96f1059afe2ef84b4ca1d0059703b0c8fbf05dd6f1ba3f4f10aed828902b70031f0ddae47dbf24ebf2e35ae47b63'
data/README.md CHANGED
@@ -14,8 +14,14 @@ Below is a typical example of a class using Rapido. More examples are available
14
14
 
15
15
  class DocumentsController < ApplicationController
16
16
  include Rapido::ApiController
17
+
18
+ allow_if do
19
+ current_user.is_editor?
20
+ end
21
+
22
+ allow_only :create, :delete, :index, :show, :update
17
23
 
18
- attr_permitted :file, file_name, :category
24
+ attr_permitted :file, :file_name, :category
19
25
 
20
26
  belongs_to :user, getter: :current_user
21
27
 
@@ -46,6 +52,14 @@ end
46
52
 
47
53
  ## API
48
54
 
55
+ ### `allow_if`
56
+
57
+ Accepts a method name as symbol or block. Method supplied or block must return true to allow the action to proceed, otherwise a status 401 is returned with no body.
58
+
59
+ ### `allow_only`
60
+
61
+ Accepts a list of symbols. These symbols specify the controller actions that are allowed for this controller.
62
+
49
63
  ### `attr_permitted`
50
64
 
51
65
  Accepts a list of symbols. These symbols specify the attributes that are supplied to StrongParameters as permitted parameters in `create` and `update` actions.
@@ -18,6 +18,8 @@ module Rapido
18
18
  end
19
19
 
20
20
  before_action :permit_only_allowed_actions
21
+
22
+ before_action :permit_only_if
21
23
  end
22
24
 
23
25
  def index
@@ -129,6 +131,14 @@ module Rapido
129
131
  head :unauthorized unless allowed_actions.include?(params[:action].to_sym)
130
132
  end
131
133
 
134
+ def permit_only_if
135
+ if(allow_if)
136
+ unless (allow_if.is_a?(Symbol) ? send(allow_if) : instance_eval(&allow_if))
137
+ head :unauthorized
138
+ end
139
+ end
140
+ end
141
+
132
142
  def resource_presenter(new_resource = nil)
133
143
  @resource_presenter ||= begin
134
144
  args = presenter_args.nil? ? nil : presenter_args.map { |arg| params[arg] }
@@ -28,6 +28,10 @@ module Rapido
28
28
  @allowed_actions = ary
29
29
  end
30
30
 
31
+ def allow_if(str = nil, &block)
32
+ @allow_if = str || block
33
+ end
34
+
31
35
  def attr_permitted(*ary)
32
36
  @resource_permitted_params = ary
33
37
  end
@@ -101,6 +105,10 @@ module Rapido
101
105
  setting(:allowed_actions)
102
106
  end
103
107
 
108
+ def allow_if
109
+ setting(:allow_if)
110
+ end
111
+
104
112
  def build_resource(params = {})
105
113
  return owner.send('build_' + resource_class_name, params) if setting(:has_one)
106
114
  return owner.send(resource_class_name.pluralize).build(params) if owner && owner.respond_to?(resource_class_name.pluralize)
@@ -1,3 +1,3 @@
1
1
  module Rapido
2
- VERSION = '0.9.4'
2
+ VERSION = '0.9.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-rapido
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Kirst
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-01 00:00:00.000000000 Z
11
+ date: 2021-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler