guachiman 0.0.8 → 0.1.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.
@@ -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