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.
- data/guachiman.gemspec +2 -0
- data/lib/guachiman.rb +4 -1
- data/lib/guachiman/params.rb +9 -1
- data/lib/guachiman/permissions.rb +1 -3
- data/lib/guachiman/rails/permissible.rb +3 -3
- data/lib/guachiman/version.rb +1 -1
- data/test/generators/install_generator_test.rb +3 -1
- metadata +59 -16
- checksums.yaml +0 -7
- data/lib/guachiman/strong_parameters.rb +0 -33
data/guachiman.gemspec
CHANGED
@@ -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'
|
data/lib/guachiman.rb
CHANGED
@@ -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
|
data/lib/guachiman/params.rb
CHANGED
@@ -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]
|
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!
|
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
|
31
|
+
redirect_to root_path, alert: t(:not_authorized)
|
32
32
|
else
|
33
|
-
redirect_to
|
33
|
+
redirect_to login_path, alert: t(:please_login)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/lib/guachiman/version.rb
CHANGED
@@ -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
|
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
|
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:
|
172
|
+
rubygems_version: 1.8.23
|
130
173
|
signing_key:
|
131
|
-
specification_version:
|
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
|