diff options
author | Adrian Lang <mail@adrianlang.de> | 2010-10-07 09:44:02 +0200 |
---|---|---|
committer | Adrian Lang <mail@adrianlang.de> | 2010-10-07 09:44:02 +0200 |
commit | d9c8ae6b7379d7b64d4817dbd5cca276b45a9dd5 (patch) | |
tree | 39c26d5412170ca4fa176962e60e9962dc643667 /inc/auth.php | |
parent | 2c053ed58376c6709596ab48fc40dceb90d4e89d (diff) | |
parent | 85dd53ceb1c2d9a7abe01b5ec50d155dcb142c59 (diff) | |
download | rpg-d9c8ae6b7379d7b64d4817dbd5cca276b45a9dd5.tar.gz rpg-d9c8ae6b7379d7b64d4817dbd5cca276b45a9dd5.tar.bz2 |
Merge branch 'master' into stable
Diffstat (limited to 'inc/auth.php')
-rw-r--r-- | inc/auth.php | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/inc/auth.php b/inc/auth.php index e1f689f96..a2844a732 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -103,13 +103,34 @@ function auth_setup(){ } //load ACL into a global array XXX - if(is_readable($config_cascade['acl']['default'])){ - $AUTH_ACL = file($config_cascade['acl']['default']); - //support user wildcard - if(isset($_SERVER['REMOTE_USER'])){ - $AUTH_ACL = str_replace('%USER%',$_SERVER['REMOTE_USER'],$AUTH_ACL); + $AUTH_ACL = auth_loadACL(); +} + +/** + * Loads the ACL setup and handle user wildcards + * + * @author Andreas Gohr <andi@splitbrain.org> + * @returns array + */ +function auth_loadACL(){ + global $config_cascade; + + if(!is_readable($config_cascade['acl']['default'])) return array(); + + $acl = file($config_cascade['acl']['default']); + + //support user wildcard + if(isset($_SERVER['REMOTE_USER'])){ + $len = count($acl); + for($i=0; $i<$len; $i++){ + if($acl[$i]{0} == '#') continue; + list($id,$rest) = preg_split('/\s+/',$acl[$i],2); + $id = str_replace('%USER%',cleanID($_SERVER['REMOTE_USER']),$id); + $rest = str_replace('%USER%',auth_nameencode($_SERVER['REMOTE_USER']),$rest); + $acl[$i] = "$id\t$rest"; } } + return $acl; } function auth_login_wrapper($evdata) { |