lockdown 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -1
- data/Manifest.txt +35 -0
- data/config/hoe.rb +0 -1
- data/lib/lockdown/version.rb +1 -1
- data/rails_generators/lockdown_all/USAGE +5 -0
- data/rails_generators/lockdown_all/lockdown_all_generator.rb +69 -0
- data/rails_generators/lockdown_all/templates/app/controllers/permissions_controller.rb +22 -0
- data/rails_generators/lockdown_all/templates/app/controllers/sessions_controller.rb +37 -0
- data/rails_generators/lockdown_all/templates/app/controllers/user_groups_controller.rb +113 -0
- data/rails_generators/lockdown_all/templates/app/controllers/users_controller.rb +124 -0
- data/rails_generators/lockdown_all/templates/app/helpers/permissions_helper.rb +13 -0
- data/rails_generators/lockdown_all/templates/app/helpers/user_groups_helper.rb +35 -0
- data/rails_generators/lockdown_all/templates/app/helpers/users_helper.rb +78 -0
- data/rails_generators/lockdown_all/templates/app/models/permission.rb +80 -0
- data/rails_generators/lockdown_all/templates/app/models/user.rb +96 -0
- data/rails_generators/lockdown_all/templates/app/models/user_group.rb +177 -0
- data/rails_generators/lockdown_all/templates/app/views/permissions/_data.html.erb +13 -0
- data/rails_generators/lockdown_all/templates/app/views/permissions/index.html.erb +16 -0
- data/rails_generators/lockdown_all/templates/app/views/permissions/show.html.erb +3 -0
- data/rails_generators/lockdown_all/templates/app/views/sessions/new.html.erb +9 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/_data.html.erb +15 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/_form.html.erb +11 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/edit.html.erb +6 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/index.html.erb +20 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/new.html.erb +5 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/show.html.erb +6 -0
- data/rails_generators/lockdown_all/templates/app/views/users/_data.html.erb +32 -0
- data/rails_generators/lockdown_all/templates/app/views/users/_form.html.erb +18 -0
- data/rails_generators/lockdown_all/templates/app/views/users/_password.html.erb +5 -0
- data/rails_generators/lockdown_all/templates/app/views/users/edit.html.erb +6 -0
- data/rails_generators/lockdown_all/templates/app/views/users/index.html.erb +22 -0
- data/rails_generators/lockdown_all/templates/app/views/users/new.html.erb +5 -0
- data/rails_generators/lockdown_all/templates/app/views/users/show.html.erb +4 -0
- data/rails_generators/lockdown_all/templates/db/migrate/create_permissions.rb +15 -0
- data/rails_generators/lockdown_all/templates/db/migrate/create_profile.rb +19 -0
- data/rails_generators/lockdown_all/templates/db/migrate/create_user_groups.rb +15 -0
- data/rails_generators/lockdown_all/templates/db/migrate/create_users.rb +20 -0
- data/website/index.html +1 -1
- metadata +36 -1
data/History.txt
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
== 0.1.
|
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
|
data/Manifest.txt
CHANGED
@@ -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
|
data/config/hoe.rb
CHANGED
@@ -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"
|
data/lib/lockdown/version.rb
CHANGED
@@ -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
|