Initially it looks good, though it doesn't handle the issue of permissions per form yet. If I try a workaround of changing the permissions on a web form to restrict access, then it throws an exception when a user tries to list the forms for the site. I would assume that it would be relatively easy fix to check permissions when listing forms and not list them (rather than throwing an exception), which would be a good workaround for this. It's not ideal since you'd really want it on a per web project basis, but it would be a good start.
On testing the per-folder permissioning however, it doesn't quite seem to work. Firstly, if I create a folder as admin, then when I view it in the admin's sandbox, it appears as being created by admin and modified by admin. When I view it in the sandbox for Alice, I see it as being created/modified by Alice. This seems wrong (I only noticed this after the steps below, so it may be correct initially).
But that's not all…
I created the 'adminonly' folder as admin, and gave only admin read/write permission, unticking 'inherit permissions'. I also create a 'test' folder and left the permissions alone. Publishing the changes, Alice could then see only the 'test' folder in her sandbox. So far, so good.
I then changed the 'adminonly' folder to have read permissions for everyone, published the changes and Alice could now see it. The Delete/Manage Permissions icons were not available on this folder for her however - much as expected. Going into the folder as Alice, I created some content, which it allowed me to do. Surely Alice shouldn't be able to do this, since she has only read access to the folder?
Next, I notice that Alice can now see the Delete/Manage icons on the 'adminonly' folder, and was able to remove the Administrators permissions to write to the folder. The folder in both sandboxes is now in a state where Everyone has write access to the folder, which can't be removed (there're no icons to allow this in the permissions list), though 'inherit permissions' is unticked.
I'm going to see if I can replicate exactly what is going on, but something seems to be not quite right.
Sam.