may_may 0.0.2 → 0.0.3
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/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
|