lockdown 1.6.5 → 2.0.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.
Files changed (80) hide show
  1. data/.gitignore +1 -0
  2. data/README.txt +8 -5
  3. data/Rakefile +43 -26
  4. data/lib/lockdown/access.rb +108 -0
  5. data/lib/lockdown/configuration.rb +201 -0
  6. data/lib/lockdown/database.rb +31 -36
  7. data/lib/lockdown/delivery.rb +26 -0
  8. data/lib/lockdown/errors.rb +3 -7
  9. data/lib/lockdown/frameworks/rails/controller.rb +21 -59
  10. data/lib/lockdown/frameworks/rails/view.rb +1 -1
  11. data/lib/lockdown/frameworks/rails.rb +7 -43
  12. data/lib/lockdown/helper.rb +14 -85
  13. data/lib/lockdown/orms/active_record.rb +7 -9
  14. data/lib/lockdown/permission.rb +37 -203
  15. data/lib/lockdown/resource.rb +54 -0
  16. data/lib/lockdown/session.rb +16 -25
  17. data/lib/lockdown/user_group.rb +16 -0
  18. data/lib/lockdown.rb +15 -60
  19. data/lockdown.gemspec +29 -69
  20. data/test/helper.rb +9 -0
  21. data/test/lockdown/test_access.rb +80 -0
  22. data/test/lockdown/test_configuration.rb +194 -0
  23. data/test/lockdown/test_delivery.rb +163 -0
  24. data/test/lockdown/test_helper.rb +33 -0
  25. data/test/lockdown/test_permission.rb +73 -0
  26. data/test/lockdown/test_resource.rb +47 -0
  27. data/test/lockdown/test_session.rb +31 -0
  28. data/test/lockdown/test_user_group.rb +17 -0
  29. data/test/test_lockdown.rb +11 -0
  30. metadata +41 -78
  31. data/lib/lockdown/context.rb +0 -41
  32. data/lib/lockdown/references.rb +0 -19
  33. data/lib/lockdown/rspec_helper.rb +0 -118
  34. data/lib/lockdown/rules.rb +0 -372
  35. data/lib/lockdown/system.rb +0 -58
  36. data/rails_generators/lockdown/lockdown_generator.rb +0 -274
  37. data/rails_generators/lockdown/templates/app/controllers/permissions_controller.rb +0 -22
  38. data/rails_generators/lockdown/templates/app/controllers/sessions_controller.rb +0 -39
  39. data/rails_generators/lockdown/templates/app/controllers/user_groups_controller.rb +0 -122
  40. data/rails_generators/lockdown/templates/app/controllers/users_controller.rb +0 -117
  41. data/rails_generators/lockdown/templates/app/helpers/permissions_helper.rb +0 -2
  42. data/rails_generators/lockdown/templates/app/helpers/user_groups_helper.rb +0 -2
  43. data/rails_generators/lockdown/templates/app/helpers/users_helper.rb +0 -2
  44. data/rails_generators/lockdown/templates/app/models/permission.rb +0 -13
  45. data/rails_generators/lockdown/templates/app/models/profile.rb +0 -10
  46. data/rails_generators/lockdown/templates/app/models/user.rb +0 -95
  47. data/rails_generators/lockdown/templates/app/models/user_group.rb +0 -15
  48. data/rails_generators/lockdown/templates/app/views/permissions/index.html.erb +0 -16
  49. data/rails_generators/lockdown/templates/app/views/permissions/show.html.erb +0 -26
  50. data/rails_generators/lockdown/templates/app/views/sessions/new.html.erb +0 -12
  51. data/rails_generators/lockdown/templates/app/views/user_groups/edit.html.erb +0 -33
  52. data/rails_generators/lockdown/templates/app/views/user_groups/index.html.erb +0 -20
  53. data/rails_generators/lockdown/templates/app/views/user_groups/new.html.erb +0 -31
  54. data/rails_generators/lockdown/templates/app/views/user_groups/show.html.erb +0 -29
  55. data/rails_generators/lockdown/templates/app/views/users/edit.html.erb +0 -51
  56. data/rails_generators/lockdown/templates/app/views/users/index.html.erb +0 -22
  57. data/rails_generators/lockdown/templates/app/views/users/new.html.erb +0 -50
  58. data/rails_generators/lockdown/templates/app/views/users/show.html.erb +0 -33
  59. data/rails_generators/lockdown/templates/config/initializers/lockit.rb +0 -1
  60. data/rails_generators/lockdown/templates/db/migrate/create_admin_user.rb +0 -17
  61. data/rails_generators/lockdown/templates/db/migrate/create_permissions.rb +0 -19
  62. data/rails_generators/lockdown/templates/db/migrate/create_profiles.rb +0 -26
  63. data/rails_generators/lockdown/templates/db/migrate/create_user_groups.rb +0 -19
  64. data/rails_generators/lockdown/templates/db/migrate/create_users.rb +0 -17
  65. data/rails_generators/lockdown/templates/lib/lockdown/README +0 -42
  66. data/rails_generators/lockdown/templates/lib/lockdown/init.rb +0 -131
  67. data/spec/lockdown/context_spec.rb +0 -191
  68. data/spec/lockdown/database_spec.rb +0 -162
  69. data/spec/lockdown/frameworks/rails/controller_spec.rb +0 -215
  70. data/spec/lockdown/frameworks/rails/view_spec.rb +0 -96
  71. data/spec/lockdown/frameworks/rails_spec.rb +0 -163
  72. data/spec/lockdown/permission_spec.rb +0 -156
  73. data/spec/lockdown/rspec_helper_spec.rb +0 -40
  74. data/spec/lockdown/rules_spec.rb +0 -245
  75. data/spec/lockdown/session_spec.rb +0 -112
  76. data/spec/lockdown/system_spec.rb +0 -51
  77. data/spec/lockdown_spec.rb +0 -19
  78. data/spec/rcov.opts +0 -5
  79. data/spec/spec.opts +0 -3
  80. data/spec/spec_helper.rb +0 -8
@@ -1,274 +0,0 @@
1
- @override_next_migration_string = false
2
-
3
- if Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 1
4
- if Rails::VERSION::TINY == 0
5
- @override_next_migration_string = true
6
- elsif ActiveRecord::Base.timestamped_migrations
7
- @override_next_migration_string = true
8
- end
9
- end
10
-
11
- if @override_next_migration_string
12
- class Rails::Generator::Commands::Base
13
- protected
14
- def next_migration_string(padding = 3)
15
- sleep(1)
16
- Time.now.utc.strftime("%Y%m%d%H%M%S")
17
- end
18
- end
19
- end
20
-
21
- class LockdownGenerator < Rails::Generator::Base
22
- attr_accessor :file_name, :action_name, :namespace, :view_path, :controller_path
23
-
24
- def initialize(runtime_args, runtime_options = {})
25
- super
26
- if Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 1
27
- @action_name = "action_name"
28
- else
29
- @action_name = "@action_name"
30
- end
31
-
32
- @namespace = options[:namespace] if options[:namespace]
33
-
34
- # so if the namespace option exists it sets the correct view path and controller path
35
- @view_path = "app/views"
36
- @controller_path = "app/controllers"
37
- @helper_path = "app/helpers"
38
- @lib_path = "lib/lockdown"
39
-
40
- @initializer = "config/environment.rb"
41
-
42
- if @namespace
43
- @view_path += "/#{@namespace}"
44
- @controller_path += "/#{@namespace}"
45
- @helper_path += "/#{@namespace}"
46
- end
47
- end
48
-
49
- def manifest
50
- record do |m|
51
- @m = m
52
- # Ensure appropriate folder(s) exists
53
- @m.directory @view_path
54
- @m.directory @controller_path
55
- @m.directory @helper_path
56
- @m.directory @lib_path
57
-
58
- unless options[:skip_rules]
59
- @m.file "lib/lockdown/README", "lib/lockdown/README"
60
- @m.file "lib/lockdown/init.rb", "lib/lockdown/init.rb"
61
- end
62
-
63
- add_management if options[:add_management]
64
-
65
- add_login if options[:add_login]
66
-
67
- add_models
68
-
69
- @m.file "config/initializers/lockit.rb", "config/initializers/lockit.rb"
70
- end #record do |m|
71
- end
72
-
73
- protected
74
-
75
- def add_management
76
- @m.directory "#{@view_path}/users"
77
- @m.directory "#{@view_path}/user_groups"
78
- @m.directory "#{@view_path}/permissions"
79
-
80
- write_controller("permissions")
81
- write_controller("users")
82
- write_controller("user_groups")
83
-
84
- copy_views("users")
85
-
86
- copy_views("user_groups")
87
-
88
- @m.template "app/views/permissions/index.html.erb",
89
- "#{@view_path}/permissions/index.html.erb"
90
-
91
- @m.template "app/views/permissions/show.html.erb",
92
- "#{@view_path}/permissions/show.html.erb"
93
-
94
- add_management_routes
95
- add_management_permissions
96
- end
97
-
98
- def add_login
99
- @m.directory "app/views/sessions"
100
-
101
- @m.template "app/controllers/sessions_controller.rb",
102
- "app/controllers/sessions_controller.rb"
103
-
104
- @m.template "app/views/sessions/new.html.erb",
105
- "app/views/sessions/new.html.erb"
106
-
107
- add_login_routes
108
- add_login_permissions
109
- end
110
-
111
- def add_models
112
- @m.directory 'app/models'
113
-
114
- write_model("user_group")
115
- write_model("permission")
116
-
117
- if options[:add_lockdown_authentication]
118
- write_model("user")
119
- write_model("profile")
120
- end
121
-
122
- unless options[:skip_migrations]
123
- write_migration("create_user_groups")
124
- write_migration("create_permissions")
125
-
126
- if options[:add_lockdown_authentication]
127
- write_migration("create_profiles")
128
- write_migration("create_users")
129
- write_migration("create_admin_user")
130
- end
131
- end
132
- end
133
-
134
- def copy_views(vw)
135
- @m.template "app/views/#{vw}/index.html.erb", "#{@view_path}/#{vw}/index.html.erb"
136
- @m.template "app/views/#{vw}/show.html.erb", "#{@view_path}/#{vw}/show.html.erb"
137
- @m.template "app/views/#{vw}/edit.html.erb", "#{@view_path}/#{vw}/edit.html.erb"
138
- @m.template "app/views/#{vw}/new.html.erb", "#{@view_path}/#{vw}/new.html.erb"
139
- end
140
-
141
- def add_login_permissions
142
- add_permissions "set_permission(:sessions_management).with_controller(:sessions)"
143
-
144
- add_predefined_user_group "set_public_access :sessions_management"
145
- end
146
-
147
- def add_management_routes
148
- if @namespace.blank?
149
- permissions = %Q(\tmap.resources :permissions)
150
- users = %Q(\tmap.resources :users)
151
- user_groups = %Q(\tmap.resources :user_groups)
152
- routes = [permissions, user_groups, users].join("\n\n")
153
- else
154
- routes = %Q(\tmap.namespace :#{@namespace} do |#{@namespace}|\n\t\t#{@namespace}.resources :permissions\n\t\t#{@namespace}.resources :users\n\t\t#{@namespace}.resources :user_groups\n\tend)
155
- end
156
-
157
- write_routes_file(routes)
158
- end
159
-
160
- def add_management_permissions
161
- perms = []
162
- perms << "set_permission(:users_management).with_controller(:#{@namespace.blank? ? "users" : "#{@namespace}__users"})"
163
- perms << "set_permission(:user_groups_management).with_controller(:#{@namespace.blank? ? "user_groups" : "#{@namespace}__user_groups"})"
164
- perms << "set_permission(:permissions_management).with_controller(:#{@namespace.blank? ? "permissions" : "#{@namespace}__permissions"})"
165
- perms << "set_permission(:my_account).with_controller(:#{@namespace.blank? ? "users" : "#{@namespace}__users"}).only_methods(:edit, :update, :show)"
166
-
167
- add_permissions perms.join("\n ")
168
-
169
- add_predefined_user_group "set_protected_access :my_account"
170
- end
171
-
172
- def add_permissions(str)
173
- sentinel = '# Define your permissions here:'
174
- write_init_file(sentinel, str)
175
- end
176
-
177
- def add_predefined_user_group(str)
178
- sentinel = '# Define the built-in user groups here:'
179
- write_init_file(sentinel, str)
180
- end
181
-
182
- def add_login_routes
183
- sessions = %Q(\tmap.resources :sessions)
184
- home = %Q(\tmap.home '', :controller => 'sessions', :action => 'new')
185
- login = %Q(\tmap.login '/login', :controller => 'sessions', :action => 'new')
186
- logout = %Q(\tmap.logout '/logout', :controller => 'sessions', :action => 'destroy')
187
- routes = [sessions, home, login, logout].join("\n\n")
188
-
189
- write_routes_file(routes)
190
- end
191
-
192
- def banner
193
- <<-EOS
194
- Installs the lockdown framework to managing users user_groups
195
- and viewing permissions. Also includes a login screen.
196
-
197
- By default the entire set of stubs are installed.
198
-
199
- Please use the appropriate options to customize your install.
200
-
201
- USAGE: #{$0} #{spec.name}
202
- EOS
203
- end
204
-
205
- def add_options!(opt)
206
- opt.separator ''
207
- opt.separator 'Options:'
208
-
209
- opt.on("--namespace=admin",
210
- "Install lockdown templates with a namespace, in this example 'admin'.") do |v|
211
- options[:namespace] = v
212
- end
213
-
214
- opt.on("--add-lockdown-authentication",
215
- "Create user model + --add-login functionality.") do |v|
216
- options[:add_lockdown_authentication] = v
217
- end
218
-
219
- opt.on("--add-management",
220
- "Create user, user_group, permission management controllers and views.") do |v|
221
- options[:add_management] = v
222
- end
223
-
224
- opt.on("--add-login",
225
- "Create session controller and views.") do |v|
226
- options[:add_login] = v
227
- end
228
-
229
- opt.on("--skip-rules",
230
- "Skip installation of lib/lockdown/init.rb lib/lockdown/session.rb") do |v|
231
- options[:skip_rules] = v
232
- end
233
-
234
- opt.on("--skip-migrations",
235
- "Skip migrations installation") do |v|
236
- options[:skip_migrations] = v
237
- end
238
- end
239
-
240
- def write_migration(str)
241
- @m.migration_template "db/migrate/#{str}.rb", "db/migrate",
242
- :migration_file_name => str
243
- end
244
-
245
- def write_model(str)
246
- @m.file "app/models/#{str}.rb", "app/models/#{str}.rb"
247
- end
248
-
249
- def write_controller(str)
250
- @m.template "app/controllers/#{str}_controller.rb",
251
- "#{@controller_path}/#{str}_controller.rb"
252
- write_helper(str)
253
- end
254
-
255
- def write_helper(str)
256
- @m.template "app/helpers/#{str}_helper.rb",
257
- "#{@helper_path}/#{str}_helper.rb"
258
- end
259
-
260
- def write_routes_file(routes)
261
- sentinel = 'ActionController::Routing::Routes.draw do |map|'
262
-
263
- @m.gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
264
- "#{match}\n #{routes}\n"
265
- end
266
- end
267
-
268
- def write_init_file(sentinel, str)
269
- @m.gsub_file 'lib/lockdown/init.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
270
- "#{match}\n #{str}"
271
- end
272
- end
273
-
274
- end
@@ -1,22 +0,0 @@
1
- class <%= "#{namespace.camelcase}::" unless namespace.blank? %>PermissionsController < ApplicationController
2
- # GET /permissions
3
- # GET /permissions.xml
4
- def index
5
- @permissions = Permission.find(:all)
6
-
7
- respond_to do |format|
8
- format.html # index.html.erb
9
- format.xml { render :xml => @permissions }
10
- end
11
- end
12
-
13
- # GET /permissions/1
14
- # GET /permissions/1.xml
15
- def show
16
- @permission = Permission.find(params[:id])
17
- respond_to do |format|
18
- format.html # show.html.erb
19
- format.xml { render :xml => @permission }
20
- end
21
- end
22
- end
@@ -1,39 +0,0 @@
1
- class SessionsController < ApplicationController
2
-
3
- # This controller handles the login/logout function of the site.
4
- def new
5
- #Stub required for Lockdown to grant access
6
- end
7
-
8
- def create
9
- password_authentication(params[:login], params[:password])
10
- end
11
-
12
- def destroy
13
- logger.info "resetting session in sessions controller"
14
- reset_session
15
- flash[:notice] = "You have been logged out."
16
- redirect_back_or_default('/')
17
- end
18
-
19
- protected
20
-
21
- def password_authentication(login, password)
22
- set_session_user(User.authenticate(login, password))
23
- if logged_in?
24
- successful_login
25
- else
26
- failed_login
27
- end
28
- end
29
-
30
- def failed_login(message = 'Authentication failed.')
31
- flash[:error] = message
32
- redirect_back_or_default login_path
33
- end
34
-
35
- def successful_login
36
- flash[:notice] = "Logged in successfully"
37
- redirect_back_or_default Lockdown::System.fetch(:successful_login_path)
38
- end
39
- end
@@ -1,122 +0,0 @@
1
- class <%= "#{namespace.camelcase}::" unless namespace.blank? %>UserGroupsController < ApplicationController
2
- before_filter :find_user_group, :only => [:show, :edit, :update, :destroy]
3
- after_filter :update_permissions, :only => [:create, :update]
4
-
5
- # GET /user_groups
6
- # GET /user_groups.xml
7
- def index
8
- @user_groups = UserGroup.find(:all)
9
-
10
- respond_to do |format|
11
- format.html # index.html.erb
12
- format.xml { render :xml => @user_groups }
13
- end
14
- end
15
-
16
- # GET /user_groups/1
17
- # GET /user_groups/1.xml
18
- def show
19
- @all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
20
- respond_to do |format|
21
- format.html # show.html.erb
22
- format.xml { render :xml => @user_group }
23
- end
24
- end
25
-
26
- # GET /user_groups/new
27
- # GET /user_groups/new.xml
28
- def new
29
- @user_group = UserGroup.new
30
- @all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
31
-
32
- respond_to do |format|
33
- format.html # new.html.erb
34
- format.xml { render :xml => @user_group }
35
- end
36
- end
37
-
38
- # GET /user_groups/1/edit
39
- def edit
40
- @all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
41
- end
42
-
43
- # POST /user_groups
44
- # POST /user_groups.xml
45
- def create
46
- @user_group = UserGroup.new(params[:user_group])
47
-
48
- respond_to do |format|
49
- if @user_group.save
50
- flash[:notice] = 'UserGroup was successfully created.'
51
- <% if namespace %>
52
- format.html { redirect_to(<%= namespace %>_user_group_path(@user_group)) }
53
- <% else %>
54
- format.html { redirect_to(user_group_path(@user_group)) }
55
- <% end %>
56
- format.xml { render :xml => @user_group, :status => :created, :location => @user_group }
57
- else
58
- @all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
59
- format.html { render :action => "new" }
60
- format.xml { render :xml => @user_group.errors, :status => :unprocessable_entity }
61
- end
62
- end
63
- end
64
-
65
- # PUT /user_groups/1
66
- # PUT /user_groups/1.xml
67
- def update
68
- respond_to do |format|
69
- if @user_group.update_attributes(params[:user_group])
70
- flash[:notice] = 'UserGroup was successfully updated.'
71
- <% if namespace %>
72
- format.html { redirect_to(<%= namespace %>_user_group_path(@user_group)) }
73
- <% else %>
74
- format.html { redirect_to(user_group_path(@user_group)) }
75
- <% end %>
76
- format.xml { head :ok }
77
- else
78
- @all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
79
- format.html { render :action => "edit" }
80
- format.xml { render :xml => @user_group.errors, :status => :unprocessable_entity }
81
- end
82
- end
83
- end
84
-
85
- # DELETE /user_groups/1
86
- # DELETE /user_groups/1.xml
87
- def destroy
88
- @user_group.destroy
89
-
90
- respond_to do |format|
91
- format.html { redirect_to(<%= namespace.blank? ? 'user_groups_path' : "#{namespace}_user_groups_path" %>) }
92
- format.xml { head :ok }
93
- end
94
- end
95
-
96
- private
97
-
98
- def find_user_group
99
- @user_group = UserGroup.find(params[:id])
100
- if <%= action_name %> != "show" && Lockdown::System.has_user_group?(@user_group)
101
- raise SecurityError,"Invalid attempt to modify user group."
102
- end
103
- end
104
-
105
- def update_permissions
106
- new_perm_ids = params.collect{|p| p[0].split("_")[1].to_i if p[0] =~ /^perm_/}.compact
107
- #
108
- # Removed previously associated permissions if not checked this time.
109
- #
110
- @user_group.permissions.dup.each do |p|
111
- @user_group.permissions.delete(p) unless new_perm_ids.include?(p.id)
112
- end
113
-
114
- #
115
- # Add in the new permissions
116
- #
117
- new_perm_ids.each do |id|
118
- next if @user_group.permission_ids.include?(id)
119
- @user_group.permissions << Permission.find(id)
120
- end
121
- end
122
- end
@@ -1,117 +0,0 @@
1
- class <%= "#{namespace.camelcase}::" unless namespace.blank? %>UsersController < ApplicationController
2
- before_filter :find_user, :only => [:show, :edit, :update, :destroy]
3
- after_filter :update_user_groups, :only => [:create, :update]
4
- # GET /users
5
- # GET /users.xml
6
- def index
7
- @users = User.find :all, :include => [:profile, :user_groups]
8
- respond_to do |format|
9
- format.html # index.html.erb
10
- format.xml { render :xml => @users }
11
- end
12
- end
13
-
14
- # GET /users/1
15
- # GET /users/1.xml
16
- def show
17
- @user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
18
- respond_to do |format|
19
- format.html # show.html.erb
20
- format.xml { render :xml => @user }
21
- end
22
- end
23
-
24
- # GET /users/new
25
- # GET /users/new.xml
26
- def new
27
- @user = User.new
28
- @user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
29
- respond_to do |format|
30
- format.html # new.html.erb
31
- format.xml { render :xml => @user }
32
- end
33
- end
34
-
35
- # GET /users/1/edit
36
- def edit
37
- @user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
38
- end
39
-
40
- # POST /users
41
- # POST /users.xml
42
- def create
43
- @user = User.new(params[:user])
44
-
45
- if @user.save
46
- flash[:notice] = "Thanks for signing up!"
47
- redirect_to(<%= namespace.blank? ? 'user_path(@user)' : "#{namespace}_user_path(@user)" %>)
48
- else
49
- @user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
50
- flash[:error] = "Please correct the following issues"
51
- render :action => "new"
52
- end
53
- end
54
-
55
- # PUT /users/1
56
- # PUT /users/1.xml
57
- def update
58
- @user.attributes = params[:user]
59
-
60
- respond_to do |format|
61
- if @user.save
62
- flash[:notice] = 'User was successfully updated.'
63
- format.html { redirect_to(<%= namespace.blank? ? 'user_path(@user)' : "#{namespace}_user_path(@user)"%>) }
64
- format.xml { head :ok }
65
- else
66
- @user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
67
- format.html { render :action => "edit" }
68
- format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
69
- end
70
- end
71
- end
72
-
73
- # DELETE /users/1
74
- # DELETE /users/1.xml
75
- def destroy
76
- @user.destroy
77
-
78
- respond_to do |format|
79
- format.html { redirect_to(<%= namespace.blank? ? 'users_path' : "#{namespace}_users_path" %>) }
80
- format.xml { head :ok }
81
- end
82
- end
83
-
84
- def change_password
85
- render :update do |page|
86
- page.replace_html 'password', :partial => 'password'
87
- end
88
- end
89
-
90
- private
91
-
92
- def find_user
93
- # Skip test if current user is an administrator
94
- unless current_user_is_admin?
95
- # Raise error if id not = current logged in user
96
- raise SecurityError.new if (current_user_id != params[:id].to_i)
97
- end
98
- @user = User.find(params[:id])
99
- raise SecurityError.new if @user.nil?
100
- end
101
-
102
- def update_user_groups
103
- new_ug_ids = params.collect{|p| p[0].split("_")[1].to_i if p[0] =~ /^ug_/}.compact
104
- # Removed previously associated user_groups if not checked this time.
105
- #
106
- @user.user_groups.dup.each do |g|
107
- @user.user_groups.delete(g) unless new_ug_ids.include?(g.id)
108
- end
109
-
110
- # Add in the new permissions
111
- #
112
- new_ug_ids.each do |id|
113
- next if @user.user_group_ids.include?(id)
114
- @user.user_groups << UserGroup.find(id)
115
- end
116
- end
117
- end
@@ -1,2 +0,0 @@
1
- module <%= "#{namespace.camelcase}::" unless namespace.blank? %>PermissionsHelper
2
- end
@@ -1,2 +0,0 @@
1
- module <%= "#{namespace.camelcase}::" unless namespace.blank? %>UserGroupsHelper
2
- end
@@ -1,2 +0,0 @@
1
- module <%= "#{namespace.camelcase}::" unless namespace.blank? %>UsersHelper
2
- end
@@ -1,13 +0,0 @@
1
- class Permission < ActiveRecord::Base
2
- has_and_belongs_to_many :user_groups
3
-
4
- def all_users
5
- User.find_by_sql <<-SQL
6
- select users.*
7
- from users, user_groups_users, permissions_user_groups
8
- where users.id = user_groups_users.user_id
9
- and user_groups_users.user_group_id = permissions_user_groups.user_group_id
10
- and permissions_user_groups.permission_id = #{self.id}
11
- SQL
12
- end
13
- end
@@ -1,10 +0,0 @@
1
- class Profile < ActiveRecord::Base
2
- SYSTEM = 1
3
-
4
- validates_presence_of :email, :first_name, :last_name
5
-
6
- validates_length_of :email, :within => 5..100
7
- validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
8
-
9
- validates_uniqueness_of :email, :case_sensitive => false
10
- end