lockdown 0.1.2 → 0.1.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.
Files changed (39) hide show
  1. data/History.txt +7 -1
  2. data/Manifest.txt +35 -0
  3. data/config/hoe.rb +0 -1
  4. data/lib/lockdown/version.rb +1 -1
  5. data/rails_generators/lockdown_all/USAGE +5 -0
  6. data/rails_generators/lockdown_all/lockdown_all_generator.rb +69 -0
  7. data/rails_generators/lockdown_all/templates/app/controllers/permissions_controller.rb +22 -0
  8. data/rails_generators/lockdown_all/templates/app/controllers/sessions_controller.rb +37 -0
  9. data/rails_generators/lockdown_all/templates/app/controllers/user_groups_controller.rb +113 -0
  10. data/rails_generators/lockdown_all/templates/app/controllers/users_controller.rb +124 -0
  11. data/rails_generators/lockdown_all/templates/app/helpers/permissions_helper.rb +13 -0
  12. data/rails_generators/lockdown_all/templates/app/helpers/user_groups_helper.rb +35 -0
  13. data/rails_generators/lockdown_all/templates/app/helpers/users_helper.rb +78 -0
  14. data/rails_generators/lockdown_all/templates/app/models/permission.rb +80 -0
  15. data/rails_generators/lockdown_all/templates/app/models/user.rb +96 -0
  16. data/rails_generators/lockdown_all/templates/app/models/user_group.rb +177 -0
  17. data/rails_generators/lockdown_all/templates/app/views/permissions/_data.html.erb +13 -0
  18. data/rails_generators/lockdown_all/templates/app/views/permissions/index.html.erb +16 -0
  19. data/rails_generators/lockdown_all/templates/app/views/permissions/show.html.erb +3 -0
  20. data/rails_generators/lockdown_all/templates/app/views/sessions/new.html.erb +9 -0
  21. data/rails_generators/lockdown_all/templates/app/views/user_groups/_data.html.erb +15 -0
  22. data/rails_generators/lockdown_all/templates/app/views/user_groups/_form.html.erb +11 -0
  23. data/rails_generators/lockdown_all/templates/app/views/user_groups/edit.html.erb +6 -0
  24. data/rails_generators/lockdown_all/templates/app/views/user_groups/index.html.erb +20 -0
  25. data/rails_generators/lockdown_all/templates/app/views/user_groups/new.html.erb +5 -0
  26. data/rails_generators/lockdown_all/templates/app/views/user_groups/show.html.erb +6 -0
  27. data/rails_generators/lockdown_all/templates/app/views/users/_data.html.erb +32 -0
  28. data/rails_generators/lockdown_all/templates/app/views/users/_form.html.erb +18 -0
  29. data/rails_generators/lockdown_all/templates/app/views/users/_password.html.erb +5 -0
  30. data/rails_generators/lockdown_all/templates/app/views/users/edit.html.erb +6 -0
  31. data/rails_generators/lockdown_all/templates/app/views/users/index.html.erb +22 -0
  32. data/rails_generators/lockdown_all/templates/app/views/users/new.html.erb +5 -0
  33. data/rails_generators/lockdown_all/templates/app/views/users/show.html.erb +4 -0
  34. data/rails_generators/lockdown_all/templates/db/migrate/create_permissions.rb +15 -0
  35. data/rails_generators/lockdown_all/templates/db/migrate/create_profile.rb +19 -0
  36. data/rails_generators/lockdown_all/templates/db/migrate/create_user_groups.rb +15 -0
  37. data/rails_generators/lockdown_all/templates/db/migrate/create_users.rb +20 -0
  38. data/website/index.html +1 -1
  39. metadata +36 -1
@@ -1,4 +1,10 @@
1
- == 0.1.1 2008-04-18
1
+ == 0.1.3 2008-04-25
2
+ * Still Don't have correct dependencies. Added in first crack at lockdown_all generator.
3
+
4
+ == 0.1.2 2008-04-25
5
+ * Didn't have correct dependencies.
6
+
7
+ == 0.1.1 2008-04-24
2
8
  * Fixed bug with session cleanup.
3
9
 
4
10
  == 0.1.0 2008-04-18
@@ -20,6 +20,39 @@ lib/lockdown/helper.rb
20
20
  lib/lockdown/model.rb
21
21
  lib/lockdown/version.rb
22
22
  lib/lockdown/view.rb
23
+ rails_generators/lockdown_all/USAGE
24
+ rails_generators/lockdown_all/lockdown_all_generator.rb
25
+ rails_generators/lockdown_all/templates/app/controllers/permissions_controller.rb
26
+ rails_generators/lockdown_all/templates/app/controllers/sessions_controller.rb
27
+ rails_generators/lockdown_all/templates/app/controllers/user_groups_controller.rb
28
+ rails_generators/lockdown_all/templates/app/controllers/users_controller.rb
29
+ rails_generators/lockdown_all/templates/app/helpers/permissions_helper.rb
30
+ rails_generators/lockdown_all/templates/app/helpers/user_groups_helper.rb
31
+ rails_generators/lockdown_all/templates/app/helpers/users_helper.rb
32
+ rails_generators/lockdown_all/templates/app/models/permission.rb
33
+ rails_generators/lockdown_all/templates/app/models/user.rb
34
+ rails_generators/lockdown_all/templates/app/models/user_group.rb
35
+ rails_generators/lockdown_all/templates/app/views/permissions/_data.html.erb
36
+ rails_generators/lockdown_all/templates/app/views/permissions/index.html.erb
37
+ rails_generators/lockdown_all/templates/app/views/permissions/show.html.erb
38
+ rails_generators/lockdown_all/templates/app/views/sessions/new.html.erb
39
+ rails_generators/lockdown_all/templates/app/views/user_groups/_data.html.erb
40
+ rails_generators/lockdown_all/templates/app/views/user_groups/_form.html.erb
41
+ rails_generators/lockdown_all/templates/app/views/user_groups/edit.html.erb
42
+ rails_generators/lockdown_all/templates/app/views/user_groups/index.html.erb
43
+ rails_generators/lockdown_all/templates/app/views/user_groups/new.html.erb
44
+ rails_generators/lockdown_all/templates/app/views/user_groups/show.html.erb
45
+ rails_generators/lockdown_all/templates/app/views/users/_data.html.erb
46
+ rails_generators/lockdown_all/templates/app/views/users/_form.html.erb
47
+ rails_generators/lockdown_all/templates/app/views/users/_password.html.erb
48
+ rails_generators/lockdown_all/templates/app/views/users/edit.html.erb
49
+ rails_generators/lockdown_all/templates/app/views/users/index.html.erb
50
+ rails_generators/lockdown_all/templates/app/views/users/new.html.erb
51
+ rails_generators/lockdown_all/templates/app/views/users/show.html.erb
52
+ rails_generators/lockdown_all/templates/db/migrate/create_permissions.rb
53
+ rails_generators/lockdown_all/templates/db/migrate/create_profile.rb
54
+ rails_generators/lockdown_all/templates/db/migrate/create_user_groups.rb
55
+ rails_generators/lockdown_all/templates/db/migrate/create_users.rb
23
56
  script/console
24
57
  script/destroy
25
58
  script/generate
@@ -31,7 +64,9 @@ tasks/website.rake
31
64
  test/test_generator_helper.rb
32
65
  test/test_helper.rb
33
66
  test/test_lockdown.rb
67
+ test/test_lockdown_all_generator.rb
34
68
  test/test_lockdown_generator.rb
69
+ test/test_lockdown_models_generator.rb
35
70
  website/index.html
36
71
  website/index.txt
37
72
  website/javascripts/rounded_corners_lite.inc.js
@@ -9,7 +9,6 @@ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
9
9
  DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
10
10
  EXTRA_DEPENDENCIES = [
11
11
  ['rubigen', '>=1.2.4']
12
- # ['activesupport', '>= 1.3.1']
13
12
  ] # An array of rubygem dependencies [name, version]
14
13
 
15
14
  @config_file = "~/.rubyforge/user-config.yml"
@@ -2,7 +2,7 @@ module Lockdown #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -0,0 +1,69 @@
1
+ class LockdownAllGenerator < RubiGen::Base
2
+
3
+ default_options :author => nil
4
+
5
+ attr_reader :name
6
+
7
+ def initialize(runtime_args, runtime_options = {})
8
+ super
9
+ usage if args.empty?
10
+ @name = args.shift
11
+ end
12
+
13
+ def manifest
14
+ record do |m|
15
+ # Ensure appropriate folder(s) exists
16
+ m.directory 'app/helpers'
17
+ m.directory 'app/models'
18
+ m.directory 'app/views'
19
+ m.directory 'app/views/users'
20
+ m.directory 'app/views/user_groups'
21
+ m.directory 'app/views/permissions'
22
+ m.directory 'app/views/sessions'
23
+ m.directory 'app/controllers'
24
+
25
+ #Controllers
26
+ m.file "app/controllers/permissions_controller.rb", "app/controllers/permissions_controller.rb"
27
+ m.file "app/controllers/users_controller.rb", "app/controllers/users_controller.rb"
28
+ m.file "app/controllers/user_groups_controller.rb", "app/controllers/user_groups_controller.rb"
29
+
30
+ #Models
31
+ m.file "app/models/permission.rb", "app/models/permission.rb"
32
+ m.file "app/models/user.rb", "app/models/user.rb"
33
+ m.file "app/models/user_group.rb", "app/models/user_group.rb"
34
+
35
+ #Helpers
36
+ m.file "app/helpers/permissions_helper.rb", "app/helpers/permissions_helper.rb"
37
+ m.file "app/helpers/users_helper.rb", "app/helpers/users_helper.rb"
38
+ m.file "app/helpers/user_groups_helper.rb", "app/helpers/user_groups_helper.rb"
39
+
40
+ #Views
41
+ copy_views(m, "users")
42
+ m.file "app/views/users/_password.html.erb", "app/views/users/_password.html.erb"
43
+
44
+ copy_views(m, "user_groups")
45
+
46
+ copy_views(m, "permissions")
47
+
48
+ m.file "app/views/sessions/new.html.erb", "app/views/sessions/new.html.erb"
49
+ end
50
+ end
51
+
52
+ protected
53
+ def banner
54
+ <<-EOS
55
+ Creates a ...
56
+
57
+ USAGE: #{$0} #{spec.name} name
58
+ EOS
59
+ end
60
+
61
+ def copy_views(m, vw)
62
+ m.file "app/views/#{vw}/_data.html.erb", "app/views/#{vw}/_data.html.erb"
63
+ m.file "app/views/#{vw}/_form.html.erb", "app/views/#{vw}/_form.html.erb"
64
+ m.file "app/views/#{vw}/index.html.erb", "app/views/#{vw}/index.html.erb"
65
+ m.file "app/views/#{vw}/show.html.erb", "app/views/#{vw}/show.html.erb"
66
+ m.file "app/views/#{vw}/edit.html.erb", "app/views/#{vw}/edit.html.erb"
67
+ m.file "app/views/#{vw}/new.html.erb", "app/views/#{vw}/new.html.erb"
68
+ end
69
+ end
@@ -0,0 +1,22 @@
1
+ class 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
@@ -0,0 +1,37 @@
1
+ # This controller handles the login/logout function of the site.
2
+ class SessionsController < ApplicationController
3
+ def new
4
+ #Stub required for Lockdown to grant access
5
+ end
6
+
7
+ def create
8
+ password_authentication(params[:login], params[:password])
9
+ end
10
+
11
+ def destroy
12
+ logger.info "resetting session in sessions controller"
13
+ reset_session
14
+ flash[:notice] = "You have been logged out."
15
+ redirect_back_or_default('/')
16
+ end
17
+
18
+ protected
19
+ def password_authentication(login, password)
20
+ set_session_user(User.authenticate(login, password))
21
+ if logged_in?
22
+ successful_login
23
+ else
24
+ failed_login
25
+ end
26
+ end
27
+
28
+ def failed_login(message = 'Authentication failed.')
29
+ flash[:error] = message
30
+ redirect_back_or_default login_url
31
+ end
32
+
33
+ def successful_login
34
+ flash[:notice] = "Logged in successfully"
35
+ redirect_back_or_default "/"
36
+ end
37
+ end
@@ -0,0 +1,113 @@
1
+ class UserGroupsController < ApplicationController
2
+ before_filter :find_user_group, :only => [:show, :edit, :update, :destroy]
3
+ before_filter :protect_private, :only => [:edit, :update]
4
+ after_filter :update_permissions, :only => [:create, :update]
5
+
6
+ # GET /user_groups
7
+ # GET /user_groups.xml
8
+ def index
9
+ @user_groups = UserGroup.find(:all)
10
+
11
+ respond_to do |format|
12
+ format.html # index.html.erb
13
+ format.xml { render :xml => @user_groups }
14
+ end
15
+ end
16
+
17
+ # GET /user_groups/1
18
+ # GET /user_groups/1.xml
19
+ def show
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 = Permission.all_but_public
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 = Permission.all_but_public
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
+ format.html { redirect_to(@user_group) }
52
+ format.xml { render :xml => @user_group, :status => :created, :location => @user_group }
53
+ else
54
+ format.html { render :action => "new" }
55
+ format.xml { render :xml => @user_group.errors, :status => :unprocessable_entity }
56
+ end
57
+ end
58
+ end
59
+
60
+ # PUT /user_groups/1
61
+ # PUT /user_groups/1.xml
62
+ def update
63
+ respond_to do |format|
64
+ if @user_group.update_attributes(params[:user_group])
65
+ flash[:notice] = 'UserGroup was successfully updated.'
66
+ format.html { redirect_to(@user_group) }
67
+ format.xml { head :ok }
68
+ else
69
+ format.html { render :action => "edit" }
70
+ format.xml { render :xml => @user_group.errors, :status => :unprocessable_entity }
71
+ end
72
+ end
73
+ end
74
+
75
+ # DELETE /user_groups/1
76
+ # DELETE /user_groups/1.xml
77
+ def destroy
78
+ @user_group.destroy
79
+
80
+ respond_to do |format|
81
+ format.html { redirect_to(user_groups_url) }
82
+ format.xml { head :ok }
83
+ end
84
+ end
85
+
86
+ private
87
+
88
+ def find_user_group
89
+ @user_group = UserGroup.find(params[:id])
90
+ end
91
+
92
+ def protect_private
93
+ @user_group.protect_private
94
+ end
95
+
96
+ def update_permissions
97
+ new_perm_ids = params.collect{|p| p[0].split("_")[1].to_i if p[0] =~ /^perm_/}.compact
98
+ #
99
+ # Removed previously associated permissions if not checked this time.
100
+ #
101
+ @user_group.permissions.dup.each do |p|
102
+ @user_group.permissions.delete(p) unless new_perm_ids.include?(p.id)
103
+ end
104
+
105
+ #
106
+ # Add in the new permissions
107
+ #
108
+ new_perm_ids.each do |id|
109
+ next if @user_group.permission_ids.include?(id)
110
+ @user_group.permissions << Permission.find(id)
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,124 @@
1
+ class 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.all
8
+ logger.info "===============> access rights: #{session[:access_rights].join("\n")}" unless session[:access_rights] == :all
9
+ logger.info "===============> is: #{current_user_is_admin?}"
10
+ respond_to do |format|
11
+ format.html # index.html.erb
12
+ format.xml { render :xml => @users }
13
+ end
14
+ end
15
+
16
+ # GET /users/1
17
+ # GET /users/1.xml
18
+ def show
19
+ respond_to do |format|
20
+ format.html # show.html.erb
21
+ format.xml { render :xml => @user }
22
+ end
23
+ end
24
+
25
+ # GET /users/new
26
+ # GET /users/new.xml
27
+ def new
28
+ @user = User.new
29
+ @profile = Profile.new
30
+ @user_groups_for_user = UserGroup.find_assignable_for_user(current_user)
31
+ respond_to do |format|
32
+ format.html # new.html.erb
33
+ format.xml { render :xml => @user }
34
+ end
35
+ end
36
+
37
+ # GET /users/1/edit
38
+ def edit
39
+ @user_groups_for_user = UserGroup.find_assignable_for_user(current_user)
40
+ end
41
+
42
+ # POST /users
43
+ # POST /users.xml
44
+ def create
45
+ @user = User.new(params[:user])
46
+ @profile = Profile.new(params[:profile])
47
+
48
+ @user.profile = @profile
49
+ if @user.save
50
+ flash[:notice] = "Thanks for signing up!"
51
+ redirect_to(users_path)
52
+ else
53
+ flash[:error] = "Please correct the following issues"
54
+ render :action => "new"
55
+ end
56
+ end
57
+
58
+ # PUT /users/1
59
+ # PUT /users/1.xml
60
+ def update
61
+ @user.profile.attributes = params[:profile]
62
+ @user.attributes = params[:user]
63
+
64
+ respond_to do |format|
65
+ if @user.save
66
+ flash[:notice] = 'User was successfully updated.'
67
+ format.html { redirect_to(@user) }
68
+ format.xml { head :ok }
69
+ else
70
+ format.html { render :action => "edit" }
71
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
72
+ end
73
+ end
74
+ end
75
+
76
+ # DELETE /users/1
77
+ # DELETE /users/1.xml
78
+ def destroy
79
+ @user.destroy
80
+
81
+ respond_to do |format|
82
+ format.html { redirect_to(users_url) }
83
+ format.xml { head :ok }
84
+ end
85
+ end
86
+
87
+ def change_password
88
+ render :update do |page|
89
+ page.replace_html 'password', :partial => 'password'
90
+ end
91
+ end
92
+
93
+ private
94
+
95
+ def find_user
96
+ # Skip test if current user is an administrator
97
+ unless current_user_is_admin?
98
+ # Raise error if id not = current logged in user
99
+ raise SecurityError.new if (current_user_id != params[:id].to_i)
100
+ end
101
+ @user = User.find(params[:id])
102
+ raise SecurityError.new if @user.nil?
103
+ @profile = @user.profile
104
+ end
105
+
106
+ def update_user_groups
107
+ new_ug_ids = params.collect{|p| p[0].split("_")[1].to_i if p[0] =~ /^ug_/}.compact
108
+ #
109
+ # Removed previously associated user_groups if not checked this time.
110
+ #
111
+ @user.user_groups.dup.each do |g|
112
+ #Don't remove the automatically assigned user groups
113
+ next if g.system_assigned?
114
+ @user.user_groups.delete(g) unless new_ug_ids.include?(g.id)
115
+ end
116
+ #
117
+ # Add in the new permissions
118
+ #
119
+ new_ug_ids.each do |id|
120
+ next if @user.user_group_ids.include?(id)
121
+ @user.user_groups << UserGroup.find(id)
122
+ end
123
+ end
124
+ end