hone-lockdown 1.2.1
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/.gitignore +6 -0
 - data/History.txt +195 -0
 - data/README.txt +36 -0
 - data/Rakefile +14 -0
 - data/VERSION +1 -0
 - data/lib/lockdown.rb +73 -0
 - data/lib/lockdown/context.rb +48 -0
 - data/lib/lockdown/database.rb +117 -0
 - data/lib/lockdown/frameworks/rails.rb +105 -0
 - data/lib/lockdown/frameworks/rails/controller.rb +163 -0
 - data/lib/lockdown/frameworks/rails/view.rb +50 -0
 - data/lib/lockdown/helper.rb +101 -0
 - data/lib/lockdown/orms/active_record.rb +68 -0
 - data/lib/lockdown/permission.rb +240 -0
 - data/lib/lockdown/rules.rb +378 -0
 - data/lib/lockdown/session.rb +57 -0
 - data/lib/lockdown/system.rb +52 -0
 - data/rails_generators/lockdown/lockdown_generator.rb +273 -0
 - data/rails_generators/lockdown/templates/app/controllers/permissions_controller.rb +22 -0
 - data/rails_generators/lockdown/templates/app/controllers/sessions_controller.rb +39 -0
 - data/rails_generators/lockdown/templates/app/controllers/user_groups_controller.rb +122 -0
 - data/rails_generators/lockdown/templates/app/controllers/users_controller.rb +117 -0
 - data/rails_generators/lockdown/templates/app/helpers/permissions_helper.rb +2 -0
 - data/rails_generators/lockdown/templates/app/helpers/user_groups_helper.rb +2 -0
 - data/rails_generators/lockdown/templates/app/helpers/users_helper.rb +2 -0
 - data/rails_generators/lockdown/templates/app/models/permission.rb +13 -0
 - data/rails_generators/lockdown/templates/app/models/profile.rb +10 -0
 - data/rails_generators/lockdown/templates/app/models/user.rb +95 -0
 - data/rails_generators/lockdown/templates/app/models/user_group.rb +15 -0
 - data/rails_generators/lockdown/templates/app/views/permissions/index.html.erb +16 -0
 - data/rails_generators/lockdown/templates/app/views/permissions/show.html.erb +26 -0
 - data/rails_generators/lockdown/templates/app/views/sessions/new.html.erb +12 -0
 - data/rails_generators/lockdown/templates/app/views/user_groups/edit.html.erb +33 -0
 - data/rails_generators/lockdown/templates/app/views/user_groups/index.html.erb +20 -0
 - data/rails_generators/lockdown/templates/app/views/user_groups/new.html.erb +31 -0
 - data/rails_generators/lockdown/templates/app/views/user_groups/show.html.erb +29 -0
 - data/rails_generators/lockdown/templates/app/views/users/edit.html.erb +51 -0
 - data/rails_generators/lockdown/templates/app/views/users/index.html.erb +22 -0
 - data/rails_generators/lockdown/templates/app/views/users/new.html.erb +50 -0
 - data/rails_generators/lockdown/templates/app/views/users/show.html.erb +33 -0
 - data/rails_generators/lockdown/templates/config/initializers/lockit.rb +1 -0
 - data/rails_generators/lockdown/templates/db/migrate/create_admin_user.rb +17 -0
 - data/rails_generators/lockdown/templates/db/migrate/create_permissions.rb +19 -0
 - data/rails_generators/lockdown/templates/db/migrate/create_profiles.rb +26 -0
 - data/rails_generators/lockdown/templates/db/migrate/create_user_groups.rb +19 -0
 - data/rails_generators/lockdown/templates/db/migrate/create_users.rb +17 -0
 - data/rails_generators/lockdown/templates/lib/lockdown/README +42 -0
 - data/rails_generators/lockdown/templates/lib/lockdown/init.rb +131 -0
 - data/spec/lockdown/database_spec.rb +158 -0
 - data/spec/lockdown/frameworks/rails/controller_spec.rb +224 -0
 - data/spec/lockdown/frameworks/rails/view_spec.rb +87 -0
 - data/spec/lockdown/frameworks/rails_spec.rb +175 -0
 - data/spec/lockdown/permission_spec.rb +166 -0
 - data/spec/lockdown/rules_spec.rb +109 -0
 - data/spec/lockdown/session_spec.rb +89 -0
 - data/spec/lockdown/system_spec.rb +59 -0
 - data/spec/lockdown_spec.rb +19 -0
 - data/spec/rcov.opts +5 -0
 - data/spec/spec.opts +3 -0
 - data/spec/spec_helper.rb +1 -0
 - metadata +131 -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 %>/>  <%%= 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 %>/>  <%%= 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 %>/>  <%%= 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 %>/>  <%%= 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 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'lockdown'
         
     | 
| 
         @@ -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,131 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Lockdown::System.configure do
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Configuration Options
         
     | 
| 
      
 5 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 6 
     | 
    
         
            +
              # Options with defaults:
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              #
         
     | 
| 
      
 9 
     | 
    
         
            +
              # Set User model:
         
     | 
| 
      
 10 
     | 
    
         
            +
              #      # make sure you use the string "User", not the constant
         
     | 
| 
      
 11 
     | 
    
         
            +
              #      options[:user_model] = "User"
         
     | 
| 
      
 12 
     | 
    
         
            +
              #
         
     | 
| 
      
 13 
     | 
    
         
            +
              # Set UserGroup model:
         
     | 
| 
      
 14 
     | 
    
         
            +
              #      # make sure you use the string "UserGroup", not the constant
         
     | 
| 
      
 15 
     | 
    
         
            +
              #      options[:user_group_model] = "UserGroup"
         
     | 
| 
      
 16 
     | 
    
         
            +
              #
         
     | 
| 
      
 17 
     | 
    
         
            +
              # Set who_did_it method:
         
     | 
| 
      
 18 
     | 
    
         
            +
              #   This method is used in setting the created_by/updated_by fields and
         
     | 
| 
      
 19 
     | 
    
         
            +
              #   should be accessible to the controller
         
     | 
| 
      
 20 
     | 
    
         
            +
              #      options[:who_did_it] = :current_user_id
         
     | 
| 
      
 21 
     | 
    
         
            +
              #
         
     | 
| 
      
 22 
     | 
    
         
            +
              # Set default_who_did_it:
         
     | 
| 
      
 23 
     | 
    
         
            +
              #   When current_user_id returns nil, this is the value to use
         
     | 
| 
      
 24 
     | 
    
         
            +
              #      options[:default_who_did_it] = 1
         
     | 
| 
      
 25 
     | 
    
         
            +
              #
         
     | 
| 
      
 26 
     | 
    
         
            +
              #   Lockdown version < 0.9.0 set this to:
         
     | 
| 
      
 27 
     | 
    
         
            +
              #       options[:default_who_did_it] = Profile::System
         
     | 
| 
      
 28 
     | 
    
         
            +
              #
         
     | 
| 
      
 29 
     | 
    
         
            +
              #   Should probably be something like:
         
     | 
| 
      
 30 
     | 
    
         
            +
              #      options[:default_who_did_it] = User::SystemId
         
     | 
| 
      
 31 
     | 
    
         
            +
              #
         
     | 
| 
      
 32 
     | 
    
         
            +
              # Set timeout to 1 hour:
         
     | 
| 
      
 33 
     | 
    
         
            +
              #       options[:session_timeout] = (60 * 60)
         
     | 
| 
      
 34 
     | 
    
         
            +
              #
         
     | 
| 
      
 35 
     | 
    
         
            +
              # Call method when timeout occurs (method must be callable by controller):
         
     | 
| 
      
 36 
     | 
    
         
            +
              #       options[:session_timeout_method] = :clear_session_values
         
     | 
| 
      
 37 
     | 
    
         
            +
              #
         
     | 
| 
      
 38 
     | 
    
         
            +
              # Set system to logout if unauthorized access is attempted:
         
     | 
| 
      
 39 
     | 
    
         
            +
              #       options[:logout_on_access_violation] = false
         
     | 
| 
      
 40 
     | 
    
         
            +
              #
         
     | 
| 
      
 41 
     | 
    
         
            +
              # Set redirect to path on unauthorized access attempt:
         
     | 
| 
      
 42 
     | 
    
         
            +
              #       options[:access_denied_path] = "/"
         
     | 
| 
      
 43 
     | 
    
         
            +
              #
         
     | 
| 
      
 44 
     | 
    
         
            +
              # Set redirect to path on successful login:
         
     | 
| 
      
 45 
     | 
    
         
            +
              #       options[:successful_login_path] = "/"
         
     | 
| 
      
 46 
     | 
    
         
            +
              #
         
     | 
| 
      
 47 
     | 
    
         
            +
              # Set separator on links call
         
     | 
| 
      
 48 
     | 
    
         
            +
              #       options[:links_separator] = "|"
         
     | 
| 
      
 49 
     | 
    
         
            +
              #
         
     | 
| 
      
 50 
     | 
    
         
            +
              # If deploying to a subdirectory, set that here. Defaults to nil
         
     | 
| 
      
 51 
     | 
    
         
            +
              #       options[:subdirectory] = "blog"
         
     | 
| 
      
 52 
     | 
    
         
            +
              #       *Notice: Do not add leading or trailing slashes,
         
     | 
| 
      
 53 
     | 
    
         
            +
              #                Lockdown will handle this
         
     | 
| 
      
 54 
     | 
    
         
            +
              #
         
     | 
| 
      
 55 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 56 
     | 
    
         
            +
              # Define permissions
         
     | 
| 
      
 57 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 58 
     | 
    
         
            +
              #
         
     | 
| 
      
 59 
     | 
    
         
            +
              # set_permission(:product_management).
         
     | 
| 
      
 60 
     | 
    
         
            +
              #   with_controller(:products)
         
     | 
| 
      
 61 
     | 
    
         
            +
              #
         
     | 
| 
      
 62 
     | 
    
         
            +
              # :product_management is the name of the permission which is later
         
     | 
| 
      
 63 
     | 
    
         
            +
              # referenced by the set_user_group method
         
     | 
| 
      
 64 
     | 
    
         
            +
              #
         
     | 
| 
      
 65 
     | 
    
         
            +
              # .with_controller(:products) defaults to all action_methods available on that
         
     | 
| 
      
 66 
     | 
    
         
            +
              #  controller.  You can change this behaviour by chaining on except_methods or
         
     | 
| 
      
 67 
     | 
    
         
            +
              #  only_methods.  (see examples below)
         
     | 
| 
      
 68 
     | 
    
         
            +
              #
         
     | 
| 
      
 69 
     | 
    
         
            +
              #  ** To define a namespaced controller use two underscores:
         
     | 
| 
      
 70 
     | 
    
         
            +
              #     :admin__products
         
     | 
| 
      
 71 
     | 
    
         
            +
              #
         
     | 
| 
      
 72 
     | 
    
         
            +
              # if products is your standard RESTful resource you'll get:
         
     | 
| 
      
 73 
     | 
    
         
            +
              #   ["products/index , "products/show",
         
     | 
| 
      
 74 
     | 
    
         
            +
              #    "products/new", "products/edit",
         
     | 
| 
      
 75 
     | 
    
         
            +
              #    "products/create", "products/update",
         
     | 
| 
      
 76 
     | 
    
         
            +
              #    "products/destroy"]
         
     | 
| 
      
 77 
     | 
    
         
            +
              #
         
     | 
| 
      
 78 
     | 
    
         
            +
              # You can chain method calls to restrict the methods for one controller
         
     | 
| 
      
 79 
     | 
    
         
            +
              # or you can add multiple controllers to one permission.
         
     | 
| 
      
 80 
     | 
    
         
            +
              #      
         
     | 
| 
      
 81 
     | 
    
         
            +
              #   set_permission(:security_management).
         
     | 
| 
      
 82 
     | 
    
         
            +
              #     with_controller(:users).
         
     | 
| 
      
 83 
     | 
    
         
            +
              #     and_controller(:user_groups).
         
     | 
| 
      
 84 
     | 
    
         
            +
              #     and_controller(:permissions) 
         
     | 
| 
      
 85 
     | 
    
         
            +
              #
         
     | 
| 
      
 86 
     | 
    
         
            +
              # In addition to with_controller(:controller) there are:
         
     | 
| 
      
 87 
     | 
    
         
            +
              #
         
     | 
| 
      
 88 
     | 
    
         
            +
              #   set_permission(:some_nice_permission_name).
         
     | 
| 
      
 89 
     | 
    
         
            +
              #     with_controller(:some_controller_name).
         
     | 
| 
      
 90 
     | 
    
         
            +
              #       only_methods(:only_method_1, :only_method_2)
         
     | 
| 
      
 91 
     | 
    
         
            +
              #
         
     | 
| 
      
 92 
     | 
    
         
            +
              #   set_permission(:some_nice_permission_name).
         
     | 
| 
      
 93 
     | 
    
         
            +
              #     with_controller(:some_controller_name).
         
     | 
| 
      
 94 
     | 
    
         
            +
              #       except_methods(:except_method_1, :except_method_2)
         
     | 
| 
      
 95 
     | 
    
         
            +
              #
         
     | 
| 
      
 96 
     | 
    
         
            +
              #   set_permission(:some_nice_permission_name).
         
     | 
| 
      
 97 
     | 
    
         
            +
              #     with_controller(:some_controller_name).
         
     | 
| 
      
 98 
     | 
    
         
            +
              #       except_methods(:except_method_1, :except_method_2).
         
     | 
| 
      
 99 
     | 
    
         
            +
              #     and_controller(:another_controller_name).
         
     | 
| 
      
 100 
     | 
    
         
            +
              #     and_controller(:yet_another_controller_name)
         
     | 
| 
      
 101 
     | 
    
         
            +
              #
         
     | 
| 
      
 102 
     | 
    
         
            +
              # Define your permissions here:
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 105 
     | 
    
         
            +
              # Built-in user groups
         
     | 
| 
      
 106 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 107 
     | 
    
         
            +
              #  You can assign the above permission to one of the built-in user groups
         
     | 
| 
      
 108 
     | 
    
         
            +
              #  by using the following:
         
     | 
| 
      
 109 
     | 
    
         
            +
              # 
         
     | 
| 
      
 110 
     | 
    
         
            +
              #  To allow public access on the permissions :sessions and :home:
         
     | 
| 
      
 111 
     | 
    
         
            +
              #    set_public_access :sessions, :home
         
     | 
| 
      
 112 
     | 
    
         
            +
              #     
         
     | 
| 
      
 113 
     | 
    
         
            +
              #  Restrict :my_account access to only authenticated users:
         
     | 
| 
      
 114 
     | 
    
         
            +
              #    set_protected_access :my_account
         
     | 
| 
      
 115 
     | 
    
         
            +
              #
         
     | 
| 
      
 116 
     | 
    
         
            +
              # Define the built-in user groups here:
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 119 
     | 
    
         
            +
              # Define user groups
         
     | 
| 
      
 120 
     | 
    
         
            +
              #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
     | 
| 
      
 121 
     | 
    
         
            +
              #
         
     | 
| 
      
 122 
     | 
    
         
            +
              #  set_user_group(:catalog_management, :category_management, 
         
     | 
| 
      
 123 
     | 
    
         
            +
              #                                      :product_management) 
         
     | 
| 
      
 124 
     | 
    
         
            +
              #
         
     | 
| 
      
 125 
     | 
    
         
            +
              #  :catalog_management is the name of the user group
         
     | 
| 
      
 126 
     | 
    
         
            +
              #  :category_management and :product_management refer to permission names
         
     | 
| 
      
 127 
     | 
    
         
            +
              #
         
     | 
| 
      
 128 
     | 
    
         
            +
              # 
         
     | 
| 
      
 129 
     | 
    
         
            +
              # Define your user groups here:
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            end 
         
     |