guachiman 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_dependency 'railties', '>= 3.2'
21
+ spec.add_dependency 'activerecord', '>= 3.2'
22
+ spec.add_dependency 'strong_parameters', '>= 0.2.1'
21
23
  spec.add_development_dependency 'minitest'
22
24
  spec.add_development_dependency 'minitest-focus'
23
25
  spec.add_development_dependency 'bundler', '~> 1.3'
@@ -1,9 +1,12 @@
1
1
  require 'guachiman/version'
2
2
  require 'guachiman/permissions'
3
- require 'guachiman/strong_parameters'
4
3
  require 'guachiman/params'
4
+ require 'active_record'
5
+ require 'strong_parameters'
5
6
 
6
7
  if defined? Rails
7
8
  require 'guachiman/rails/railtie'
8
9
  require 'guachiman/rails/permissible'
10
+
11
+ ActiveRecord::Base.send :include, ActiveModel::ForbiddenAttributesProtection
9
12
  end
@@ -22,17 +22,25 @@ module Guachiman
22
22
  end
23
23
  end
24
24
 
25
+ def allowed_params
26
+ read_allowed_params & write_allowed_params
27
+ end
28
+
25
29
  def allow_param resources, attributes
26
30
  allow_read_param resources, attributes
27
31
  allow_write_param resources, attributes
28
32
  end
29
33
 
34
+ def allow_param? resource, attribute
35
+ allow_write_param?(resource, attribute) && allow_read_param?(resource, attribute)
36
+ end
37
+
30
38
  def permit_params! params
31
39
  if @allow_all
32
40
  params.permit!
33
41
  elsif write_allowed_params
34
42
  write_allowed_params.each do |resource, attributes|
35
- params[resource] = params[resource].permit(*attributes) if params[resource].respond_to? :permit
43
+ params[resource] = params[resource].permit(*attributes) if params[resource]
36
44
  end
37
45
  end
38
46
  end
@@ -7,9 +7,7 @@ module Guachiman
7
7
  Array(controllers).each do |controller|
8
8
  Array(actions).each do |action|
9
9
  allowed_actions[controller] ||= {}
10
- allowed_actions[controller].merge!({
11
- action => (block || true)
12
- })
10
+ allowed_actions[controller].merge! action => (block || true)
13
11
  end
14
12
  end
15
13
  end
@@ -20,7 +20,7 @@ module Guachiman
20
20
 
21
21
  def authorize
22
22
  if current_permission.allow? params[:controller], params[:action], current_resource
23
- current_permission.permit_params!(params) if current_permission.respond_to? :permit_params!
23
+ current_permission.permit_params! params
24
24
  else
25
25
  not_authorized
26
26
  end
@@ -28,9 +28,9 @@ module Guachiman
28
28
 
29
29
  def not_authorized
30
30
  if current_user
31
- redirect_to :root, alert: t(:not_authorized)
31
+ redirect_to root_path, alert: t(:not_authorized)
32
32
  else
33
- redirect_to :login, alert: t(:please_login)
33
+ redirect_to login_path, alert: t(:please_login)
34
34
  end
35
35
  end
36
36
  end
@@ -1,3 +1,3 @@
1
1
  module Guachiman
2
- VERSION = '0.0.8'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -4,13 +4,15 @@ require 'generators/guachiman/install/install_generator'
4
4
 
5
5
  class InstallGeneratorTest < Rails::Generators::TestCase
6
6
  DESTINATION = File.expand_path File.join(File.dirname(__FILE__), '..', '..', 'tmp')
7
+ FileUtils.mkdir_p DESTINATION unless Dir.exists? DESTINATION
8
+
7
9
  destination DESTINATION
8
10
 
9
11
  tests Guachiman::Generators::InstallGenerator
10
12
  setup :prepare_destination
11
13
 
12
14
  def prepare_destination
13
- FileUtils.rm_r "#{DESTINATION}/app"
15
+ FileUtils.rm_r "#{DESTINATION}/app" if Dir.exists? "#{DESTINATION}/app"
14
16
  FileUtils.mkdir_p "#{DESTINATION}/app"
15
17
  FileUtils.mkdir_p "#{DESTINATION}/app/models"
16
18
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guachiman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Francesco Rodriguez
@@ -9,53 +10,92 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-04-09 00:00:00.000000000 Z
13
+ date: 2013-06-04 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: railties
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: '3.2'
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
- - - '>='
28
+ - - ! '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: '3.2'
31
+ - !ruby/object:Gem::Dependency
32
+ name: activerecord
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '3.2'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '3.2'
47
+ - !ruby/object:Gem::Dependency
48
+ name: strong_parameters
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.1
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 0.2.1
28
63
  - !ruby/object:Gem::Dependency
29
64
  name: minitest
30
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
31
67
  requirements:
32
- - - '>='
68
+ - - ! '>='
33
69
  - !ruby/object:Gem::Version
34
70
  version: '0'
35
71
  type: :development
36
72
  prerelease: false
37
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
38
75
  requirements:
39
- - - '>='
76
+ - - ! '>='
40
77
  - !ruby/object:Gem::Version
41
78
  version: '0'
42
79
  - !ruby/object:Gem::Dependency
43
80
  name: minitest-focus
44
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
45
83
  requirements:
46
- - - '>='
84
+ - - ! '>='
47
85
  - !ruby/object:Gem::Version
48
86
  version: '0'
49
87
  type: :development
50
88
  prerelease: false
51
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
52
91
  requirements:
53
- - - '>='
92
+ - - ! '>='
54
93
  - !ruby/object:Gem::Version
55
94
  version: '0'
56
95
  - !ruby/object:Gem::Dependency
57
96
  name: bundler
58
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
59
99
  requirements:
60
100
  - - ~>
61
101
  - !ruby/object:Gem::Version
@@ -63,6 +103,7 @@ dependencies:
63
103
  type: :development
64
104
  prerelease: false
65
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
66
107
  requirements:
67
108
  - - ~>
68
109
  - !ruby/object:Gem::Version
@@ -70,15 +111,17 @@ dependencies:
70
111
  - !ruby/object:Gem::Dependency
71
112
  name: rake
72
113
  requirement: !ruby/object:Gem::Requirement
114
+ none: false
73
115
  requirements:
74
- - - '>='
116
+ - - ! '>='
75
117
  - !ruby/object:Gem::Version
76
118
  version: '0'
77
119
  type: :development
78
120
  prerelease: false
79
121
  version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
80
123
  requirements:
81
- - - '>='
124
+ - - ! '>='
82
125
  - !ruby/object:Gem::Version
83
126
  version: '0'
84
127
  description: Basic authorization library inspired in Ryan Bates code
@@ -102,33 +145,33 @@ files:
102
145
  - lib/guachiman/permissions.rb
103
146
  - lib/guachiman/rails/permissible.rb
104
147
  - lib/guachiman/rails/railtie.rb
105
- - lib/guachiman/strong_parameters.rb
106
148
  - lib/guachiman/version.rb
107
149
  - test/generators/install_generator_test.rb
108
150
  - test/test_helper.rb
109
151
  homepage: https://github.com/epiclabs/guachiman
110
152
  licenses:
111
153
  - MIT
112
- metadata: {}
113
154
  post_install_message:
114
155
  rdoc_options: []
115
156
  require_paths:
116
157
  - lib
117
158
  required_ruby_version: !ruby/object:Gem::Requirement
159
+ none: false
118
160
  requirements:
119
- - - '>='
161
+ - - ! '>='
120
162
  - !ruby/object:Gem::Version
121
163
  version: '0'
122
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
+ none: false
123
166
  requirements:
124
- - - '>='
167
+ - - ! '>='
125
168
  - !ruby/object:Gem::Version
126
169
  version: '0'
127
170
  requirements: []
128
171
  rubyforge_project:
129
- rubygems_version: 2.0.0
172
+ rubygems_version: 1.8.23
130
173
  signing_key:
131
- specification_version: 4
174
+ specification_version: 3
132
175
  summary: Basic authorization library inspired in Ryan Bates code
133
176
  test_files:
134
177
  - test/generators/install_generator_test.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c8008cb477a135e7d4e7e9f1b242bd670a0a6383
4
- data.tar.gz: 8fa602dc839dcd31b5a3b5ad72f9f046fe40a3a4
5
- SHA512:
6
- metadata.gz: e0cc34bed4b5dc76ed0e1a130ef593e08bd9939caa41118f00796ffbaf0b727e37474b238f89a7005f816d7dfc966f3e6a2349c0b37b3d4a81dea2e840e7d9fb
7
- data.tar.gz: 0410d8d1e00ee44d308df078dd5059dffab944f9473d1490f97053ba10df26d88d4acdd4c4a98b6aad76fb1b7baa447613e55b2a0e0a53c0f3b46999efc60261
@@ -1,33 +0,0 @@
1
- module Guachiman
2
- module StrongParameters
3
- attr_reader :allowed_params
4
-
5
- def allow_param resources, attributes
6
- @allowed_params ||= {}
7
- Array(resources).each do |resource|
8
- allowed_params[resource] ||= []
9
- allowed_params[resource] += Array(attributes)
10
- end
11
- end
12
-
13
- def allow_param?(resource, attribute)
14
- if @allow_all
15
- true
16
- elsif @allowed_params && @allowed_params[resource]
17
- @allowed_params[resource].include? attribute
18
- end
19
- end
20
-
21
- def permit_params! params
22
- if @allow_all
23
- params.permit!
24
- elsif allowed_params
25
- allowed_params.each do |resource, attributes|
26
- if params[resource].respond_to? :permit
27
- params[resource] = params[resource].permit(*attributes)
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end