class auth_mongodb extends auth_basic { var $connection = null; function __construct() { global $config_cascade; global $connection; $this->cando['external'] = true; $this->cando['logout'] = true; $connection = new Mongo("server_ip"); } function trustExternal($user, $pass, $sticky = false) { global $USERINFO; global $conf; global $connection; $sticky ? $sticky = true : $sticky = false; //sanity check if (!empty($_SESSION[DOKU_COOKIE]['auth']['info'])) { $USERINFO['name'] = $_SESSION[DOKU_COOKIE]['auth']['info']['name']; $USERINFO['mail'] = $_SESSION[DOKU_COOKIE]['auth']['info']['mail']; $USERINFO['grps'] = $_SESSION[DOKU_COOKIE]['auth']['info']['grps']; $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['auth']['user']; return true; } if (!empty($user)) { // do the checking here $collection = $connection->DatabaseName->admins; $login = $collection->findOne(array('name' => $user)); if ($login == null) return false; if ($login['password'] != sha1($login['_id'] . $pass)) { msg('Incorrect username or password.'); return false; } // set the globals if authed $USERINFO['name'] = $login['name']; $USERINFO['mail'] = $login['email']; $USERINFO['grps'] = $login['name'] == 'Admin' ? array('admin','user'): array( 'user'); $_SERVER['REMOTE_USER'] = $login['name']; $_SESSION[DOKU_COOKIE]['auth']['user'] = $login['name']; $_SESSION[DOKU_COOKIE]['auth']['mail'] = $login['email']; $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass; $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO; return true; } else { return false; } } }