tips:user_pages
User Pages
This is to have a namespace that is for user pages, where each user has AUTH_EDIT on their own page, without the need to add an entry for every user to the ACL.
This patch has been applied after the Separate Admin Login patch:
--- auth.php.bak 2009-02-24 15:29:16.000000000 +0000 +++ auth.php 2009-02-24 15:42:49.000000000 +0000 @@ -430,6 +430,13 @@ $max = AUTH_ADMIN; if($_SESSION[DOKU_COOKIE]['auth']['admin'] == true) { $max = AUTH_READ; } + //if users home page, minimum is AUTH_EDIT (but max above beats min here) + $min = AUTH_NONE; + $fullname = $_SESSION[DOKU_COOKIE]['auth']['info']['name']; + $fullname = str_replace(' ', '_', $fullname); + $fullname = strtolower($fullname); + if($id == 'users:'.$fullname) { $min = AUTH_EDIT; } + //make sure groups is an array if(!is_array($groups)) $groups = array(); @@ -471,7 +478,7 @@ } if($perm > -1){ //we had a match - return it - return min($perm,$max); + return min(max($perm,$min),$max); } } @@ -494,7 +501,7 @@ } } //we had a match - return it - return min($perm,$max); + return min(max($perm,$min),$max); } //get next higher namespace
This is a hand-hacked version that doesn't require the other tip to be applied (you may have to fix it up):
--- auth.php.bak 2009-02-24 15:29:16.000000000 +0000 +++ auth.php 2009-02-24 15:42:49.000000000 +0000 @@ -430,6 +430,13 @@ // if no ACL is used always return upload rights if(!$conf['useacl']) return AUTH_UPLOAD; + //if users home page, minimum is AUTH_EDIT (but max above beats min here) + $min = AUTH_NONE; + $fullname = $_SESSION[DOKU_COOKIE]['auth']['info']['name']; + $fullname = str_replace(' ', '_', $fullname); + $fullname = strtolower($fullname); + if($id == 'users:'.$fullname) { $min = AUTH_EDIT; } + //make sure groups is an array if(!is_array($groups)) $groups = array(); @@ -471,7 +478,7 @@ } if($perm > -1){ //we had a match - return it - return $perm; + return max($perm,$min); } } @@ -494,7 +501,7 @@ } } //we had a match - return it - return $perm; + return max($perm,$min); } //get next higher namespace
If you want the users to create their own user page you must change the AUTH_EDIT on the line
if($id == 'users:'.$fullname) { $min = AUTH_EDIT; }
to AUTH_CREATE, like:
if($id == 'users:'.$fullname) { $min = AUTH_CREATE; }
This other version use the user login name instead the user name, and also grants create permission for the owner user.
--- auth.php.orig 2009-02-14 04:13:25.000000000 -0800 +++ auth.php 2009-11-13 09:42:21.000000000 -0800 @@ -415,6 +415,13 @@ // if no ACL is used always return upload rights if(!$conf['useacl']) return AUTH_UPLOAD; + //if users home page, minimum is AUTH_CREATE (but max above beats min here) + if($id == 'users:'.$user) { + $min = AUTH_CREATE; + } else { + $min = AUTH_NONE; + } + //make sure groups is an array if(!is_array($groups)) $groups = array(); @@ -456,7 +463,7 @@ } if($perm > -1){ //we had a match - return it - return $perm; + return max($perm,$min); } } @@ -479,7 +486,7 @@ } } //we had a match - return it - return $perm; + return max($perm,$min); } //get next higher namespace
tips/user_pages.txt · Last modified: 2009-11-13 18:53 by 200.40.213.222