<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tony Thomas &#187; access control lists</title>
	<atom:link href="http://anthonygthomas.com/tag/access-control-lists/feed/" rel="self" type="application/rss+xml" />
	<link>http://anthonygthomas.com</link>
	<description>Father to two, husband to one, web developer and musician.</description>
	<lastBuildDate>Mon, 24 May 2010 21:31:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Wow. ACL is Hard</title>
		<link>http://anthonygthomas.com/2008/06/20/wow-acl-is-hard/</link>
		<comments>http://anthonygthomas.com/2008/06/20/wow-acl-is-hard/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 18:55:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ACL]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[access control lists]]></category>
		<category><![CDATA[modified preorder tree traversal algorithm]]></category>

		<guid isPermaLink="false">http://anthonygthomas.com/?p=34</guid>
		<description><![CDATA[That is Access Control Lists. I&#8217;ve been developing with CakePHP this spring and summer and it was all going very well until I actually needed to control access to the application. It&#8217;s not even that CakePHP falls short here. There are apparently tons of built-in tools for managing access. They&#8217;re just poorly documented and the [...]]]></description>
			<content:encoded><![CDATA[<p>That is Access Control Lists. I&#8217;ve been developing with <a href="http://cakephp.org" onclick="pageTracker._trackPageview('/outgoing/cakephp.org?referer=');">CakePHP</a> this spring and summer and it was all going very well until I actually needed to control access to the application. It&#8217;s not even that CakePHP falls short here. There are apparently tons of built-in tools for managing access. They&#8217;re just poorly documented and the community is relatively new so no one has built a complete plug in. If you&#8217;re looking for a solution like I was, I&#8217;m afraid I&#8217;m not going to give you the best answer here. I did find something that works, so read on. Especially if you&#8217;re learning ACL or Modified Preorder Tree Traversal Algorithm (MPTTA) for the first time.</p>
<p>Disclosure: I&#8217;m not formally trained as a programmer/developer. Everything I&#8217;ve learned, I&#8217;ve taught myself. So there are definitely some silos in my knowledge as I&#8217;ve learned things on the basis of necessity. I have, however, been developing in PHP for over six years. So it&#8217;s not all that bad.</p>
<p>So the learning curve for implementing ACL has been relatively steep for me. First, I had to get my head around the concept. The big picture is easy. <a title="ACL in the CakePHP Manual" href="http://book.cakephp.org/view/171/access-control-lists" onclick="pageTracker._trackPageview('/outgoing/book.cakephp.org/view/171/access-control-lists?referer=');">What we&#8217;re after is a tree of access with &#8216;admin&#8217; at the root and everything else branching off from that with diminishing access</a>. That&#8217;s not hard to conceptualize. What is hard is putting that into practice.</p>
<p>I messed around with this for a long time before stumbling upon <a href="http://www.sitepoint.com/article/hierarchical-data-database/2" onclick="pageTracker._trackPageview('/outgoing/www.sitepoint.com/article/hierarchical-data-database/2?referer=');">this tutorial about the Modified Preorder Tree Traversal Algorithm</a>. Stop now. Read it. Come back.</p>
<p>Now you should understand the concepts that drive CakePHP&#8217;s ACL. Unfortunately here is also where we depart from using CakePHP&#8217;s tools. At least until a decent plug-in comes along that allows you to manage Access Request Objects (ARO) and Access Control Objects (ACO) via a good, web-based interface.</p>
<p>After many attempts with <a href="http://bakery.cakephp.org/tags/view/acl" onclick="pageTracker._trackPageview('/outgoing/bakery.cakephp.org/tags/view/acl?referer=');">various solutions that are currently avaliable</a>, I finally settled on <a href="http://conseil-recherche-innovation.net/authake" onclick="pageTracker._trackPageview('/outgoing/conseil-recherche-innovation.net/authake?referer=');">Authake</a>.</p>
<p>Pros:</p>
<ul>
<li>Works in CakePHP 1.2</li>
<li>User, ARO &amp; ACO adminstration is a snap</li>
<li>Access control works immediately without modifying anything you&#8217;ve built in your app.</li>
</ul>
<p>Cons:</p>
<ul>
<li>Installation requires you replace the entire CakePHP engine with Authake&#8217;s modified version. This will make upgrading CakePHP a lot harder.</li>
<li>The developer has abandoned it in favor of developing in RoR. No hope for future versions unless the community continues development. Personally, I&#8217;d prefer a plug-in like<a href="http://bakery.cakephp.org/articles/view/acl-management-plugin" onclick="pageTracker._trackPageview('/outgoing/bakery.cakephp.org/articles/view/acl-management-plugin?referer=');"> Jeff <span class="author">Loiselle</span>&#8216;s ACL Management Plugin</a> that I could just drop right into app/plugins without replacing the entire installation. (<a href="http://dev.newnewmedia.com/cakephp/admin/acl" onclick="pageTracker._trackPageview('/outgoing/dev.newnewmedia.com/cakephp/admin/acl?referer=');">The issue I have with Jeff&#8217;s are all listed on his &#8220;Known Bugs&#8221; list</a>. Namely, &#8220;does not show inherited permissions, does not show full path in finder &amp; does not have crud fields&#8221;. Unfortunately, those are three very major elements of managing ACL.)</li>
</ul>
<p>If you are reading this in the not so distant future and someone had developed a plugin that has an admin area like Authake&#8217;s but drops into app/plugins like Jeff&#8217;s plugin, please, <em>please</em> let me know.<strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://anthonygthomas.com/2008/06/20/wow-acl-is-hard/" rel="bookmark" title="June 20, 2008">Wow. ACL is Hard</a></li>
<li><a href="http://anthonygthomas.com/2009/03/22/cakephp-console-acl-help-file/" rel="bookmark" title="March 22, 2009">CakePHP Console ACL Help File</a></li>
<li><a href="http://anthonygthomas.com/2010/02/18/cakephp-containable-behavior-is-your-friend/" rel="bookmark" title="February 18, 2010">CakePHP: Containable Behavior is Your Friend</a></li>
<li><a href="http://anthonygthomas.com/2008/09/22/and-were-back/" rel="bookmark" title="September 22, 2008">And We&#8217;re Back!</a></li>
<li><a href="http://anthonygthomas.com/2008/11/25/wordpress-auto-update-is-ok-but-the-command-line-is-faster/" rel="bookmark" title="November 25, 2008">WordPress&#8217; Auto Update Is OK, But The Command Line Is Faster</a></li>
</ul>
<p><!-- Similar Posts took 6.404 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://anthonygthomas.com/2008/06/20/wow-acl-is-hard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
