lockdown 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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