diff options
author | Andreas Gohr <andi@splitbrain.org> | 2009-11-15 15:17:25 +0100 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2009-11-15 15:17:25 +0100 |
commit | e259aa7939e5d3cd704351d4d53d1d1497217a11 (patch) | |
tree | 7ea32b1ec14a252f21c4980fd263e0ed67726f1f /inc/auth.php | |
parent | 7917b6f2f2768c559c2b891f5c0077afe3eeef69 (diff) | |
download | rpg-e259aa7939e5d3cd704351d4d53d1d1497217a11.tar.gz rpg-e259aa7939e5d3cd704351d4d53d1d1497217a11.tar.bz2 |
Added isCaseSensitive() to auth backends FS#1657
Ignore-this: 3591e5a36126c72bd9b931e4aa832da8
darcs-hash:20091115141725-7ad00-7c2fc662d1999731660673d05299c4f357b797b3.gz
Diffstat (limited to 'inc/auth.php')
-rw-r--r-- | inc/auth.php | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/inc/auth.php b/inc/auth.php index 5995459fe..6483caff4 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -357,8 +357,17 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ // prepare an array containing only true values for array_map call $alltrue = array_fill(0, count($superusers), true); $superusers = array_map('auth_nameencode', $superusers, $alltrue); + + // case insensitive? + if(!$auth->isCaseSensitive()){ + $superusers = array_map('utf8_strtolower',$superusers); + $user = utf8_strtolower($user); + } + + // check user match if(in_array($user, $superusers)) return true; + // check managers if(!$adminonly){ $managers = explode(',', $conf['manager']); $managers = array_unique($managers); @@ -366,6 +375,7 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ // prepare an array containing only true values for array_map call $alltrue = array_fill(0, count($managers), true); $managers = array_map('auth_nameencode', $managers, $alltrue); + if(!$auth->isCaseSensitive()) $managers = array_map('utf8_strtolower',$managers); if(in_array($user, $managers)) return true; } @@ -376,6 +386,9 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ $cnt = count($groups); for($i=0; $i<$cnt; $i++){ $groups[$i] = '@'.auth_nameencode($groups[$i]); + if(!$auth->isCaseSensitive()){ + $groups[$i] = utf8_strtolower($groups[$i]); + } } // check groups against superuser and manager @@ -447,6 +460,8 @@ function auth_aclcheck($id,$user,$groups){ //if user is superuser or in superusergroup return 255 (acl_admin) if(auth_isadmin($user,$groups)) { return AUTH_ADMIN; } + $ci = ''; + if(!$auth->isCaseSensitive()) $ci = 'ui'; $user = $auth->cleanUser($user); $groups = array_map(array($auth,'cleanGroup'),(array)$groups); @@ -473,7 +488,7 @@ function auth_aclcheck($id,$user,$groups){ } //check exact match first - $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/',$AUTH_ACL); + $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL); if(count($matches)){ foreach($matches as $match){ $match = preg_replace('/#.*$/','',$match); //ignore comments @@ -497,7 +512,7 @@ function auth_aclcheck($id,$user,$groups){ } do{ - $matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/',$AUTH_ACL); + $matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL); if(count($matches)){ foreach($matches as $match){ $match = preg_replace('/#.*$/','',$match); //ignore comments |