andrewzielinski-lockdown 0.9.6

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 (59) hide show
  1. data/History.txt +195 -0
  2. data/README.txt +36 -0
  3. data/Rakefile +41 -0
  4. data/lib/lockdown.rb +70 -0
  5. data/lib/lockdown/context.rb +41 -0
  6. data/lib/lockdown/database.rb +105 -0
  7. data/lib/lockdown/frameworks/rails.rb +146 -0
  8. data/lib/lockdown/frameworks/rails/controller.rb +147 -0
  9. data/lib/lockdown/frameworks/rails/view.rb +61 -0
  10. data/lib/lockdown/helper.rb +95 -0
  11. data/lib/lockdown/orms/active_record.rb +68 -0
  12. data/lib/lockdown/permission.rb +204 -0
  13. data/lib/lockdown/rules.rb +289 -0
  14. data/lib/lockdown/session.rb +57 -0
  15. data/lib/lockdown/system.rb +57 -0
  16. data/rails_generators/lockdown/lockdown_generator.rb +273 -0
  17. data/rails_generators/lockdown/templates/app/controllers/permissions_controller.rb +22 -0
  18. data/rails_generators/lockdown/templates/app/controllers/sessions_controller.rb +39 -0
  19. data/rails_generators/lockdown/templates/app/controllers/user_groups_controller.rb +122 -0
  20. data/rails_generators/lockdown/templates/app/controllers/users_controller.rb +117 -0
  21. data/rails_generators/lockdown/templates/app/helpers/permissions_helper.rb +2 -0
  22. data/rails_generators/lockdown/templates/app/helpers/user_groups_helper.rb +2 -0
  23. data/rails_generators/lockdown/templates/app/helpers/users_helper.rb +2 -0
  24. data/rails_generators/lockdown/templates/app/models/permission.rb +13 -0
  25. data/rails_generators/lockdown/templates/app/models/profile.rb +10 -0
  26. data/rails_generators/lockdown/templates/app/models/user.rb +95 -0
  27. data/rails_generators/lockdown/templates/app/models/user_group.rb +15 -0
  28. data/rails_generators/lockdown/templates/app/views/permissions/index.html.erb +16 -0
  29. data/rails_generators/lockdown/templates/app/views/permissions/show.html.erb +26 -0
  30. data/rails_generators/lockdown/templates/app/views/sessions/new.html.erb +12 -0
  31. data/rails_generators/lockdown/templates/app/views/user_groups/edit.html.erb +33 -0
  32. data/rails_generators/lockdown/templates/app/views/user_groups/index.html.erb +20 -0
  33. data/rails_generators/lockdown/templates/app/views/user_groups/new.html.erb +31 -0
  34. data/rails_generators/lockdown/templates/app/views/user_groups/show.html.erb +29 -0
  35. data/rails_generators/lockdown/templates/app/views/users/edit.html.erb +51 -0
  36. data/rails_generators/lockdown/templates/app/views/users/index.html.erb +22 -0
  37. data/rails_generators/lockdown/templates/app/views/users/new.html.erb +50 -0
  38. data/rails_generators/lockdown/templates/app/views/users/show.html.erb +33 -0
  39. data/rails_generators/lockdown/templates/config/initializers/lockit.rb +1 -0
  40. data/rails_generators/lockdown/templates/db/migrate/create_admin_user.rb +17 -0
  41. data/rails_generators/lockdown/templates/db/migrate/create_permissions.rb +19 -0
  42. data/rails_generators/lockdown/templates/db/migrate/create_profiles.rb +26 -0
  43. data/rails_generators/lockdown/templates/db/migrate/create_user_groups.rb +19 -0
  44. data/rails_generators/lockdown/templates/db/migrate/create_users.rb +17 -0
  45. data/rails_generators/lockdown/templates/lib/lockdown/README +42 -0
  46. data/rails_generators/lockdown/templates/lib/lockdown/init.rb +122 -0
  47. data/spec/lockdown/database_spec.rb +158 -0
  48. data/spec/lockdown/frameworks/rails/controller_spec.rb +224 -0
  49. data/spec/lockdown/frameworks/rails/view_spec.rb +125 -0
  50. data/spec/lockdown/frameworks/rails_spec.rb +175 -0
  51. data/spec/lockdown/permission_spec.rb +156 -0
  52. data/spec/lockdown/rules_spec.rb +109 -0
  53. data/spec/lockdown/session_spec.rb +89 -0
  54. data/spec/lockdown/system_spec.rb +59 -0
  55. data/spec/lockdown_spec.rb +19 -0
  56. data/spec/rcov.opts +5 -0
  57. data/spec/spec.opts +3 -0
  58. data/spec/spec_helper.rb +1 -0
  59. metadata +112 -0
@@ -0,0 +1,33 @@
1
+ <h1>Editing User Group</h1>
2
+
3
+ <%% form_for(<%= namespace.blank? ? '@user_group' : "[:#{namespace}, @user_group]" %>) do |f| %>
4
+ <%%= f.error_messages %>
5
+ <p>
6
+ <b>Name</b><br />
7
+ <%%= f.text_field :name %>
8
+ </p>
9
+ <p>
10
+ <b>Permissions</b><br />
11
+ <ul style="list-style: none;">
12
+ <%%
13
+ @all_permissions.each_with_index do |perm,i|
14
+ input_id = "perm_#{perm.id}"
15
+ checked = (@user_group.permission_ids.include?(perm.id) ? "checked" : "")
16
+ %>
17
+ <li id="li_<%%= input_id %>">
18
+ <label for="<%%= input_id %>">
19
+ <input id="<%%= input_id %>" name="<%%= input_id %>" type="checkbox" <%%= checked %>/>&nbsp;&nbsp;<%%= perm.name %>
20
+ </label>
21
+ </li>
22
+ <%%
23
+ end
24
+ %>
25
+ </ul>
26
+ </p>
27
+
28
+ <p> <%%= f.submit "Update" %> </p>
29
+ <%% end %>
30
+
31
+
32
+ <%%= link_to 'Show', <%= namespace.blank? ? '@user_group' : "#{namespace}_user_group_path(@user_group)" %> %> |
33
+ <%%= link_to 'Back', <%= namespace.blank? ? 'user_groups_path' : "#{namespace}_user_groups_path" %> %>
@@ -0,0 +1,20 @@
1
+ <h1>Listing User Groups</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Name</th>
6
+ </tr>
7
+
8
+ <%% for user_group in @user_groups %>
9
+ <tr>
10
+ <td><%%=h user_group.name %></td>
11
+ <td><%%= link_to 'Show', <%= namespace.blank? ? "user_group_path(user_group)" : "#{namespace}_user_group_path(user_group)" %> %></td>
12
+ <td><%%= link_to('Edit', <%= namespace.blank? ? "edit_user_group_path(user_group)" : "edit_#{namespace}_user_group_path(user_group)" %>) unless Lockdown::System.has_user_group?(user_group) %></td>
13
+ <td><%%= link_to('Destroy',<%= namespace.blank? ? "user_group_path(user_group)" : "#{namespace}_user_group_path(user_group)" %>, :confirm => 'Are you sure?', :method => :delete) unless Lockdown::System.has_user_group?(user_group) %></td>
14
+ </tr>
15
+ <%% end %>
16
+ </table>
17
+
18
+ <br />
19
+
20
+ <%%= link_to 'New User Group', <%= namespace.blank? ? "new_user_group_path" : "new_#{namespace}_user_group_path" %> %>
@@ -0,0 +1,31 @@
1
+ <h1>New User Group</h1>
2
+
3
+ <%% form_for(<%= namespace.blank? ? '@user_group' : "[:#{namespace}, @user_group]" %>) do |f| %>
4
+ <%%= f.error_messages %>
5
+ <p>
6
+ <b>Name</b><br />
7
+ <%%= f.text_field :name %>
8
+ </p>
9
+ <p>
10
+ <b>Permissions</b><br />
11
+ <ul style="list-style: none;">
12
+ <%%
13
+ @all_permissions.each_with_index do |perm,i|
14
+ input_id = "perm_#{perm.id}"
15
+ checked = (@user_group.permission_ids.include?(perm.id) ? "checked" : "")
16
+ %>
17
+ <li id="li_<%%= input_id %>">
18
+ <label for="<%%= input_id %>">
19
+ <input id="<%%= input_id %>" name="<%%= input_id %>" type="checkbox" <%%= checked %>/>&nbsp;&nbsp;<%%= perm.name %>
20
+ </label>
21
+ </li>
22
+ <%%
23
+ end
24
+ %>
25
+ </ul>
26
+ </p>
27
+
28
+ <p> <%%= f.submit "Create" %> </p>
29
+ <%% end %>
30
+
31
+ <%%= link_to 'Back', <%= namespace.blank? ? 'user_groups_path' : "#{namespace}_user_groups_path" %> %>
@@ -0,0 +1,29 @@
1
+ <p>
2
+ <b>Name</b><br />
3
+ <%%= h @user_group.name %>
4
+ </p>
5
+ <p>
6
+ <b>Permissions</b><br />
7
+ <%%
8
+ @user_group.permissions.each do |perm|
9
+ %>
10
+ <%%= perm.name %><br/>
11
+ <%%
12
+ end
13
+ %>
14
+ </p>
15
+ <p>
16
+ <b>Users in user group:</b><br />
17
+ <%%
18
+ @user_group.all_users.each do |user|
19
+ %>
20
+ <%%= link_to_or_show(user.full_name, <%= namespace.blank? ? 'user' : "#{namespace}_user_path(user)" %>) %><br/>
21
+ <%%
22
+ end
23
+ %>
24
+ </p>
25
+
26
+ <%% unless Lockdown::System.has_user_group?(@user_group) %>
27
+ <%%= link_to 'Edit', <%= namespace.blank? ? 'edit_user_group_path(@user_group)' : "edit_#{namespace}_user_group_path(@user_group)" %> %> |
28
+ <%% end %>
29
+ <%%= link_to 'Back', <%= namespace.blank? ? 'user_groups_path' : "#{namespace}_user_groups_path" %> %>
@@ -0,0 +1,51 @@
1
+ <h1>Editing User</h1>
2
+
3
+ <%% form_for(<%= namespace.blank? ? "@user" : "[:#{namespace}, @user]" %>) do |f| %>
4
+ <%%= f.error_messages %>
5
+ <p>
6
+ <b>First name</b><br />
7
+ <%%= f.text_field :first_name %>
8
+ </p>
9
+ <p>
10
+ <b>Last name</b><br />
11
+ <%%= f.text_field :last_name %>
12
+ </p>
13
+ <p>
14
+ <b>Email</b><br />
15
+ <%%= f.text_field :email %>
16
+ </p>
17
+ <p>
18
+ <b>Login</b><br />
19
+ <%%= f.text_field :login %>
20
+ </p>
21
+ <p>
22
+ <b>Password</b><br />
23
+ <%%= f.password_field :password %>
24
+ </p>
25
+ <p>
26
+ <b>Password confirmation</b><br />
27
+ <%%= f.password_field :password_confirmation %>
28
+ </p>
29
+ <p>
30
+ <b>User Groups</b><br />
31
+ <ul style="list-style: none;">
32
+ <%%
33
+ @user_groups_for_user.each_with_index do |ug,i|
34
+ input_id = "ug_#{ug.id}"
35
+ checked = (@user.user_group_ids.include?(ug.id) ? "checked" : "")
36
+ %>
37
+ <li id="li_<%%= input_id %>">
38
+ <label for="<%%= input_id %>">
39
+ <input id="<%%= input_id %>" name="<%%= input_id %>" type="checkbox" <%%= checked %>/>&nbsp;&nbsp;<%%= ug.name %>
40
+ </label>
41
+ </li>
42
+ <%%
43
+ end
44
+ %>
45
+ </ul>
46
+ </p>
47
+ <p> <%%= f.submit "Update" %> </p>
48
+ <%% end %>
49
+
50
+ <%%= link_to 'Show', <%= namespace.blank? ? "user_path(@user)" : "#{namespace}_user_path(@user)" %> %> |
51
+ <%%= link_to 'Back', <%= namespace.blank? ? "users_path" : "#{namespace}_users_path" %> %>
@@ -0,0 +1,22 @@
1
+ <h1>Listing Users</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Login</th>
6
+ <th>Name</th>
7
+ </tr>
8
+
9
+ <%% @users.each do |user| %>
10
+ <tr>
11
+ <td><%%=h user.login %></td>
12
+ <td><%%=h user.full_name %></td>
13
+ <td><%%= link_to 'Show', <%= namespace.blank? ? "user_path(user)" : "#{namespace}_user_path(user)" %> %></td>
14
+ <td><%%= link_to 'Edit', <%= namespace.blank? ? "edit_user_path(user)" : "edit_#{namespace}_user_path(user)" %> %></td>
15
+ <td><%%= link_to 'Destroy', <%= namespace.blank? ? "user_path(user)" : "#{namespace}_user_path(user)" %>, :confirm => 'Are you sure?', :method => :delete %></td>
16
+ </tr>
17
+ <%% end %>
18
+ </table>
19
+
20
+ <br />
21
+
22
+ <%%= link_to 'New User', <%= namespace.blank? ? "new_user_path" : "new_#{namespace}_user_path" %> %>
@@ -0,0 +1,50 @@
1
+ <h1>New User</h1>
2
+
3
+ <%% form_for(<%= namespace.blank? ? "@user" : "[:#{namespace}, @user]" %>) do |f| %>
4
+ <%%= f.error_messages %>
5
+ <p>
6
+ <b>First name</b><br />
7
+ <%%= f.text_field :first_name %>
8
+ </p>
9
+ <p>
10
+ <b>Last name</b><br />
11
+ <%%= f.text_field :last_name %>
12
+ </p>
13
+ <p>
14
+ <b>Email</b><br />
15
+ <%%= f.text_field :email %>
16
+ </p>
17
+ <p>
18
+ <b>Login</b><br />
19
+ <%%= f.text_field :login %>
20
+ </p>
21
+ <p>
22
+ <b>Password</b><br />
23
+ <%%= f.password_field :password %>
24
+ </p>
25
+ <p>
26
+ <b>Password confirmation</b><br />
27
+ <%%= f.password_field :password_confirmation %>
28
+ </p>
29
+ <p>
30
+ <b>User Groups</b><br />
31
+ <ul style="list-style: none;">
32
+ <%%
33
+ @user_groups_for_user.each_with_index do |ug,i|
34
+ input_id = "ug_#{ug.id}"
35
+ checked = (@user.user_group_ids.include?(ug.id) ? "checked" : "")
36
+ %>
37
+ <li id="li_<%%= input_id %>">
38
+ <label for="<%%= input_id %>">
39
+ <input id="<%%= input_id %>" name="<%%= input_id %>" type="checkbox" <%%= checked %>/>&nbsp;&nbsp;<%%= ug.name %>
40
+ </label>
41
+ </li>
42
+ <%%
43
+ end
44
+ %>
45
+ </ul>
46
+ </p>
47
+ <p> <%%= f.submit "Create" %> </p>
48
+ <%% end %>
49
+
50
+ <%%= link_to 'Back', <%= namespace.blank? ? "users_path" : "#{namespace}_users_path" %> %>
@@ -0,0 +1,33 @@
1
+ <h1>Showing User</h1>
2
+
3
+ <p>
4
+ <b>First name</b><br />
5
+ <%%= h @user.first_name %>
6
+ </p>
7
+ <p>
8
+ <b>Last name</b><br />
9
+ <%%= h @user.last_name %>
10
+ </p>
11
+ <p>
12
+ <b>Email</b><br />
13
+ <%%= h @user.email %>
14
+ </p>
15
+ <p>
16
+ <b><span>L</span>ogin</b><br />
17
+ <%%= h @user.login %>
18
+ </p>
19
+ <p>
20
+ <b>User Groups</b><br />
21
+ <ul style="list-style: none;">
22
+ <%%
23
+ @user.user_groups.each do |ug|
24
+ %>
25
+ <%%= h ug.name %> <br/>
26
+ <%%
27
+ end
28
+ %>
29
+ </ul>
30
+ </p>
31
+
32
+ <%%= link_to 'Edit', <%= namespace.blank? ? "edit_user_path(@user)" : "edit_#{namespace}_user_path(@user)" %> %> |
33
+ <%%= link_to 'Back', <%= namespace.blank? ? "users_path" : "#{namespace}_users_path" %> %>
@@ -0,0 +1,17 @@
1
+ class CreateAdminUser < ActiveRecord::Migration
2
+ def self.up
3
+ # TODO: Change the password
4
+ u = User.create(:password => "password",
5
+ :password_confirmation => "password",
6
+ :first_name => "Administrator",
7
+ :last_name => "User",
8
+ :email => "administrator@a.com",
9
+ :login => "admin")
10
+
11
+ Lockdown::System.make_user_administrator(u)
12
+ end
13
+
14
+ def self.down
15
+ #Nothing to see here...
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ class CreatePermissions < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :permissions do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+
9
+ create_table :permissions_user_groups, :id => false do |t|
10
+ t.integer :permission_id
11
+ t.integer :user_group_id
12
+ end
13
+ end
14
+
15
+ def self.down
16
+ drop_table :permissions_user_groups
17
+ drop_table :permissions
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ class CreateProfiles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :profiles do |t|
4
+ t.string :first_name
5
+ t.string :last_name
6
+ t.string :email
7
+ t.integer :updated_by
8
+ t.boolean :is_disabled
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ # The System profile is used as the updated_by reference when records
14
+ # are created programatically and the responsible user cannot be determined
15
+ # or is simply not available.
16
+ # TODO: Change email address
17
+ Profile.create(:first_name => "System",
18
+ :last_name => "User",
19
+ :email => "system@a.com")
20
+
21
+ end
22
+
23
+ def self.down
24
+ drop_table :profiles
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ class CreateUserGroups < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :user_groups do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+
9
+ create_table :user_groups_users, :id => false do |t|
10
+ t.integer :user_group_id
11
+ t.integer :user_id
12
+ end
13
+ end
14
+
15
+ def self.down
16
+ drop_table :user_groups_users
17
+ drop_table :user_groups
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :login
5
+ t.string :crypted_password
6
+ t.string :salt
7
+ t.integer :profile_id
8
+ t.integer :updated_by
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ drop_table :users
16
+ end
17
+ end
@@ -0,0 +1,42 @@
1
+ #
2
+ # !!!!IMPORTANT!!!!
3
+ #
4
+ #*** MUST define a current_user method that will return the current user object
5
+ #
6
+ #*** MUST add call to add_lockdown_session_values to your login method
7
+ #
8
+ #*** MAY NEED to add call to reset_lockdown_session to your logout method.
9
+ # ** Not needed if your authentication system resets the session
10
+ #
11
+ # Definitely need to use the user_group and permission models. The lockdown
12
+ # generator will provide those for you. Just add the following to your user
13
+ # model:
14
+ # has_and_belongs_to_many :user_groups
15
+ #
16
+ # That's it!
17
+ #
18
+ #
19
+ # ~~~~Method Descriptions~~~~
20
+
21
+ # The Lockdown gem defines these session methods:
22
+ #
23
+ # current_user_id: returns the id of the current_user
24
+ #
25
+ # logged_in? : returns true if current_user_id > 0
26
+ #
27
+ # current_user_is_admin?: returns true if user is assigned
28
+ # administrator rights.
29
+ #
30
+ # reset_lockdown_session: This will nil the following session values:
31
+ # current_user_id
32
+ # access_rights
33
+ # expiry_time
34
+ #
35
+ # current_user_access_in_group?(grp): grp is a symbol referencing a
36
+ # Lockdown::UserGroups method such as :registered_users
37
+ # Will return true if the session[:access_rights] contain at
38
+ # least one match to the access_right list associated to the group
39
+ #
40
+ # If you want access to any of these methods in your view, just add them
41
+ # as helpers in your controller (application controller for global use).
42
+ #
@@ -0,0 +1,122 @@
1
+ Lockdown::System.configure do
2
+
3
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ # Configuration Options
5
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
+ # Options with defaults:
7
+ #
8
+ # Set who_did_it method
9
+ # This method is used in setting the created_by/updated_by fields and
10
+ # should be accessible to the controller
11
+ # options[:who_did_it] = :current_user_id
12
+ #
13
+ # Set default_who_did_it
14
+ # When current_user_id returns nil, this is the value to use
15
+ # options[:default_who_did_it] = 1
16
+ #
17
+ # Lockdown version < 0.9.0 set this to:
18
+ # options[:default_who_did_it] = Profile::System
19
+ #
20
+ # Should probably be something like:
21
+ # options[:default_who_did_it] = User::SystemId
22
+ #
23
+ # Set timeout to 1 hour:
24
+ # options[:session_timeout] = (60 * 60)
25
+ #
26
+ # Call method when timeout occurs (method must be callable by controller):
27
+ # options[:session_timeout_method] = :clear_session_values
28
+ #
29
+ # Set system to logout if unauthorized access is attempted:
30
+ # options[:logout_on_access_violation] = false
31
+ #
32
+ # Set redirect to path on unauthorized access attempt:
33
+ # options[:access_denied_path] = "/"
34
+ #
35
+ # Set redirect to path on successful login:
36
+ # options[:successful_login_path] = "/"
37
+ #
38
+ # Set separator on links call
39
+ # options[:links_separator] = "|"
40
+ #
41
+ # If deploying to a subdirectory, set that here. Defaults to nil
42
+ # options[:subdirectory] = "blog"
43
+ # *Notice: Do not add leading or trailing slashes,
44
+ # Lockdown will handle this
45
+ #
46
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47
+ # Define permissions
48
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49
+ #
50
+ # set_permission(:product_management).
51
+ # with_controller(:products)
52
+ #
53
+ # :product_management is the name of the permission which is later
54
+ # referenced by the set_user_group method
55
+ #
56
+ # .with_controller(:products) defaults to all action_methods available on that
57
+ # controller. You can change this behaviour by chaining on except_methods or
58
+ # only_methods. (see examples below)
59
+ #
60
+ # ** To define a namespaced controller use two underscores:
61
+ # :admin__products
62
+ #
63
+ # if products is your standard RESTful resource you'll get:
64
+ # ["products/index , "products/show",
65
+ # "products/new", "products/edit",
66
+ # "products/create", "products/update",
67
+ # "products/destroy"]
68
+ #
69
+ # You can chain method calls to restrict the methods for one controller
70
+ # or you can add multiple controllers to one permission.
71
+ #
72
+ # set_permission(:security_management).
73
+ # with_controller(:users).
74
+ # and_controller(:user_groups).
75
+ # and_controller(:permissions)
76
+ #
77
+ # In addition to with_controller(:controller) there are:
78
+ #
79
+ # set_permission(:some_nice_permission_name).
80
+ # with_controller(:some_controller_name).
81
+ # only_methods(:only_method_1, :only_method_2)
82
+ #
83
+ # set_permission(:some_nice_permission_name).
84
+ # with_controller(:some_controller_name).
85
+ # except_methods(:except_method_1, :except_method_2)
86
+ #
87
+ # set_permission(:some_nice_permission_name).
88
+ # with_controller(:some_controller_name).
89
+ # except_methods(:except_method_1, :except_method_2).
90
+ # and_controller(:another_controller_name).
91
+ # and_controller(:yet_another_controller_name)
92
+ #
93
+ # Define your permissions here:
94
+
95
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96
+ # Built-in user groups
97
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98
+ # You can assign the above permission to one of the built-in user groups
99
+ # by using the following:
100
+ #
101
+ # To allow public access on the permissions :sessions and :home:
102
+ # set_public_access :sessions, :home
103
+ #
104
+ # Restrict :my_account access to only authenticated users:
105
+ # set_protected_access :my_account
106
+ #
107
+ # Define the built-in user groups here:
108
+
109
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110
+ # Define user groups
111
+ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
+ #
113
+ # set_user_group(:catalog_management, :category_management,
114
+ # :product_management)
115
+ #
116
+ # :catalog_management is the name of the user group
117
+ # :category_management and :product_management refer to permission names
118
+ #
119
+ #
120
+ # Define your user groups here:
121
+
122
+ end