Fantasy: Your client has an incredibly simple, intuitive, and cohesive ACL schema in mind. Permission and group names make sense, never change, and current users perpetually encounter properly restricted behavior. While we’re at it, you’re also able to code one-handed while scuba-diving the Caymans.
The Cold Hard Truth: Permission names are inconsistent, Groups are changed and reassigned, and your poor users are left dangling somewhere between “Why can I see the administrator’s Social Security Number?” and “The ‘Donate Large Sums of Money’ page is giving me permission denied!”
I created a simple solution to this problem with a few new symfony tasks now available via csSecurityTaskExtraPlugin. In a nutshell, the plugin allows you to more easily visualize the security coverage of your application. Here are some examples below:
$ ./symfony app:security frontend

The app:route-security task compares your security.ymls to all the routes in your application
$ ./symfony app:route-security frontend

You can also list who has access to which actions specified in security.yml with the group-security task.
$ ./symfony app:group-security frontend

Pass the name of an sfGuardGroup object as the second argument to narrow down your output
$ ./symfony app:group-security frontend author

List users who has access with the user-security task.
$ ./symfony app:user-security frontend

Pass the username or id of an sfGuardUser object as the second argument to narrow down your output
$ ./symfony app:group-security frontend andyadministrator
OR
$ ./symfony app:group-security frontend 3

It’s fairly basic right now. The product of a few hours’ work and a desire to get something new out into the community. What other enhancements would you like to see to give you more/better control of your site’s security coverage?
What a great week! So many things have been going on. If you live in Nashville especially, you have a lot to be excited about. The official releases of symfony 1.3 and 1.4 provide a lot of exciting new functionality in the framework, which you can read about here. But even more exciting is this year’s advent calendar, a large part of with being contributed by Nashville’s own Ryan Weaver! Be sure to check it out, and consider purchasing the book from amazon to support the community.
Also, my personal project Symplist is now launched, and in Alpha. Please check it out and provide feedback. Symplist is a plugin site that exists for the community. Its greatest asset will come with individuals like you rating and commenting on plugins. Another section of the site, which I’ve dubbed “Community Lists”, is something I hope will be a great help to the community. This section will function as a repository for dense information. An example of this is a list I’m putting together of Symfony Best Practices. The highest-rated items in each list sort to the top, as do the lists themselves. Check them out, rate and add items, and leave some feedback!
On a separate note, Jon Wage (Nashville native) has recently been pushing PHP Interoperability Standards with PHP 5.3’s namespacing support. I would recommend checking it out! If you personally have any PHP projects, or are currently developing one, consider incorporating these standards.
If you want to get involved, consider joining the Nashville Symfony User’s Group, which meets at Centre{source} the first Tuesday of every month! Symfony is taking off, and Nashville is right on board!
If you are wondering if I develop anything other than Symfony plugins, in the past week I have worked on projects in Rails, Drupal, Wordpress, and Cocoa/Objective C. I hope to post more on these later, as they become accessible in some form or another.
Your comments and support would be much appreciated, however, on the three plugins I have added/heavily updated in the past two weeks. They are the following:
- csNavigationPlugin – Quite possibly my best plugin yet (and coincidentally that with the least users). I have worked on this for months, and recently re-factored it into a production-ready state.
- csSettingsPlugin – Initially a port of Chris Wage’s sfDoctrineSettingsPlugin, this plugin is now almost entirely refactored. Supports great settings-integration in your project.
- csDoctrineSlideshowPlugin – This plugin has been heavily refactored in order to allow for the use of multiple slideshow libraries. Currently supporting JQuery Cycle and Google Slideshow2, the csDoctrineSlideshowPlugin can easily toggle between any supported library.
In exploring the plugins offered for Rails, Drupal, and Wordpress, I am able to obtain a bearing on how these plugins compare. The plugins offered for Symfony are incredibly far behind the curve, and it would be an honor for me to help change this. I can’t do that without feedback, however. Thanks for your support.