lockdown 0.5.9 → 0.5.10
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/Manifest.txt +1 -2
- data/bin/lockdown +3 -1
- data/config/hoe.rb +1 -1
- data/lib/lockdown/classy-inheritance.rb +153 -0
- data/lib/lockdown/version.rb +1 -1
- data/rails_generators/lockdown/lockdown_generator.rb +12 -12
- data/rails_generators/lockdown/templates/app/controllers/user_groups_controller.rb +1 -1
- data/rails_generators/lockdown/templates/app/controllers/users_controller.rb +0 -5
- data/rails_generators/lockdown/templates/app/helpers/user_groups_helper.rb +3 -3
- data/rails_generators/lockdown/templates/app/helpers/users_helper.rb +12 -12
- data/rails_generators/lockdown/templates/app/models/user.rb +8 -11
- data/rails_generators/lockdown/templates/app/views/permissions/_data.html.erb +3 -3
- data/rails_generators/lockdown/templates/app/views/permissions/index.html.erb +4 -4
- data/rails_generators/lockdown/templates/app/views/permissions/show.html.erb +2 -2
- data/rails_generators/lockdown/templates/app/views/user_groups/_data.html.erb +29 -5
- data/rails_generators/lockdown/templates/app/views/user_groups/_form.html.erb +6 -6
- data/rails_generators/lockdown/templates/app/views/user_groups/edit.html.erb +3 -3
- data/rails_generators/lockdown/templates/app/views/user_groups/index.html.erb +7 -7
- data/rails_generators/lockdown/templates/app/views/user_groups/new.html.erb +2 -2
- data/rails_generators/lockdown/templates/app/views/user_groups/show.html.erb +5 -5
- data/rails_generators/lockdown/templates/app/views/users/_data.html.erb +34 -10
- data/rails_generators/lockdown/templates/app/views/users/_form.html.erb +7 -7
- data/rails_generators/lockdown/templates/app/views/users/edit.html.erb +3 -3
- data/rails_generators/lockdown/templates/app/views/users/index.html.erb +8 -8
- data/rails_generators/lockdown/templates/app/views/users/new.html.erb +2 -2
- data/rails_generators/lockdown/templates/app/views/users/show.html.erb +3 -3
- data/rails_generators/lockdown/templates/db/migrate/create_admin_user.rb +6 -8
- data/website/index.html +8 -264
- data/website/index.txt +6 -244
- metadata +5 -7
- data/website/generator.html +0 -264
- data/website/generator.txt +0 -188
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.5.10 2008-06-24
|
2
|
+
* Modified: Classy Inheritance is now bundled with Lockdown to simplify the user management screens.
|
3
|
+
* Fixed: Templates: Use m.template with views to test for rails version for action_name issue
|
4
|
+
* Added: Templates: Missing javascript for do_highlight
|
5
|
+
* Fixed: Templates: Usage of ul for permissions and user groups.
|
6
|
+
* Clean: Templates: Removed unnecessary :locals => {:f => f} attribute in _form partials
|
7
|
+
* Clean: Templates: Changed text_field_tag to text_field.
|
8
|
+
|
1
9
|
== 0.5.9 2008-06-19
|
2
10
|
* Fixed: Added url.strip! to account for spaces. URI::split(url) was bombing if url contained spaces.
|
3
11
|
|
data/Manifest.txt
CHANGED
@@ -13,6 +13,7 @@ bin/lockdown
|
|
13
13
|
config/hoe.rb
|
14
14
|
config/requirements.rb
|
15
15
|
lib/lockdown.rb
|
16
|
+
lib/lockdown/classy-inheritance.rb
|
16
17
|
lib/lockdown/controller.rb
|
17
18
|
lib/lockdown/controller_inspector.rb
|
18
19
|
lib/lockdown/helper.rb
|
@@ -68,8 +69,6 @@ test/test_lockdown.rb
|
|
68
69
|
test/test_lockdown_all_generator.rb
|
69
70
|
test/test_lockdown_generator.rb
|
70
71
|
test/test_lockdown_models_generator.rb
|
71
|
-
website/generator.html
|
72
|
-
website/generator.txt
|
73
72
|
website/index.html
|
74
73
|
website/index.txt
|
75
74
|
website/javascripts/rounded_corners_lite.inc.js
|
data/bin/lockdown
CHANGED
@@ -95,9 +95,11 @@ begin
|
|
95
95
|
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'lockdown', :framework => @framework)
|
96
96
|
|
97
97
|
File.open(config_file, "a") do |f|
|
98
|
+
require_classy = %Q(require "lockdown/classy-inheritance")
|
98
99
|
require_lockdown = %Q(require "lockdown/init")
|
99
100
|
|
100
|
-
f << %Q(\n
|
101
|
+
f << %Q(\n#{require_classy}\n) unless configuration_file_has?(require_classy)
|
102
|
+
f << %Q(\n#{require_lockdown}\n) unless configuration_file_has?(require_lockdown)
|
101
103
|
end
|
102
104
|
rescue Exception => e
|
103
105
|
puts e.backtrace.join("\n")
|
data/config/hoe.rb
CHANGED
@@ -2,7 +2,7 @@ require 'lockdown/version'
|
|
2
2
|
|
3
3
|
AUTHOR = 'Andrew Stone' # can also be an array of Authors
|
4
4
|
EMAIL = "andrew.n.stone@gmail.com"
|
5
|
-
DESCRIPTION = "Authorization/Authentication system for RubyOnRails
|
5
|
+
DESCRIPTION = "Authorization/Authentication system for RubyOnRails"
|
6
6
|
GEM_NAME = 'lockdown' # what ppl will type to install your gem
|
7
7
|
RUBYFORGE_PROJECT = 'lockdown' # The unix name for your project
|
8
8
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
@@ -0,0 +1,153 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
module ActiveRecord::Validations::ClassMethods
|
5
|
+
def validates_associated(association, options = {})
|
6
|
+
class_eval do
|
7
|
+
validates_each(association) do |record, associate_name, value|
|
8
|
+
associate = record.send(associate_name)
|
9
|
+
if associate && !associate.valid?
|
10
|
+
associate.errors.each do |key, value|
|
11
|
+
record.errors.add(key, value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module Stonean
|
20
|
+
module ClassyInheritance
|
21
|
+
def self.included(base)
|
22
|
+
base.extend Stonean::ClassyInheritance::ClassMethods
|
23
|
+
end
|
24
|
+
|
25
|
+
module ClassMethods
|
26
|
+
def depends_on(model_sym, options = {})
|
27
|
+
define_relationship(model_sym,options)
|
28
|
+
|
29
|
+
validates_presence_of model_sym
|
30
|
+
validates_associated model_sym
|
31
|
+
|
32
|
+
# Before save functionality to create/update the requisite object
|
33
|
+
define_save_method(model_sym, options[:as])
|
34
|
+
|
35
|
+
# Adds a find_with_<model_sym> class method
|
36
|
+
define_find_with_method(model_sym)
|
37
|
+
|
38
|
+
if options[:as]
|
39
|
+
define_can_be_method_on_requisite_class(model_sym, options[:as])
|
40
|
+
end
|
41
|
+
|
42
|
+
options[:attrs].each{|attr| define_accessors(model_sym, attr, options[:prefix])}
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def can_be(model_sym, options = {})
|
47
|
+
unless options[:as]
|
48
|
+
raise ArgumentError, ":as attribute required when calling can_be"
|
49
|
+
end
|
50
|
+
|
51
|
+
klass = model_sym.to_s.classify
|
52
|
+
|
53
|
+
define_method "is_a_#{model_sym}?" do
|
54
|
+
eval("self.#{options[:as]}_type == '#{klass}'")
|
55
|
+
end
|
56
|
+
|
57
|
+
find_with_method = "find_with_#{self.name.underscore}"
|
58
|
+
|
59
|
+
define_method "as_a_#{model_sym}" do
|
60
|
+
eval("#{klass}.send(:#{find_with_method},self.#{options[:as]}_id)")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def define_relationship(model_sym, options)
|
67
|
+
opts = options.dup
|
68
|
+
opts.delete(:attrs)
|
69
|
+
if opts[:as]
|
70
|
+
as_opt = opts.delete(:as)
|
71
|
+
opts = polymorphic_constraints(as_opt).merge(opts)
|
72
|
+
has_one model_sym, opts
|
73
|
+
else
|
74
|
+
belongs_to model_sym, opts
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def define_save_method(model_sym, polymorphic_name = nil)
|
79
|
+
define_method "save_requisite_#{model_sym}" do
|
80
|
+
if polymorphic_name
|
81
|
+
eval("self.#{model_sym}.#{polymorphic_name}_type = self.class.name")
|
82
|
+
eval("self.#{model_sym}.#{polymorphic_name}_id = self.id")
|
83
|
+
end
|
84
|
+
|
85
|
+
if polymorphic_name
|
86
|
+
eval <<-SAVEIT
|
87
|
+
unless self.#{model_sym}.new_record?
|
88
|
+
self.#{model_sym}.save
|
89
|
+
end
|
90
|
+
SAVEIT
|
91
|
+
else
|
92
|
+
eval("self.#{model_sym}.save")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
before_save "save_requisite_#{model_sym}".to_sym
|
97
|
+
end
|
98
|
+
|
99
|
+
def define_find_with_method(model_sym)
|
100
|
+
self.class.send :define_method, "find_with_#{model_sym}" do |*args|
|
101
|
+
eval <<-CODE
|
102
|
+
if args[1] && args[1].is_a?(Hash)
|
103
|
+
if args[1].has_key?(:include)
|
104
|
+
inc_val = args[1][:include]
|
105
|
+
new_val = inc_val.is_a?(Array) ? inc_val.push(:#{:model_sym}) : [inc_val, :#{model_sym}]
|
106
|
+
args[1][:include] = new_val
|
107
|
+
else
|
108
|
+
args[1].merge!({:include => :#{model_sym}})
|
109
|
+
end
|
110
|
+
else
|
111
|
+
args << {:include => :#{model_sym}}
|
112
|
+
end
|
113
|
+
find(*args)
|
114
|
+
CODE
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def define_accessors(model_sym, attr, prefix)
|
119
|
+
accessor_method_name = ( prefix ? "#{model_sym}_#{attr}" : attr)
|
120
|
+
|
121
|
+
define_method accessor_method_name do
|
122
|
+
eval("self.#{model_sym} ? self.#{model_sym}.#{attr} : nil")
|
123
|
+
end
|
124
|
+
|
125
|
+
define_method "#{accessor_method_name}=" do |val|
|
126
|
+
model_defined = eval("self.#{model_sym}")
|
127
|
+
|
128
|
+
unless model_defined
|
129
|
+
klass = model_sym.to_s.classify
|
130
|
+
eval("self.#{model_sym} = #{klass}.new")
|
131
|
+
end
|
132
|
+
|
133
|
+
eval("self.#{model_sym}.#{attr}= val")
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def define_can_be_method_on_requisite_class(model_sym, polymorphic_name)
|
138
|
+
klass = model_sym.to_s.classify
|
139
|
+
requisite_klass = eval(klass)
|
140
|
+
unless requisite_klass.respond_to?(self.name.underscore.to_sym)
|
141
|
+
requisite_klass.send :can_be, self.name.underscore,
|
142
|
+
:as => polymorphic_name
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def polymorphic_constraints(polymorphic_name)
|
147
|
+
{ :foreign_key => "#{polymorphic_name}_id",
|
148
|
+
:conditions => "#{polymorphic_name}_type = '#{self.name}'"}
|
149
|
+
end
|
150
|
+
end # ClassMethods
|
151
|
+
end # ClassyInheritance module
|
152
|
+
end # Stonean module
|
153
|
+
ActiveRecord::Base.send :include, Stonean::ClassyInheritance
|
data/lib/lockdown/version.rb
CHANGED
@@ -48,13 +48,13 @@ class LockdownGenerator < Rails::Generator::Base
|
|
48
48
|
m.directory 'app/views/user_groups'
|
49
49
|
m.directory 'app/views/permissions'
|
50
50
|
|
51
|
-
m.
|
51
|
+
m.template "app/controllers/permissions_controller.rb",
|
52
52
|
"app/controllers/permissions_controller.rb"
|
53
53
|
|
54
|
-
m.
|
54
|
+
m.template "app/controllers/users_controller.rb",
|
55
55
|
"app/controllers/users_controller.rb"
|
56
56
|
|
57
|
-
m.
|
57
|
+
m.template "app/controllers/user_groups_controller.rb",
|
58
58
|
"app/controllers/user_groups_controller.rb"
|
59
59
|
|
60
60
|
m.template "app/helpers/permissions_helper.rb",
|
@@ -70,13 +70,13 @@ class LockdownGenerator < Rails::Generator::Base
|
|
70
70
|
|
71
71
|
copy_views(m, "user_groups")
|
72
72
|
|
73
|
-
m.
|
73
|
+
m.template "app/views/permissions/_data.html.erb",
|
74
74
|
"app/views/permissions/_data.html.erb"
|
75
75
|
|
76
|
-
m.
|
76
|
+
m.template "app/views/permissions/index.html.erb",
|
77
77
|
"app/views/permissions/index.html.erb"
|
78
78
|
|
79
|
-
m.
|
79
|
+
m.template "app/views/permissions/show.html.erb",
|
80
80
|
"app/views/permissions/show.html.erb"
|
81
81
|
|
82
82
|
m.route_resources "permissions"
|
@@ -158,12 +158,12 @@ class LockdownGenerator < Rails::Generator::Base
|
|
158
158
|
end # add_migrations
|
159
159
|
|
160
160
|
def copy_views(m, vw)
|
161
|
-
m.
|
162
|
-
m.
|
163
|
-
m.
|
164
|
-
m.
|
165
|
-
m.
|
166
|
-
m.
|
161
|
+
m.template "app/views/#{vw}/_data.html.erb", "app/views/#{vw}/_data.html.erb"
|
162
|
+
m.template "app/views/#{vw}/_form.html.erb", "app/views/#{vw}/_form.html.erb"
|
163
|
+
m.template "app/views/#{vw}/index.html.erb", "app/views/#{vw}/index.html.erb"
|
164
|
+
m.template "app/views/#{vw}/show.html.erb", "app/views/#{vw}/show.html.erb"
|
165
|
+
m.template "app/views/#{vw}/edit.html.erb", "app/views/#{vw}/edit.html.erb"
|
166
|
+
m.template "app/views/#{vw}/new.html.erb", "app/views/#{vw}/new.html.erb"
|
167
167
|
end
|
168
168
|
|
169
169
|
def add_login_permissions(m)
|
@@ -89,7 +89,7 @@ class UserGroupsController < ApplicationController
|
|
89
89
|
|
90
90
|
def find_user_group
|
91
91
|
@user_group = UserGroup.find(params[:id])
|
92
|
-
if
|
92
|
+
if <%= action_name %> != "show" && Lockdown::System.has_user_group?(@user_group)
|
93
93
|
raise SecurityError,"Invalid attempt to modify user group."
|
94
94
|
end
|
95
95
|
end
|
@@ -25,7 +25,6 @@ class UsersController < ApplicationController
|
|
25
25
|
# GET /users/new.xml
|
26
26
|
def new
|
27
27
|
@user = User.new
|
28
|
-
@profile = Profile.new
|
29
28
|
@user_groups_for_user = Lockdown::System.user_groups_assignable_for_user(current_user)
|
30
29
|
respond_to do |format|
|
31
30
|
format.html # new.html.erb
|
@@ -42,9 +41,7 @@ class UsersController < ApplicationController
|
|
42
41
|
# POST /users.xml
|
43
42
|
def create
|
44
43
|
@user = User.new(params[:user])
|
45
|
-
@profile = Profile.new(params[:profile])
|
46
44
|
|
47
|
-
@user.profile = @profile
|
48
45
|
if @user.save
|
49
46
|
flash[:notice] = "Thanks for signing up!"
|
50
47
|
redirect_to(users_path)
|
@@ -58,7 +55,6 @@ class UsersController < ApplicationController
|
|
58
55
|
# PUT /users/1
|
59
56
|
# PUT /users/1.xml
|
60
57
|
def update
|
61
|
-
@user.profile.attributes = params[:profile]
|
62
58
|
@user.attributes = params[:user]
|
63
59
|
|
64
60
|
respond_to do |format|
|
@@ -101,7 +97,6 @@ class UsersController < ApplicationController
|
|
101
97
|
end
|
102
98
|
@user = User.find(params[:id])
|
103
99
|
raise SecurityError.new if @user.nil?
|
104
|
-
@profile = @user.profile
|
105
100
|
end
|
106
101
|
|
107
102
|
def update_user_groups
|
@@ -3,7 +3,7 @@ module UserGroupsHelper
|
|
3
3
|
if <%= action_name %> == "show"
|
4
4
|
h @user_group.name
|
5
5
|
else
|
6
|
-
|
6
|
+
text_field :user_group, :name
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
@@ -18,8 +18,8 @@ module UserGroupsHelper
|
|
18
18
|
checked = (@user_group.permission_ids.include?(perm.id) ? "checked" : "")
|
19
19
|
bg << "_" << checked if checked.length > 0
|
20
20
|
rvalue << <<-HTML
|
21
|
-
<li class="#{bg}">
|
22
|
-
<label
|
21
|
+
<li class="#{bg}" id="li_#{input_id}">
|
22
|
+
<label for="#{input_id}" onclick="do_highlight('#{input_id}')">
|
23
23
|
<input id="#{input_id}" name="#{input_id}" type="checkbox" #{checked}/> #{perm.name}
|
24
24
|
</label>
|
25
25
|
</li>
|
@@ -1,25 +1,25 @@
|
|
1
1
|
module UsersHelper
|
2
|
-
def
|
2
|
+
def user_first_name_value
|
3
3
|
if <%= action_name %> == "show"
|
4
|
-
h @
|
4
|
+
h @user.first_name
|
5
5
|
else
|
6
|
-
|
6
|
+
text_field :user, :first_name
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def user_last_name_value
|
11
11
|
if <%= action_name %> == "show"
|
12
|
-
h @
|
12
|
+
h @user.last_name
|
13
13
|
else
|
14
|
-
|
14
|
+
text_field :user, :last_name
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def user_email_value
|
19
19
|
if <%= action_name %> == "show"
|
20
|
-
h @
|
20
|
+
h @user.email
|
21
21
|
else
|
22
|
-
|
22
|
+
text_field :user, :email
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -27,7 +27,7 @@ module UsersHelper
|
|
27
27
|
if <%= action_name %> == "show"
|
28
28
|
h @user.login
|
29
29
|
else
|
30
|
-
|
30
|
+
text_field :user, :login
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -63,8 +63,8 @@ module UsersHelper
|
|
63
63
|
checked = (@user.user_group_ids.include?(ug.id) ? "checked" : "")
|
64
64
|
bg << "_" << checked if checked.length > 0
|
65
65
|
rvalue << <<-HTML
|
66
|
-
<li class="#{bg}">
|
67
|
-
<label
|
66
|
+
<li class="#{bg}" id="li_#{input_id}">
|
67
|
+
<label for="#{input_id}" onclick="do_highlight('#{input_id}')">
|
68
68
|
<input id="#{input_id}" name="#{input_id}" type="checkbox" #{checked}/> #{ug.name}
|
69
69
|
</label>
|
70
70
|
</li>
|
@@ -1,7 +1,11 @@
|
|
1
1
|
require 'digest/sha1'
|
2
2
|
class User < ActiveRecord::Base
|
3
3
|
has_and_belongs_to_many :user_groups
|
4
|
-
|
4
|
+
# depends_on functionality is from the classy-inheritance gem
|
5
|
+
# that is bundled with lockdown.
|
6
|
+
# For more info: http://stonean.com
|
7
|
+
#
|
8
|
+
depends_on :profile, :attrs => [:first_name, :last_name, :email]
|
5
9
|
|
6
10
|
# Virtual attributes
|
7
11
|
attr_accessor :password
|
@@ -14,12 +18,10 @@ class User < ActiveRecord::Base
|
|
14
18
|
validates_length_of :login, :within => 3..40
|
15
19
|
validates_uniqueness_of :login, :case_sensitive => false
|
16
20
|
|
17
|
-
validates_presence_of :profile
|
18
|
-
validates_associated :profile
|
19
|
-
|
20
21
|
before_save :prepare_for_save
|
21
22
|
|
22
|
-
attr_accessible :login, :password, :password_confirmation
|
23
|
+
attr_accessible :login, :password, :password_confirmation,
|
24
|
+
:first_name, :last_name, :email
|
23
25
|
|
24
26
|
# Authenticates a user by their login name and unencrypted password.
|
25
27
|
# Returns the user or nil.
|
@@ -42,19 +44,14 @@ class User < ActiveRecord::Base
|
|
42
44
|
crypted_password == encrypt(password)
|
43
45
|
end
|
44
46
|
|
45
|
-
def email
|
46
|
-
self.profile.email
|
47
|
-
end
|
48
|
-
|
49
47
|
def full_name
|
50
|
-
self.
|
48
|
+
self.first_name + " " + self.last_name
|
51
49
|
end
|
52
50
|
|
53
51
|
protected
|
54
52
|
|
55
53
|
def prepare_for_save
|
56
54
|
encrypt_password
|
57
|
-
self.profile.save
|
58
55
|
end
|
59
56
|
|
60
57
|
def encrypt_password
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<p>
|
2
2
|
<b>Name</b><br />
|
3
|
-
|
3
|
+
<%%= permission_name_value %>
|
4
4
|
</p>
|
5
5
|
<p>
|
6
6
|
<b>Access rights:</b><br />
|
7
|
-
|
7
|
+
<%%= permission_access_rights_value %>
|
8
8
|
</p>
|
9
9
|
<p>
|
10
10
|
<b>Users with permission:</b><br />
|
11
|
-
|
11
|
+
<%%= permission_users_value %>
|
12
12
|
</p>
|
13
13
|
|
@@ -5,12 +5,12 @@
|
|
5
5
|
<th>Name</th>
|
6
6
|
</tr>
|
7
7
|
|
8
|
-
|
8
|
+
<%% for permission in @permissions %>
|
9
9
|
<tr>
|
10
|
-
<td
|
11
|
-
<td
|
10
|
+
<td><%%=h permission.name %></td>
|
11
|
+
<td><%%= link_to 'Show', permission %></td>
|
12
12
|
</tr>
|
13
|
-
|
13
|
+
<%% end %>
|
14
14
|
</table>
|
15
15
|
|
16
16
|
<br />
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
1
|
+
<%%= render :partial => "data" %>
|
2
2
|
|
3
|
-
|
3
|
+
<%%= link_to 'Back', permissions_path %>
|
@@ -8,6 +8,7 @@ without this, the user group selection is just no good
|
|
8
8
|
border: 1px solid #ccc;
|
9
9
|
list-style: none;
|
10
10
|
height: 300px;
|
11
|
+
height: 600px;
|
11
12
|
text-align: left;
|
12
13
|
list-style: none;
|
13
14
|
margin-left: 12px;
|
@@ -30,15 +31,38 @@ li.odd_checked{
|
|
30
31
|
|
31
32
|
<p>
|
32
33
|
<b>Name</b><br />
|
33
|
-
|
34
|
+
<%%= user_group_name_value %>
|
34
35
|
</p>
|
35
36
|
<p>
|
36
37
|
<b>Permissions</b><br />
|
37
|
-
|
38
|
+
<%%= user_group_permissions_value %>
|
38
39
|
</p>
|
39
|
-
|
40
|
+
<%% if <%= action_name %> == "show" %>
|
40
41
|
<p>
|
41
42
|
<b>Users in user group:</b><br />
|
42
|
-
|
43
|
+
<%%= user_group_users_value %>
|
43
44
|
</p>
|
44
|
-
|
45
|
+
<%% end%>
|
46
|
+
|
47
|
+
<!--
|
48
|
+
Take this out and place in your application.js.
|
49
|
+
This is duplicated in users/_data.html.erb
|
50
|
+
-->
|
51
|
+
<script type="text/javascript">
|
52
|
+
|
53
|
+
function do_highlight(id){
|
54
|
+
li = document.getElementById("li_"+id);
|
55
|
+
i = document.getElementById(id);
|
56
|
+
if (i.checked){
|
57
|
+
li.style.backgroundColor = "#ddd";
|
58
|
+
li.style.color = "#fff";
|
59
|
+
}else{
|
60
|
+
if (li.className == "odd"){
|
61
|
+
li.style.backgroundColor = "#fff";
|
62
|
+
}else{
|
63
|
+
li.style.backgroundColor = "#ccc";
|
64
|
+
}
|
65
|
+
li.style.color = "#000";
|
66
|
+
}
|
67
|
+
}
|
68
|
+
</script>
|
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
<%%
|
2
2
|
submit_label = "Update"
|
3
3
|
submit_label = "Create" if @user_group.new_record?
|
4
4
|
-%>
|
5
5
|
|
6
|
-
|
6
|
+
<%%= error_messages_for :user_group %>
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
<p>
|
11
|
-
|
8
|
+
<%% form_for(@user_group) do |f| %>
|
9
|
+
<%%= render :partial => "data" %>
|
10
|
+
<p> <%%= f.submit submit_label %> </p>
|
11
|
+
<%% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<h1>Editing Usergroup</h1>
|
2
2
|
|
3
|
-
|
3
|
+
<%%= render :partial => "form" %>
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
<%%= link_to 'Show', @user_group %> |
|
6
|
+
<%%= link_to 'Back', user_groups_path %>
|
@@ -5,16 +5,16 @@
|
|
5
5
|
<th>Name</th>
|
6
6
|
</tr>
|
7
7
|
|
8
|
-
|
8
|
+
<%% for user_group in @user_groups %>
|
9
9
|
<tr>
|
10
|
-
<td
|
11
|
-
<td
|
12
|
-
<td
|
13
|
-
<td
|
10
|
+
<td><%%=h user_group.name %></td>
|
11
|
+
<td><%%= link_to 'Show', user_group %></td>
|
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>
|
17
17
|
|
18
18
|
<br />
|
19
19
|
|
20
|
-
|
20
|
+
<%%= link_to 'New User Group', new_user_group_path %>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
<%%= render :partial => "data" %>
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
<%% unless Lockdown::System.has_user_group?(@user_group) %>
|
4
|
+
<%%= link_to 'Edit', edit_user_group_path(@user_group) %> |
|
5
|
+
<%% end %>
|
6
|
+
<%%= link_to 'Back', user_groups_path %>
|