lockdown 0.3.1 → 0.3.2
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/History.txt +3 -0
- data/lib/lockdown/system.rb +38 -1
- data/lib/lockdown/version.rb +1 -1
- data/rails_generators/lockdown_all/lockdown_all_generator.rb +41 -16
- data/rails_generators/lockdown_all/templates/app/controllers/user_groups_controller.rb +3 -7
- data/rails_generators/lockdown_all/templates/app/controllers/users_controller.rb +1 -0
- data/rails_generators/lockdown_all/templates/app/views/user_groups/index.html.erb +2 -2
- data/rails_generators/lockdown_all/templates/app/views/user_groups/show.html.erb +1 -1
- metadata +1 -1
data/History.txt
CHANGED
data/lib/lockdown/system.rb
CHANGED
@@ -65,7 +65,18 @@ module Lockdown
|
|
65
65
|
#
|
66
66
|
def create_user_group(str_sym)
|
67
67
|
return unless @options[:use_db_models]
|
68
|
-
UserGroup.create(:name => string_name(str_sym))
|
68
|
+
ug = UserGroup.create(:name => string_name(str_sym))
|
69
|
+
#
|
70
|
+
# No need to create permissions records for administrators
|
71
|
+
#
|
72
|
+
ug_sym = symbol_name(ug.name)
|
73
|
+
return if ug_sym == administrator_group_symbol
|
74
|
+
|
75
|
+
if self.has_user_group?(ug)
|
76
|
+
@user_groups[ug_sym].collect do |perm|
|
77
|
+
Permission.create(:name => string_name(perm))
|
78
|
+
end
|
79
|
+
end
|
69
80
|
end
|
70
81
|
|
71
82
|
def create_administrator_user_group
|
@@ -73,6 +84,17 @@ module Lockdown
|
|
73
84
|
Lockdown::System.create_user_group administrator_group_symbol
|
74
85
|
end
|
75
86
|
|
87
|
+
#
|
88
|
+
# Determine if the user group is defined in init.rb
|
89
|
+
#
|
90
|
+
def has_user_group?(ug)
|
91
|
+
return true if symbol_name(ug.name) == administrator_group_symbol
|
92
|
+
@user_groups.each do |key,value|
|
93
|
+
return true if key == symbol_name(ug.name)
|
94
|
+
end
|
95
|
+
return false
|
96
|
+
end
|
97
|
+
|
76
98
|
#
|
77
99
|
# Delete a user group record from the database
|
78
100
|
#
|
@@ -124,6 +146,21 @@ module Lockdown
|
|
124
146
|
end
|
125
147
|
end
|
126
148
|
|
149
|
+
#
|
150
|
+
# Similar to user_groups_assignable_for_user, this method should be
|
151
|
+
# used to restrict users from creating a user group with more power than
|
152
|
+
# they have been allowed.
|
153
|
+
#
|
154
|
+
def permissions_assignable_for_user(usr)
|
155
|
+
return [] if usr.nil?
|
156
|
+
if administrator?(usr)
|
157
|
+
@permissions.keys.collect{|k| Permission.find_by_name(string_name(k)) }.compact
|
158
|
+
else
|
159
|
+
groups = user_groups_assignable_for_user(usr)
|
160
|
+
groups.collect{|g| g.permissions}.flatten.compact
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
127
164
|
def make_user_administrator(usr)
|
128
165
|
usr.user_groups << UserGroup.find_or_create_by_name(administrator_group_string)
|
129
166
|
end
|
data/lib/lockdown/version.rb
CHANGED
@@ -41,22 +41,6 @@ class LockdownAllGenerator < Rails::Generator::Base
|
|
41
41
|
|
42
42
|
|
43
43
|
|
44
|
-
#Migrations
|
45
|
-
m.migration_template "db/migrate/create_profiles.rb", "db/migrate",
|
46
|
-
:migration_file_name => "create_profiles"
|
47
|
-
|
48
|
-
m.migration_template "db/migrate/create_users.rb", "db/migrate",
|
49
|
-
:migration_file_name => "create_users"
|
50
|
-
|
51
|
-
m.migration_template "db/migrate/create_user_groups.rb", "db/migrate",
|
52
|
-
:migration_file_name => "create_user_groups"
|
53
|
-
|
54
|
-
m.migration_template "db/migrate/create_permissions.rb", "db/migrate",
|
55
|
-
:migration_file_name => "create_permissions"
|
56
|
-
|
57
|
-
m.migration_template "db/migrate/create_admin_user_and_user_group.rb",
|
58
|
-
"db/migrate",
|
59
|
-
:migration_file_name => "create_admin_user_and_user_group"
|
60
44
|
|
61
45
|
#Route file (i like having them on individual lines)
|
62
46
|
m.route_resources "permissions"
|
@@ -93,6 +77,47 @@ class LockdownAllGenerator < Rails::Generator::Base
|
|
93
77
|
|
94
78
|
m.file "app/views/sessions/new.html.erb",
|
95
79
|
"app/views/sessions/new.html.erb"
|
80
|
+
|
81
|
+
#Migrations
|
82
|
+
begin
|
83
|
+
m.migration_template "db/migrate/create_profiles.rb", "db/migrate",
|
84
|
+
:migration_file_name => "create_profiles"
|
85
|
+
rescue
|
86
|
+
puts "Profiles migration exists"
|
87
|
+
end
|
88
|
+
|
89
|
+
begin
|
90
|
+
m.migration_template "db/migrate/create_users.rb", "db/migrate",
|
91
|
+
:migration_file_name => "create_users"
|
92
|
+
|
93
|
+
rescue
|
94
|
+
puts "Users migration exists"
|
95
|
+
end
|
96
|
+
|
97
|
+
begin
|
98
|
+
m.migration_template "db/migrate/create_user_groups.rb", "db/migrate",
|
99
|
+
:migration_file_name => "create_user_groups"
|
100
|
+
|
101
|
+
rescue
|
102
|
+
puts "User Groups migration exists"
|
103
|
+
end
|
104
|
+
|
105
|
+
begin
|
106
|
+
m.migration_template "db/migrate/create_permissions.rb", "db/migrate",
|
107
|
+
:migration_file_name => "create_permissions"
|
108
|
+
|
109
|
+
rescue
|
110
|
+
puts "Permissions migration exists"
|
111
|
+
end
|
112
|
+
|
113
|
+
begin
|
114
|
+
m.migration_template "db/migrate/create_admin_user_and_user_group.rb",
|
115
|
+
"db/migrate",
|
116
|
+
:migration_file_name => "create_admin_user_and_user_group"
|
117
|
+
|
118
|
+
rescue
|
119
|
+
puts "Admin User Group... migration exists"
|
120
|
+
end
|
96
121
|
end
|
97
122
|
end
|
98
123
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class UserGroupsController < ApplicationController
|
2
2
|
before_filter :find_user_group, :only => [:show, :edit, :update, :destroy]
|
3
|
-
before_filter :protect_private, :only => [:edit, :update]
|
4
3
|
after_filter :update_permissions, :only => [:create, :update]
|
5
4
|
|
6
5
|
# GET /user_groups
|
@@ -27,7 +26,7 @@ class UserGroupsController < ApplicationController
|
|
27
26
|
# GET /user_groups/new.xml
|
28
27
|
def new
|
29
28
|
@user_group = UserGroup.new
|
30
|
-
@all_permissions = Lockdown::System.
|
29
|
+
@all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
|
31
30
|
|
32
31
|
respond_to do |format|
|
33
32
|
format.html # new.html.erb
|
@@ -37,7 +36,7 @@ class UserGroupsController < ApplicationController
|
|
37
36
|
|
38
37
|
# GET /user_groups/1/edit
|
39
38
|
def edit
|
40
|
-
@all_permissions = Lockdown::System.
|
39
|
+
@all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
|
41
40
|
end
|
42
41
|
|
43
42
|
# POST /user_groups
|
@@ -51,6 +50,7 @@ class UserGroupsController < ApplicationController
|
|
51
50
|
format.html { redirect_to(@user_group) }
|
52
51
|
format.xml { render :xml => @user_group, :status => :created, :location => @user_group }
|
53
52
|
else
|
53
|
+
@all_permissions = Lockdown::System.permissions_assignable_for_user(current_user)
|
54
54
|
format.html { render :action => "new" }
|
55
55
|
format.xml { render :xml => @user_group.errors, :status => :unprocessable_entity }
|
56
56
|
end
|
@@ -89,10 +89,6 @@ class UserGroupsController < ApplicationController
|
|
89
89
|
@user_group = UserGroup.find(params[:id])
|
90
90
|
end
|
91
91
|
|
92
|
-
def protect_private
|
93
|
-
@user_group.protect_private
|
94
|
-
end
|
95
|
-
|
96
92
|
def update_permissions
|
97
93
|
new_perm_ids = params.collect{|p| p[0].split("_")[1].to_i if p[0] =~ /^perm_/}.compact
|
98
94
|
#
|
@@ -48,6 +48,7 @@ class UsersController < ApplicationController
|
|
48
48
|
flash[:notice] = "Thanks for signing up!"
|
49
49
|
redirect_to(users_path)
|
50
50
|
else
|
51
|
+
@user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
|
51
52
|
flash[:error] = "Please correct the following issues"
|
52
53
|
render :action => "new"
|
53
54
|
end
|
@@ -9,8 +9,8 @@
|
|
9
9
|
<tr>
|
10
10
|
<td><%=h user_group.name %></td>
|
11
11
|
<td><%= link_to 'Show', user_group %></td>
|
12
|
-
<td><%= link_to('Edit', edit_user_group_path(user_group)) unless
|
13
|
-
<td><%= link_to('Destroy', user_group, :confirm => 'Are you sure?', :method => :delete) unless
|
12
|
+
<td><%= link_to('Edit', edit_user_group_path(user_group)) unless Lockdown::System.has_user_group?(user_group) %></td>
|
13
|
+
<td><%= link_to('Destroy', user_group, :confirm => 'Are you sure?', :method => :delete) unless Lockdown::System.has_user_group?(user_group) %></td>
|
14
14
|
</tr>
|
15
15
|
<% end %>
|
16
16
|
</table>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= render :partial => "data", :locals => {:f => nil} %>
|
2
2
|
|
3
|
-
<% unless @user_group
|
3
|
+
<% unless Lockdown::System.has_user_group?(@user_group) %>
|
4
4
|
<%= link_to 'Edit', edit_user_group_path(@user_group) %> |
|
5
5
|
<% end %>
|
6
6
|
<%= link_to 'Back', user_groups_path %>
|