jakewendt-simply_authorized 1.3.6
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.rdoc +52 -0
- data/app/controllers/roles_controller.rb +38 -0
- data/app/models/role.rb +34 -0
- data/config/routes.rb +9 -0
- data/generators/simply_authorized/USAGE +0 -0
- data/generators/simply_authorized/simply_authorized_generator.rb +84 -0
- data/generators/simply_authorized/templates/autotest_simply_authorized.rb +2 -0
- data/generators/simply_authorized/templates/functional/roles_controller_test.rb +143 -0
- data/generators/simply_authorized/templates/migrations/create_roles.rb +14 -0
- data/generators/simply_authorized/templates/migrations/create_roles_users.rb +14 -0
- data/generators/simply_authorized/templates/simply_authorized.rake +8 -0
- data/generators/simply_authorized/templates/stylesheets/authorized.css +0 -0
- data/generators/simply_authorized/templates/unit/role_test.rb +30 -0
- data/lib/jakewendt-simply_authorized.rb +1 -0
- data/lib/simply_authorized.rb +41 -0
- data/lib/simply_authorized/authorization.rb +68 -0
- data/lib/simply_authorized/autotest.rb +26 -0
- data/lib/simply_authorized/controller.rb +87 -0
- data/lib/simply_authorized/core_extension.rb +16 -0
- data/lib/simply_authorized/factories.rb +15 -0
- data/lib/simply_authorized/factory_test_helper.rb +47 -0
- data/lib/simply_authorized/helper.rb +28 -0
- data/lib/simply_authorized/permissive_controller.rb +27 -0
- data/lib/simply_authorized/resourceful_controller.rb +83 -0
- data/lib/simply_authorized/tasks.rb +1 -0
- data/lib/simply_authorized/test_tasks.rb +47 -0
- data/lib/simply_authorized/user_model.rb +161 -0
- data/lib/tasks/application.rake +40 -0
- data/lib/tasks/database.rake +52 -0
- data/lib/tasks/documentation.rake +68 -0
- data/lib/tasks/rcov.rake +44 -0
- data/lib/tasks/simply_sessions.rake +5 -0
- data/rails/init.rb +4 -0
- data/test/app/controllers/application_controller.rb +16 -0
- data/test/app/controllers/home_controller.rb +10 -0
- data/test/app/controllers/users_controller.rb +43 -0
- data/test/app/models/user.rb +3 -0
- data/test/config/routes.rb +11 -0
- data/test/functional/authorized/roles_controller_test.rb +143 -0
- data/test/unit/authorized/role_test.rb +30 -0
- metadata +167 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
class UsersController < ApplicationController
|
2
|
+
|
3
|
+
skip_before_filter :login_required, :only => :menu
|
4
|
+
|
5
|
+
before_filter :id_required,
|
6
|
+
:only => [:edit, :show, :update, :destroy]
|
7
|
+
before_filter :may_view_user_required,
|
8
|
+
:except => [:index,:menu]
|
9
|
+
before_filter :may_view_users_required,
|
10
|
+
:only => :index
|
11
|
+
|
12
|
+
ssl_allowed :menu
|
13
|
+
|
14
|
+
def menu
|
15
|
+
respond_to do |format|
|
16
|
+
format.js {}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def show
|
21
|
+
@roles = Role.all
|
22
|
+
end
|
23
|
+
|
24
|
+
def index
|
25
|
+
@users = User.find(:all)
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy
|
29
|
+
@user.destroy
|
30
|
+
redirect_to users_path
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
def id_required
|
36
|
+
if !params[:id].blank? and User.exists?(params[:id])
|
37
|
+
@user = User.find(params[:id])
|
38
|
+
else
|
39
|
+
access_denied("user id required!", users_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
ActionController::Routing::Routes.draw do |map|
|
2
|
+
|
3
|
+
map.resources :users, :only => [:destroy,:show,:index],
|
4
|
+
:collection => { :menu => :get } do |user|
|
5
|
+
user.resources :roles, :only => [:update,:destroy]
|
6
|
+
end
|
7
|
+
|
8
|
+
map.resource :home, :only => :show
|
9
|
+
map.root :controller => :home, :action => :show
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class SimplyAuthorized::RolesControllerTest < ActionController::TestCase
|
5
|
+
tests RolesController
|
6
|
+
|
7
|
+
# no user_id
|
8
|
+
assert_no_route(:put, :update, :id => 'reader')
|
9
|
+
assert_no_route(:delete, :destroy, :id => 'reader')
|
10
|
+
|
11
|
+
%w( super_user admin ).each do |cu|
|
12
|
+
|
13
|
+
test "should update with #{cu} login" do
|
14
|
+
login_as send(cu)
|
15
|
+
u = active_user
|
16
|
+
assert !u.reload.role_names.include?('reader')
|
17
|
+
assert_difference("User.find(#{u.id}).roles.length",1){
|
18
|
+
put :update, :user_id => u.id, :id => 'reader'
|
19
|
+
}
|
20
|
+
assert u.reload.role_names.include?('reader')
|
21
|
+
assert_not_nil flash[:notice]
|
22
|
+
assert_redirected_to user_path(assigns(:user))
|
23
|
+
end
|
24
|
+
|
25
|
+
test "should destroy with #{cu} login" do
|
26
|
+
login_as send(cu)
|
27
|
+
u = active_user
|
28
|
+
u.roles << Role.find_or_create_by_name('reader')
|
29
|
+
assert u.reload.role_names.include?('reader')
|
30
|
+
assert_difference("User.find(#{u.id}).roles.length",-1){
|
31
|
+
delete :destroy, :user_id => u.id, :id => 'reader'
|
32
|
+
}
|
33
|
+
assert !u.reload.role_names.include?('reader')
|
34
|
+
assert_not_nil flash[:notice]
|
35
|
+
assert_redirected_to user_path(assigns(:user))
|
36
|
+
end
|
37
|
+
|
38
|
+
test "should NOT update without valid user_id with #{cu} login" do
|
39
|
+
login_as send(cu)
|
40
|
+
put :update, :user_id => 0, :id => 'reader'
|
41
|
+
assert_not_nil flash[:error]
|
42
|
+
assert_redirected_to users_path
|
43
|
+
end
|
44
|
+
|
45
|
+
test "should NOT destroy without valid user_id with #{cu} login" do
|
46
|
+
login_as send(cu)
|
47
|
+
delete :destroy, :user_id => 0, :id => 'reader'
|
48
|
+
assert_not_nil flash[:error]
|
49
|
+
assert_redirected_to users_path
|
50
|
+
end
|
51
|
+
|
52
|
+
test "should NOT update self with #{cu} login" do
|
53
|
+
u = send(cu)
|
54
|
+
login_as u
|
55
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
56
|
+
put :update, :user_id => u.id, :id => 'reader'
|
57
|
+
}
|
58
|
+
assert_not_nil flash[:error]
|
59
|
+
assert_equal u, assigns(:user)
|
60
|
+
assert_redirected_to user_path(assigns(:user))
|
61
|
+
# assert_redirected_to root_path
|
62
|
+
end
|
63
|
+
|
64
|
+
test "should NOT destroy self with #{cu} login" do
|
65
|
+
u = send(cu)
|
66
|
+
login_as u
|
67
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
68
|
+
delete :destroy, :user_id => u.id, :id => 'reader'
|
69
|
+
}
|
70
|
+
assert_not_nil flash[:error]
|
71
|
+
assert_equal u, assigns(:user)
|
72
|
+
assert_redirected_to user_path(assigns(:user))
|
73
|
+
# assert_redirected_to root_path
|
74
|
+
end
|
75
|
+
|
76
|
+
test "should NOT update without valid role_name with #{cu} login" do
|
77
|
+
login_as send(cu)
|
78
|
+
u = active_user
|
79
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
80
|
+
put :update, :user_id => u.id, :id => 'bogus_role_name'
|
81
|
+
}
|
82
|
+
assert_not_nil flash[:error]
|
83
|
+
assert_redirected_to user_path(assigns(:user))
|
84
|
+
end
|
85
|
+
|
86
|
+
test "should NOT destroy without valid role_name with #{cu} login" do
|
87
|
+
login_as send(cu)
|
88
|
+
u = active_user
|
89
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
90
|
+
delete :destroy, :user_id => u.id, :id => 'bogus_role_name'
|
91
|
+
}
|
92
|
+
assert_not_nil flash[:error]
|
93
|
+
assert_redirected_to user_path(assigns(:user))
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
%w( interviewer reader editor active_user ).each do |cu|
|
99
|
+
|
100
|
+
test "should NOT update with #{cu} login" do
|
101
|
+
login_as send(cu)
|
102
|
+
u = active_user
|
103
|
+
assert !u.reload.role_names.include?('administrator')
|
104
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
105
|
+
put :update, :user_id => u.id, :id => 'administrator'
|
106
|
+
}
|
107
|
+
assert !u.reload.role_names.include?('administrator')
|
108
|
+
assert_not_nil flash[:error]
|
109
|
+
assert_redirected_to root_path
|
110
|
+
end
|
111
|
+
|
112
|
+
test "should NOT destroy with #{cu} login" do
|
113
|
+
login_as send(cu)
|
114
|
+
u = active_user
|
115
|
+
u.roles << Role.find_or_create_by_name('administrator')
|
116
|
+
assert u.reload.role_names.include?('administrator')
|
117
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
118
|
+
delete :destroy, :user_id => u.id, :id => 'administrator'
|
119
|
+
}
|
120
|
+
assert u.reload.role_names.include?('administrator')
|
121
|
+
assert_not_nil flash[:error]
|
122
|
+
assert_redirected_to root_path
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
test "should NOT update without login" do
|
128
|
+
u = active_user
|
129
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
130
|
+
put :update, :user_id => u.id, :id => 'administrator'
|
131
|
+
}
|
132
|
+
assert_redirected_to_login
|
133
|
+
end
|
134
|
+
|
135
|
+
test "should NOT destroy without login" do
|
136
|
+
u = active_user
|
137
|
+
assert_difference("User.find(#{u.id}).roles.length",0){
|
138
|
+
delete :destroy, :user_id => u.id, :id => 'administrator'
|
139
|
+
}
|
140
|
+
assert_redirected_to_login
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class SimplyAuthorized::RoleTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
assert_should_act_as_list(:model => 'Role')
|
7
|
+
assert_should_require(:name,
|
8
|
+
:model => 'Role')
|
9
|
+
assert_should_require_unique(:name,
|
10
|
+
:model => 'Role')
|
11
|
+
assert_should_habtm(:users,
|
12
|
+
:model => 'Role')
|
13
|
+
|
14
|
+
test "should create role" do
|
15
|
+
assert_difference('Role.count',1) do
|
16
|
+
object = create_object
|
17
|
+
assert !object.new_record?,
|
18
|
+
"#{object.errors.full_messages.to_sentence}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def create_object(options = {})
|
25
|
+
record = Factory.build(:role,options)
|
26
|
+
record.save
|
27
|
+
record
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jakewendt-simply_authorized
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
- 6
|
10
|
+
version: 1.3.6
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- George 'Jake' Wendt
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-08-10 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rails
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 2
|
32
|
+
version: "2"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: jakewendt-ruby_extension
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: jakewendt-rails_extension
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: ryanb-acts-as-list
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :runtime
|
76
|
+
version_requirements: *id004
|
77
|
+
description: longer description of your gem
|
78
|
+
email: github@jake.otherinbox.com
|
79
|
+
executables: []
|
80
|
+
|
81
|
+
extensions: []
|
82
|
+
|
83
|
+
extra_rdoc_files:
|
84
|
+
- README.rdoc
|
85
|
+
files:
|
86
|
+
- app/controllers/roles_controller.rb
|
87
|
+
- app/models/role.rb
|
88
|
+
- config/routes.rb
|
89
|
+
- generators/simply_authorized/USAGE
|
90
|
+
- generators/simply_authorized/simply_authorized_generator.rb
|
91
|
+
- generators/simply_authorized/templates/autotest_simply_authorized.rb
|
92
|
+
- generators/simply_authorized/templates/functional/roles_controller_test.rb
|
93
|
+
- generators/simply_authorized/templates/migrations/create_roles.rb
|
94
|
+
- generators/simply_authorized/templates/migrations/create_roles_users.rb
|
95
|
+
- generators/simply_authorized/templates/simply_authorized.rake
|
96
|
+
- generators/simply_authorized/templates/stylesheets/authorized.css
|
97
|
+
- generators/simply_authorized/templates/unit/role_test.rb
|
98
|
+
- lib/jakewendt-simply_authorized.rb
|
99
|
+
- lib/simply_authorized.rb
|
100
|
+
- lib/simply_authorized/authorization.rb
|
101
|
+
- lib/simply_authorized/autotest.rb
|
102
|
+
- lib/simply_authorized/controller.rb
|
103
|
+
- lib/simply_authorized/core_extension.rb
|
104
|
+
- lib/simply_authorized/factories.rb
|
105
|
+
- lib/simply_authorized/factory_test_helper.rb
|
106
|
+
- lib/simply_authorized/helper.rb
|
107
|
+
- lib/simply_authorized/permissive_controller.rb
|
108
|
+
- lib/simply_authorized/resourceful_controller.rb
|
109
|
+
- lib/simply_authorized/tasks.rb
|
110
|
+
- lib/simply_authorized/test_tasks.rb
|
111
|
+
- lib/simply_authorized/user_model.rb
|
112
|
+
- lib/tasks/application.rake
|
113
|
+
- lib/tasks/database.rake
|
114
|
+
- lib/tasks/documentation.rake
|
115
|
+
- lib/tasks/rcov.rake
|
116
|
+
- lib/tasks/simply_sessions.rake
|
117
|
+
- rails/init.rb
|
118
|
+
- README.rdoc
|
119
|
+
- test/app/controllers/application_controller.rb
|
120
|
+
- test/app/controllers/home_controller.rb
|
121
|
+
- test/app/controllers/users_controller.rb
|
122
|
+
- test/app/models/user.rb
|
123
|
+
- test/config/routes.rb
|
124
|
+
- test/functional/authorized/roles_controller_test.rb
|
125
|
+
- test/unit/authorized/role_test.rb
|
126
|
+
has_rdoc: true
|
127
|
+
homepage: http://github.com/jakewendt/simply_authorized
|
128
|
+
licenses: []
|
129
|
+
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
|
133
|
+
require_paths:
|
134
|
+
- lib
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
hash: 3
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
version: "0"
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
hash: 3
|
150
|
+
segments:
|
151
|
+
- 0
|
152
|
+
version: "0"
|
153
|
+
requirements: []
|
154
|
+
|
155
|
+
rubyforge_project:
|
156
|
+
rubygems_version: 1.6.2
|
157
|
+
signing_key:
|
158
|
+
specification_version: 3
|
159
|
+
summary: one-line summary of your gem
|
160
|
+
test_files:
|
161
|
+
- test/app/controllers/application_controller.rb
|
162
|
+
- test/app/controllers/home_controller.rb
|
163
|
+
- test/app/controllers/users_controller.rb
|
164
|
+
- test/app/models/user.rb
|
165
|
+
- test/config/routes.rb
|
166
|
+
- test/functional/authorized/roles_controller_test.rb
|
167
|
+
- test/unit/authorized/role_test.rb
|