]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/ACL.mdwn
(no commit message)
[ikiwiki.git] / doc / todo / ACL.mdwn
index 6b23acfaec11868ad3f2fdb1871fe6eb8c029a7b..57979385d4cc573718eda74088fd6106c15d5659 100644 (file)
@@ -23,6 +23,30 @@ something, that I think is very valuable.
 
 Also see [[!debbug 443346]].
 
+> Just a few quick thoughts about this:
+>
+>* I'm only thinking about write ACLs.  As Joey noted, read ACLs need to be done in the web server.
+>* ACLs are going to be really hard for people with direct access to the revision control system.
+>  Which means that we really only need to define ACLs for web access.
+>* ACLs for web access can then be defined by the web master.  These might not need to be
+>  defined in the wiki pages (although they could be).
+>* Given the previous two points, can't this be done with the `match_user()`
+> function defined by the [[plugins/attachment]] plugin (see the [[ikiwiki/pagespec/attachment]] pagespec info)
+> and the [[plugins/lockedit]] plugin?
+>
+> For example, add the following to your config file:
+>
+> locked_pages => '!(user(john) and */Discussion) and *',
+>
+> would lock all pages unless you're john and editing a Discussion page.
+> It's a thought anyway :-).  -- [[Will]]
+
+>> Yes, writing per-user commit ACLs has become somewhat easier with recent
+>> features. Breaking `match_user` out of attachment, and making the
+>> lockedit plugin pass`user` and `ip` params when it calls `pagespec_match`
+>> would be sufficient. And [[done]], configurable via
+>> [[plugin/lockedit]]'s `locked_pages`. --[[Joey]]
+
 I am considering giving this a try, implementing it as a module.
 Here is how I see it:
 
@@ -45,3 +69,19 @@ Here is how I see it:
     <pre>
     \[[!acl user=* page=/subsite/* acl=/subsite/acl.mdwn]]
     </pre>
+
+Any idea when this is going to be finished?  If you want, I am happy to beta test.
+
+> It's already done, though that is sorta hidden in the above. :-)
+> Example of use to only allow two users to edit the tipjar page:
+>      locked_pages => 'tipjar and !(user(joey) or user(bob))',
+> --[[Joey]] 
+
+> > Thank you for the hint but I am being still confused (read: dense)...  What I am trying to do is this:
+
+> >  * No anonymous access.
+> >  * Logged in users can edit and create pages.
+> >  * Users can set who can edit their pages. 
+> >  * Some pages are only viewable by admins. 
+
+> > Is it possible?  If so how?...