summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
Diffstat (limited to 'inc')
-rw-r--r--inc/auth.php15
-rw-r--r--inc/auth/ad.class.php14
-rw-r--r--inc/auth/plain.class.php10
3 files changed, 20 insertions, 19 deletions
diff --git a/inc/auth.php b/inc/auth.php
index 6157ac892..5995459fe 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -335,6 +335,7 @@ function auth_logoff($keepbc=false){
function auth_ismanager($user=null,$groups=null,$adminonly=false){
global $conf;
global $USERINFO;
+ global $auth;
if(!$conf['useacl']) return false;
if(is_null($user)) {
@@ -344,7 +345,9 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){
$user = $_SERVER['REMOTE_USER'];
}
}
+ $user = $auth->cleanUser($user);
if(is_null($groups)) $groups = (array) $USERINFO['grps'];
+ $groups = array_map(array($auth,'cleanGroup'),$groups);
$user = auth_nameencode($user);
// check username against superuser and manager
@@ -433,6 +436,7 @@ function auth_quickaclcheck($id){
function auth_aclcheck($id,$user,$groups){
global $conf;
global $AUTH_ACL;
+ global $auth;
// if no ACL is used always return upload rights
if(!$conf['useacl']) return AUTH_UPLOAD;
@@ -443,6 +447,9 @@ 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; }
+
+ $user = $auth->cleanUser($user);
+ $groups = array_map(array($auth,'cleanGroup'),(array)$groups);
$user = auth_nameencode($user);
//prepend groups with @ and nameencode
@@ -593,6 +600,7 @@ function auth_sendPassword($user,$password){
global $auth;
$hdrs = '';
+ $user = $auth->cleanUser($user);
$userinfo = $auth->getUserData($user);
if(!$userinfo['mail']) return false;
@@ -628,8 +636,8 @@ function register(){
if(!$auth->canDo('addUser')) return false;
//clean username
- $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
- $_POST['login'] = cleanID($_POST['login']);
+ $_POST['login'] = trim($auth->cleanUser($_POST['login']));
+
//clean fullname and email
$_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
$_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));
@@ -823,8 +831,7 @@ function act_resendpwd(){
msg($lang['resendpwdmissing'], -1);
return false;
} else {
- $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
- $user = cleanID($_POST['login']);
+ $user = trim($auth->cleanUser($_POST['login']));
}
$userinfo = $auth->getUserData($user);
diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php
index 4365e75dc..8eb8b06d8 100644
--- a/inc/auth/ad.class.php
+++ b/inc/auth/ad.class.php
@@ -138,15 +138,13 @@ class auth_ad extends auth_basic {
$info['mail'] = $result[0]['mail'][0];
$info['uid'] = $result[0]['samaccountname'][0];
$info['dn'] = $result[0]['dn'];
- if(!$info['mail']) $info['mail'] = cleanID($user).'@projektron.de';
-
// handle ActiveDirectory memberOf
$info['grps'] = $this->adldap->user_groups($user);
if (is_array($info['grps'])) {
foreach ($info['grps'] as $ndx => $group) {
- $info['grps'][$ndx] = $this->_sanitizeGroupName($group);
+ $info['grps'][$ndx] = $this->cleanGroup($group);
}
}
@@ -163,15 +161,21 @@ class auth_ad extends auth_basic {
*
* Removes backslashes ('\'), pound signs ('#'), and converts spaces to underscores.
*
- * @author James Van Lommel (jamesvl@gmail.com)
+ * @author James Van Lommel (jamesvl@gmail.com)
*/
- function _sanitizeGroupName($name) {
+ function cleanGroup($name) {
$sName = str_replace('\\', '', $name);
$sName = str_replace('#', '', $sName);
$sName = preg_replace('[\s]', '_', $sName);
return $sName;
}
+ /**
+ * Sanitize user names
+ */
+ function cleanUser($name) {
+ return $this->cleanGroup($name);
+ }
/**
* Initialize the AdLDAP library and connect to the server
diff --git a/inc/auth/plain.class.php b/inc/auth/plain.class.php
index 0ff18d58a..3983a7d44 100644
--- a/inc/auth/plain.class.php
+++ b/inc/auth/plain.class.php
@@ -12,16 +12,6 @@ require_once(DOKU_AUTH.'/basic.class.php');
define('AUTH_USERFILE',DOKU_CONF.'users.auth.php');
-// we only accept page ids for auth_plain
-if(isset($_REQUEST['u']))
- $_REQUEST['u'] = cleanID($_REQUEST['u']);
-if(isset($_REQUEST['acl_user']))
- $_REQUEST['acl_user'] = cleanID($_REQUEST['acl_user']);
-// the same goes for password reset requests
-if(isset($_POST['login'])){
- $_POST['login'] = cleanID($_POST['login']);
-}
-
class auth_plain extends auth_basic {
var $users = null;