may_may 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +42 -4
- data/lib/may_may.rb +31 -3
- data/lib/may_may/version.rb +1 -1
- data/test/dummy/log/test.log +317 -0
- data/test/may_may_test.rb +9 -10
- metadata +1 -1
data/README.md
CHANGED
@@ -19,7 +19,6 @@ Simplify your views. Show/hide view elements based on intended action instead of
|
|
19
19
|
<%= link_to 'only visible if user may edit people', edit_people_path %>
|
20
20
|
<% end %>
|
21
21
|
|
22
|
-
###
|
23
22
|
### Create a model named "may":
|
24
23
|
|
25
24
|
# in app/models/may.rb
|
@@ -38,7 +37,7 @@ Simplify your views. Show/hide view elements based on intended action instead of
|
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
41
|
-
### Add a
|
40
|
+
### Add a role_names method to your User object
|
42
41
|
|
43
42
|
Here is a simple example setup:
|
44
43
|
|
@@ -59,13 +58,22 @@ Here is a simple example setup:
|
|
59
58
|
class User
|
60
59
|
has_many :user_roles
|
61
60
|
has_many :roles, through: :user_roles
|
61
|
+
|
62
|
+
def role_names
|
63
|
+
roles.map {|role| role.name.to_sym }
|
64
|
+
end
|
62
65
|
end
|
63
66
|
|
64
67
|
# in app/controllers/application_controller.rb
|
65
68
|
|
66
69
|
class ApplicationController < ActionController::Base
|
67
|
-
def
|
68
|
-
current_user
|
70
|
+
def current_user
|
71
|
+
@current_user ||= User.find(session[:user_id]) rescue nil
|
72
|
+
end
|
73
|
+
|
74
|
+
def current_user=(value)
|
75
|
+
value ? session[:user_id] = value.id : session.delete(:id)
|
76
|
+
@current_user = value
|
69
77
|
end
|
70
78
|
end
|
71
79
|
|
@@ -80,6 +88,36 @@ You could instead define permissions within the controller itself:
|
|
80
88
|
may :show, method: [:may_show?]
|
81
89
|
end
|
82
90
|
|
91
|
+
## In more depth
|
92
|
+
|
93
|
+
MayMay adds a few methods to ActionController::Base:
|
94
|
+
|
95
|
+
*** `may` (class method)
|
96
|
+
|
97
|
+
Define permissions in your controller instead of May model. Shortcut for `May.may(self, ...)`
|
98
|
+
|
99
|
+
Usage:
|
100
|
+
|
101
|
+
class SomeController < ApplicationController
|
102
|
+
may :index, except: [:this_role]
|
103
|
+
end
|
104
|
+
|
105
|
+
*** `current_roles`
|
106
|
+
|
107
|
+
Returns `current_user.role_names` or empty array if `current_user` returns nil or is missing
|
108
|
+
|
109
|
+
*** `has_role?`
|
110
|
+
|
111
|
+
Check `current_roles` for a specific role.
|
112
|
+
|
113
|
+
Usage: if `has_role? :some_role`
|
114
|
+
|
115
|
+
*** may? (helper method)
|
116
|
+
|
117
|
+
Check for permission to perform an action.
|
118
|
+
|
119
|
+
Usage: if `may? :action_name, :controller_name`
|
120
|
+
|
83
121
|
## Licence
|
84
122
|
|
85
123
|
MIT-LICENSE
|
data/lib/may_may.rb
CHANGED
@@ -65,7 +65,31 @@ module MayMay
|
|
65
65
|
|
66
66
|
def access_denied
|
67
67
|
response.status = 403
|
68
|
-
|
68
|
+
if Rails.env == 'development'
|
69
|
+
render_text = "Permission denied to action :#{params[:action]} on controller :#{params[:controller]}"
|
70
|
+
if May.respond_to? get_permission_method
|
71
|
+
render text: render_text
|
72
|
+
else
|
73
|
+
render_text = '<h1>' + render_text + '</h1>' + %{
|
74
|
+
<p>Controller action permission needs to be specified in your May model. Example:</p>
|
75
|
+
|
76
|
+
<pre>
|
77
|
+
# in app/models/may.rb:
|
78
|
+
|
79
|
+
class May
|
80
|
+
controller: :#{params[:controller]} do
|
81
|
+
may :#{params[:action]}, only: [:role_1, :role_2]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
</pre>
|
85
|
+
|
86
|
+
<p>For more detailed information, view the <a href="https://github.com/without/may_may/blob/master/README.md">MayMay gem's README.md</a></p>
|
87
|
+
}
|
88
|
+
render layout: false, inline: render_text
|
89
|
+
end
|
90
|
+
else
|
91
|
+
render text: "Access Denied."
|
92
|
+
end
|
69
93
|
end
|
70
94
|
|
71
95
|
def current_roles
|
@@ -83,9 +107,13 @@ module MayMay
|
|
83
107
|
|
84
108
|
private
|
85
109
|
|
110
|
+
def get_permission_method
|
111
|
+
May.get_permission_method params[:action], params[:controller].to_s.pluralize.to_sym
|
112
|
+
end
|
113
|
+
|
86
114
|
def may_may_setup
|
87
|
-
|
88
|
-
access_denied unless May.
|
115
|
+
method = get_permission_method
|
116
|
+
access_denied unless May.respond_to?(method) && May.send(get_permission_method, self)
|
89
117
|
end
|
90
118
|
end
|
91
119
|
|
data/lib/may_may/version.rb
CHANGED
data/test/dummy/log/test.log
CHANGED
@@ -5026,3 +5026,320 @@ Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
|
5026
5026
|
[1m[35m (0.0ms)[0m rollback transaction
|
5027
5027
|
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5028
5028
|
[1m[35m (0.0ms)[0m rollback transaction
|
5029
|
+
Connecting to database specified by database.yml
|
5030
|
+
Connecting to database specified by database.yml
|
5031
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
5032
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5033
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5034
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5035
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5036
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5037
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5038
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5039
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5040
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5041
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5042
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5043
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5044
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5045
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5046
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5047
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5048
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5049
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5050
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5051
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
5052
|
+
Processing by MayMaysController#create as HTML
|
5053
|
+
Parameters: {"user"=>"admin"}
|
5054
|
+
Rendered text template (0.0ms)
|
5055
|
+
Completed 200 OK in 375ms (Views: 72.0ms | ActiveRecord: 7.1ms)
|
5056
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5057
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5058
|
+
Processing by MayMaysController#destroy as HTML
|
5059
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5060
|
+
Completed 200 OK in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5061
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5062
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5063
|
+
Processing by MayMaysController#show as HTML
|
5064
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5065
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5066
|
+
Completed 403 Forbidden in 2ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5067
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5068
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5069
|
+
Processing by MayMaysController#index as HTML
|
5070
|
+
Parameters: {"user"=>"guest"}
|
5071
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5072
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5073
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5074
|
+
Processing by MayMaysController#create as HTML
|
5075
|
+
Parameters: {"user"=>"guest"}
|
5076
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5077
|
+
Completed 403 Forbidden in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5078
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5079
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5080
|
+
Processing by MayMaysController#show as HTML
|
5081
|
+
Parameters: {"user"=>"guest", "id"=>"1"}
|
5082
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5083
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5084
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5085
|
+
Processing by MayMaysController#new as HTML
|
5086
|
+
Parameters: {"user"=>"admin"}
|
5087
|
+
Completed 200 OK in 18ms (Views: 17.2ms | ActiveRecord: 0.0ms)
|
5088
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5089
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5090
|
+
Processing by MayMaysController#destroy as HTML
|
5091
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5092
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5093
|
+
Completed 403 Forbidden in 3ms (Views: 0.5ms | ActiveRecord: 0.0ms)
|
5094
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5095
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5096
|
+
Processing by MayMaysController#new as HTML
|
5097
|
+
Parameters: {"user"=>"standard"}
|
5098
|
+
Completed 200 OK in 1ms (Views: 0.4ms | ActiveRecord: 0.0ms)
|
5099
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5100
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5101
|
+
Processing by MayMaysController#show as HTML
|
5102
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5103
|
+
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5104
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5105
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5106
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5107
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5108
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5109
|
+
Connecting to database specified by database.yml
|
5110
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
5111
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5112
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5113
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5114
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5115
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5116
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5117
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5118
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5119
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5120
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5121
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5122
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5123
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5124
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5125
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5126
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5127
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5128
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5129
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5130
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5131
|
+
Processing by MayMaysController#create as HTML
|
5132
|
+
Parameters: {"user"=>"admin"}
|
5133
|
+
Rendered text template (0.0ms)
|
5134
|
+
Completed 200 OK in 191ms (Views: 60.5ms | ActiveRecord: 5.7ms)
|
5135
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5136
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5137
|
+
Processing by MayMaysController#destroy as HTML
|
5138
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5139
|
+
Completed 200 OK in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5140
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5141
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5142
|
+
Processing by MayMaysController#show as HTML
|
5143
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5144
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5145
|
+
Completed 403 Forbidden in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5146
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5147
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5148
|
+
Processing by MayMaysController#index as HTML
|
5149
|
+
Parameters: {"user"=>"guest"}
|
5150
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5151
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5152
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5153
|
+
Processing by MayMaysController#create as HTML
|
5154
|
+
Parameters: {"user"=>"guest"}
|
5155
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5156
|
+
Completed 403 Forbidden in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5157
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5158
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5159
|
+
Processing by MayMaysController#show as HTML
|
5160
|
+
Parameters: {"user"=>"guest", "id"=>"1"}
|
5161
|
+
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5162
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5163
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5164
|
+
Processing by MayMaysController#new as HTML
|
5165
|
+
Parameters: {"user"=>"admin"}
|
5166
|
+
Completed 200 OK in 19ms (Views: 17.6ms | ActiveRecord: 0.0ms)
|
5167
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5168
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5169
|
+
Processing by MayMaysController#destroy as HTML
|
5170
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5171
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5172
|
+
Completed 403 Forbidden in 2ms (Views: 0.4ms | ActiveRecord: 0.0ms)
|
5173
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5174
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5175
|
+
Processing by MayMaysController#new as HTML
|
5176
|
+
Parameters: {"user"=>"standard"}
|
5177
|
+
Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.0ms)
|
5178
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5179
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5180
|
+
Processing by MayMaysController#show as HTML
|
5181
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5182
|
+
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5183
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5184
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5185
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5186
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5187
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5188
|
+
Connecting to database specified by database.yml
|
5189
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
5190
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5191
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5192
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5193
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5194
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5195
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5196
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5197
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5198
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5199
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5200
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5201
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5202
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5203
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5204
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5205
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5206
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5207
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5208
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5209
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5210
|
+
Processing by MayMaysController#create as HTML
|
5211
|
+
Parameters: {"user"=>"admin"}
|
5212
|
+
Rendered text template (0.0ms)
|
5213
|
+
Completed 200 OK in 206ms (Views: 34.5ms | ActiveRecord: 6.5ms)
|
5214
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5215
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5216
|
+
Processing by MayMaysController#destroy as HTML
|
5217
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5218
|
+
Completed 200 OK in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5219
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5220
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5221
|
+
Processing by MayMaysController#show as HTML
|
5222
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5223
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5224
|
+
Completed 403 Forbidden in 2ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5225
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5226
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5227
|
+
Processing by MayMaysController#index as HTML
|
5228
|
+
Parameters: {"user"=>"guest"}
|
5229
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5230
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5231
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5232
|
+
Processing by MayMaysController#create as HTML
|
5233
|
+
Parameters: {"user"=>"guest"}
|
5234
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5235
|
+
Completed 403 Forbidden in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)
|
5236
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5237
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5238
|
+
Processing by MayMaysController#show as HTML
|
5239
|
+
Parameters: {"user"=>"guest", "id"=>"1"}
|
5240
|
+
Completed 200 OK in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5241
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5242
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5243
|
+
Processing by MayMaysController#new as HTML
|
5244
|
+
Parameters: {"user"=>"admin"}
|
5245
|
+
Completed 200 OK in 13ms (Views: 11.4ms | ActiveRecord: 0.0ms)
|
5246
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5247
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5248
|
+
Processing by MayMaysController#destroy as HTML
|
5249
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5250
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5251
|
+
Completed 403 Forbidden in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5252
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5253
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5254
|
+
Processing by MayMaysController#new as HTML
|
5255
|
+
Parameters: {"user"=>"standard"}
|
5256
|
+
Completed 200 OK in 2ms (Views: 0.9ms | ActiveRecord: 0.0ms)
|
5257
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5258
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5259
|
+
Processing by MayMaysController#show as HTML
|
5260
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5261
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5262
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5263
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5264
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5265
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
5266
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5267
|
+
Connecting to database specified by database.yml
|
5268
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
5269
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5270
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5271
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5272
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5273
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5274
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5275
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5276
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5277
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5278
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5279
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5280
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5281
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5282
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5283
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5284
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5285
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5286
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5287
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5288
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5289
|
+
Processing by MayMaysController#create as HTML
|
5290
|
+
Parameters: {"user"=>"admin"}
|
5291
|
+
Rendered text template (0.0ms)
|
5292
|
+
Completed 200 OK in 229ms (Views: 93.5ms | ActiveRecord: 5.5ms)
|
5293
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5294
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5295
|
+
Processing by MayMaysController#destroy as HTML
|
5296
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5297
|
+
Completed 200 OK in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5298
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5299
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5300
|
+
Processing by MayMaysController#show as HTML
|
5301
|
+
Parameters: {"user"=>"admin", "id"=>"1"}
|
5302
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5303
|
+
Completed 403 Forbidden in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5304
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5305
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5306
|
+
Processing by MayMaysController#index as HTML
|
5307
|
+
Parameters: {"user"=>"guest"}
|
5308
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5309
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5310
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5311
|
+
Processing by MayMaysController#create as HTML
|
5312
|
+
Parameters: {"user"=>"guest"}
|
5313
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5314
|
+
Completed 403 Forbidden in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5315
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5316
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5317
|
+
Processing by MayMaysController#show as HTML
|
5318
|
+
Parameters: {"user"=>"guest", "id"=>"1"}
|
5319
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5320
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5321
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5322
|
+
Processing by MayMaysController#new as HTML
|
5323
|
+
Parameters: {"user"=>"admin"}
|
5324
|
+
Completed 200 OK in 13ms (Views: 11.4ms | ActiveRecord: 0.0ms)
|
5325
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5326
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5327
|
+
Processing by MayMaysController#destroy as HTML
|
5328
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5329
|
+
Filter chain halted as :may_may_setup rendered or redirected
|
5330
|
+
Completed 403 Forbidden in 2ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5331
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
5332
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5333
|
+
Processing by MayMaysController#new as HTML
|
5334
|
+
Parameters: {"user"=>"standard"}
|
5335
|
+
Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
|
5336
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5337
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5338
|
+
Processing by MayMaysController#show as HTML
|
5339
|
+
Parameters: {"user"=>"standard", "id"=>"1"}
|
5340
|
+
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
|
5341
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5342
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
5343
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
5344
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5345
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
data/test/may_may_test.rb
CHANGED
@@ -20,24 +20,23 @@ end
|
|
20
20
|
|
21
21
|
class MayMayTest < ActiveSupport::TestCase
|
22
22
|
test "access_denied if not specifically permitted" do
|
23
|
-
May.permissions_setup {}
|
24
23
|
assert !May.permission_to?(:test_1_action, :people, Roles.new)
|
25
24
|
end
|
26
25
|
|
27
26
|
test "access allowed for anyone if named but no roles specified" do
|
28
|
-
May.
|
27
|
+
May.controller(:people) { May.may :test_2_action }
|
29
28
|
assert May.permission_to?(:test_2_action, :people, Roles.new)
|
30
29
|
end
|
31
30
|
|
32
31
|
test "access allowed for specified role only" do
|
33
|
-
May.
|
32
|
+
May.controller(:people) { May.may :test_3_action, :only => :a_role }
|
34
33
|
with_correct_role = May.permission_to?(:test_3_action, :people, Roles.new(:a_role))
|
35
34
|
without_correct_role = May.permission_to?(:test_3_action, :people, Roles.new(:b_role))
|
36
35
|
assert_equal [true, false], [with_correct_role, without_correct_role]
|
37
36
|
end
|
38
37
|
|
39
38
|
test "access allowed for specified roles" do
|
40
|
-
May.
|
39
|
+
May.controller(:people) { May.may :test_4_action, :only => [:a_role1, :a_role2] }
|
41
40
|
with_first_role = May.permission_to?(:test_4_action, :people, Roles.new(:a_role1))
|
42
41
|
with_second_role = May.permission_to?(:test_4_action, :people, Roles.new(:a_role2))
|
43
42
|
with_both_roles = May.permission_to?(:test_4_action, :people, Roles.new([:a_role1, :a_role2]))
|
@@ -46,7 +45,7 @@ class MayMayTest < ActiveSupport::TestCase
|
|
46
45
|
end
|
47
46
|
|
48
47
|
test "access denied for specified roles" do
|
49
|
-
May.
|
48
|
+
May.controller(:people) { May.may :test_5_action, :except => [:a_role1, :a_role2] }
|
50
49
|
with_first_role = May.permission_to?(:test_5_action, :people, Roles.new(:a_role1))
|
51
50
|
with_second_role = May.permission_to?(:test_5_action, :people, Roles.new(:a_role2))
|
52
51
|
with_both_roles = May.permission_to?(:test_5_action, :people, Roles.new([:a_role1, :a_role2]))
|
@@ -55,24 +54,24 @@ class MayMayTest < ActiveSupport::TestCase
|
|
55
54
|
end
|
56
55
|
|
57
56
|
test "access denied by block" do
|
58
|
-
May.
|
57
|
+
May.controller(:people) { May.may(:test_6_action) {|controller| false } }
|
59
58
|
assert !May.permission_to?(:test_6_action, :people, Roles.new)
|
60
59
|
end
|
61
60
|
|
62
61
|
test "access allowed by block" do
|
63
|
-
May.
|
62
|
+
May.controller(:people) { May.may(:test_7_action) {|controller| true } }
|
64
63
|
assert May.permission_to?(:test_7_action, :people, Roles.new)
|
65
64
|
end
|
66
65
|
|
67
66
|
test "controller may method works" do
|
68
|
-
May.
|
67
|
+
May.controller(:people) { May.may(:test_8_action, :only => [:a_role]) }
|
69
68
|
with_role = Roles.new(:a_role).may?(:test_8_action, :people)
|
70
69
|
without_role = Roles.new.may?(:test_8_action, :people)
|
71
70
|
assert_equal [true, false], [with_role, without_role]
|
72
71
|
end
|
73
72
|
|
74
73
|
test "controller may method with block" do
|
75
|
-
May.
|
74
|
+
May.controller(:people) { May.may(:test_9_action, :only => [:a_role]) }
|
76
75
|
with_role = false
|
77
76
|
Roles.new(:a_role).may?(:test_9_action, :people) { with_role = 'allowed!' }
|
78
77
|
without_role = Roles.new.may?(:test_9_action, :people) { without_role = 'not allowed!' }
|
@@ -81,7 +80,7 @@ class MayMayTest < ActiveSupport::TestCase
|
|
81
80
|
|
82
81
|
test "controller may with permission block" do
|
83
82
|
can = true
|
84
|
-
May.
|
83
|
+
May.controller(:people) { May.may(:test_10_action) { can } }
|
85
84
|
should = false
|
86
85
|
Roles.new.may?(:test_10_action, :people) { should = 'allowed!' }
|
87
86
|
can = false
|