<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>.DS_Store</filename>
    </added>
    <added>
      <filename>MIT-LICENSE</filename>
    </added>
    <added>
      <filename>Rakefile</filename>
    </added>
    <added>
      <filename>generators/permissable/USAGE</filename>
    </added>
    <added>
      <filename>generators/permissable/permissable_generator.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/acts_as_permissable.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/acts_as_permissable_spec.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/fixtures.yml</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/initializer.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/migration.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/model.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/model_spec.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_membership_migration.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_membership_model.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_membership_model_spec.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_migration.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_model.rb</filename>
    </added>
    <added>
      <filename>generators/permissable/templates/role_model_spec.rb</filename>
    </added>
    <added>
      <filename>init.rb</filename>
    </added>
    <added>
      <filename>install.rb</filename>
    </added>
    <added>
      <filename>tasks/acts_as_permissable_tasks.rake</filename>
    </added>
    <added>
      <filename>test/.DS_Store</filename>
    </added>
    <added>
      <filename>test/acts_as_permissable_test.rb</filename>
    </added>
    <added>
      <filename>uninstall.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -0,0 +1,79 @@
+ActsAsPermissable
+=================
+
+This plugin enables any activerecord model to have permissions.
+It provides a set of methods for querying the model's permissions.
+In addition, the plugin can generate roles support, which turns in into a full RBAC (Role Based Access Control) solution.
+
+Any model which includes the line &quot;acts_as_permissable&quot; can have permissions, and with roles support it can also have roles which in turn have their own permissions.
+Roles can also belong to roles, which creates a sort of inheritance hierarchy.
+When permissions are calculated, the model's permissions are merged with the model's role permissions (if any), which in turn are merged with the role's roles permissions, until a finite permissions hash is generated.
+In the case of identical keys, a false value overrides a true value. A nil value is false.
+
+Setup
+=====
+script/generate permissable &lt;PermissionModelName&gt; [RoleModelName]
+
+The role model name is optional. If you do not want the roles support generated, use the --skip-roles option.
+
+examples: script/generate permissable Permission Role
+		  script/generate permissable Permission Group
+		  script/generate permissable Allowance --skip-roles
+
+use --skip-migration if you don't want a migration created for the permissions model.
+
+use --rspec to force rspec tests installed (currenty these are the only ones available).
+
+Add any permissions you want to your permissions table.
+Add any roles you want to your roles table.
+Add user-&gt;role relationships in your roles_memberships table.
+Add role-&gt;role relationships in your roles_memberships table.
+
+Important
+=========
+add these lines to any model which acts_as_permissable and has roles:
+
+	has_many :role_memberships, :as =&gt; :roleable
+	has_many :roles, :through =&gt; :role_memberships
+
+if you chose a different roles model name, modify the names as needed, except the :as =&gt; :roleable part.
+For example, if you chose to use the model name Group instead of Role, the lines should look like this:
+
+	has_many :group_memberships, :as =&gt; :roleable
+	has_many :groups, :through =&gt; :group_memberships
+
+Usage
+=====
+
+	class User &lt; Activerecord::Base
+		acts_as_permissable
+	end
+
+Now a user will have the following methods:
+
+	@user.permissions_hash() # =&gt; {:view_something =&gt; true, :delete_something =&gt; false}
+
+	@user.has_permission?(&quot;view_something&quot;) # =&gt; true
+	@user.has_permission?(&quot;view_something&quot;, &quot;delete_something&quot;) # =&gt; false
+	@user.has_permission?(&quot;delete_something&quot;) # =&gt; false
+	@user.has_permission?(&quot;create_something&quot;) # =&gt; false
+
+	@user.permissions_hash() # =&gt; {:view_something =&gt; true, :delete_something =&gt; false}
+	@user.permissions &lt;&lt; Permission.new(:action =&gt; &quot;new_thing&quot;, :granted =&gt; true)
+	@user.permissions_hash() # =&gt; {:view_something =&gt; true, :delete_something =&gt; false}
+	@user.reload_permissions!() # =&gt; {:view_something =&gt; true, :delete_something =&gt; false, :new_thing =&gt; true}
+	@user.permissions_hash() # =&gt; {:view_something =&gt; true, :delete_something =&gt; false, :new_thing =&gt; true}
+	# this is useful for getting the hash again into memory after the permissions table was updated.
+
+And with roles support:
+
+	@user.has_role?(&quot;publisher&quot;) # =&gt; true
+	@user.has_role?(&quot;publisher&quot;,&quot;advertiser&quot;) # =&gt; false
+	@user.full_permissions_hash() # will return a merged hash of user and roles permissions.
+	
+Copyright (c) 2008 Noam Ben-Ari, released under the MIT license
+
+        
+        # TODO:
+        # add recursive permissions loading and clearing methods
+		# acts_as_permissable_system that includes controller stuff like before_filters.</diff>
      <filename>README</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f3b23e0b1b1633f39322d965cae632a854a0f5d8</id>
    </parent>
  </parents>
  <author>
    <name>Noam Ben-Ari</name>
    <email>nbenari@gmail.com</email>
  </author>
  <url>http://github.com/NoamB/acts_as_permissible/commit/03d656ae6fbc172fae3b5784151a3c6fc99e70ca</url>
  <id>03d656ae6fbc172fae3b5784151a3c6fc99e70ca</id>
  <committed-date>2008-05-09T06:38:01-07:00</committed-date>
  <authored-date>2008-05-09T06:38:01-07:00</authored-date>
  <message>added current plugin source files.</message>
  <tree>df79ef6e1d07f898c65a525a794eab8f80434b3b</tree>
  <committer>
    <name>Noam Ben-Ari</name>
    <email>nbenari@gmail.com</email>
  </committer>
</commit>
