try { $result = $object->couchdb->listDatabases(); } catch (Exception $exc) { print $exc->getMessage(); } //print_r ($result); $iTotal = 0; $output["iTotalRecords"] = $iTotal; $output["iTotalDisplayRecords"] = $iTotal; foreach ($result as $aRow) { if ($aRow[0] != "_") { // Not _users and _replicator try { $object->fetch($aRow); $info = $object->values; $secu = $object->couchAdmin->getSecurity(); if (count($secu->readers->names) + count($secu->readers->roles) > 0) $info->Status = "SECURE"; else $info->Status = "INSECURE"; } catch (Exception $exc) { print $exc->getMessage(); } $output["aaData"][] = $info; } }
$confirm = GETPOST('confirm', 'alpha'); $userid = GETPOST('user', 'alpha'); $groupid = GETPOST('group', 'alpha'); // Security check $result = restrictedArea($user, 'user', $id, 'usergroup&usergroup', 'user'); $object = new UserDatabase($db); /** * Action remove group */ if ($action == 'confirm_delete' && $confirm == "yes") { if ($caneditperms) { $object->fetch($id); $object->delete(); Header("Location: index.php"); exit; } else { $langs->load("errors"); $message = '<div class="error">' . $langs->trans('ErrorForbidden') . '</div>'; } } /** * Action add database */ if ($action == 'add') { if ($caneditperms) { $message = "";
/** * Charge un objet group avec toutes ces caracteristiques (excpet ->members array) * * @param int $id id du groupe a charger * @return int <0 if KO, >0 if OK */ function load($id, $loaddb = false) { global $conf; parent::load($id); if ($loaddb) { $database = new UserDatabase($this->db); try { $result = $database->couchdb->listDatabases(); } catch (Exception $exc) { print $exc->getMessage(); } foreach ($result as $aRow) { if ($aRow[0] != "_") { // Not _users and _replicator try { $database->fetch($aRow); $info = $database->values; $secu = $database->couchAdmin->getSecurity(); foreach ($secu as $key => $type) { if (in_array($this->values->name, $type->roles)) { if ($key == "admins") $info->Administrator = true; $this->databases[] = $info; } } } catch (Exception $exc) { print $exc->getMessage(); } } } } return 1; }
/** * Return select list of databases * * @param string $selected Id group preselected * @param string $htmlname Field name in form * @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue * @param string $exclude Array list of groups id to exclude * @param int $disabled If select list must be disabled * @param string $include Array list of groups id to include * @param int $enableonly Array list of groups id to be enabled. All other must be disabled * @return void */ function select_doldatabases($selected = '', $htmlname = 'databaseid', $show_empty = 0, $exclude = '', $disabled = 0, $include = '', $enableonly = '') { global $conf, $user, $langs; $out = ''; $object = new UserDatabase($db); try { $result = $object->couchdb->listDatabases(); } catch (Exception $exc) { print $exc->getMessage(); } if (count($result) && is_array($exclude)) { foreach ($result as $key => $obj) { if (in_array($obj, $exclude, true)) { unset($result[$key]); } } } $i = 0; if (count($result)) { $out .= '<select class="flat" name="' . $htmlname . '"' . ($disabled ? ' disabled="disabled"' : '') . '>'; if ($show_empty) { $out .= '<option value="-1"' . ($selected == -1 ? ' selected="selected"' : '') . '> </option>' . "\n"; } foreach ($result as $aRow) { if ($aRow[0] != "_") { // Not _users and _replicator try { $object->fetch($aRow); $obj = $object->values; $secu = $object->couchAdmin->getSecurity(); if (count($secu->admins->names) + count($secu->readers->names) + count($secu->admins->roles) + count($secu->admins->roles) > 0) { $obj->Status = "SECURE"; } else { $obj->Status = "INSECURE"; } } catch (Exception $exc) { print $exc->getMessage(); } $disableline = 0; if (is_array($enableonly) && count($enableonly) && !in_array($obj->db_name, $enableonly)) { $disableline = 1; } $out .= '<option value="' . $obj->db_name . '"'; if ($disableline) { $out .= ' disabled="disabled"'; } if (is_object($selected) && $selected->id == $obj->db_name || !is_object($selected) && $selected == $obj->db_name) { $out .= ' selected="selected"'; } $out .= '>'; $out .= $obj->db_name; $out .= '</option>'; $i++; } } } else { $out .= '<select class="flat" name="' . $htmlname . '" disabled="disabled">'; $out .= '<option value="">' . $langs->trans("None") . '</option>'; } $out .= '</select>'; return $out; }
} } else { $langs->load("errors"); $message = '<div class="error">' . $langs->trans('ErrorForbidden') . '</div>'; } } // Add/Remove database into roles if ($action == 'adddatabase' || $action == 'removedatabase') { if ($caneditperms) { if ($databaseid) { $object->load($id); $database = new UserDatabase($db); $database->fetch($databaseid); if ($action == 'adddatabase') { if($_POST['admin']) $database->couchAdmin->addDatabaseAdminRole($object->name); else $database->couchAdmin->addDatabaseReaderRole($object->name); } if ($action == 'removedatabase') { $database->couchAdmin->removeDatabaseAdminRole($object->name); $database->couchAdmin->removeDatabaseReaderRole($object->name); } if ($result > 0) { header("Location: fiche.php?id=" . $object->id); exit;
/** * Load a user from database with its id or ref (login) * * @param string $id Si defini, id a utiliser pour recherche * @param string $login Si defini, login a utiliser pour recherche * @param strinf $sid Si defini, sid a utiliser pour recherche * @param int $loadpersonalconf Also load personal conf of user (in $user->conf->xxx) * @return int <0 if KO, 0 not found, >0 if OK */ function fetch($login = "") { global $conf; // Clean parametersadmin $login = trim($login); if (empty($login)) { //try { $login = "******" . $this->couchAdmin->getLoginSession(); //} catch (Exception $e) { // return 0; //} } try { $this->values = $this->couchdb->getDoc($login); } catch (Exception $e) { return 0; } // Test if User is a global administrator try { $admins = $this->couchAdmin->getUserAdmins(); $name = substr($login, 17); // suppress org.couchdb.user: if (isset($admins->$name)) $this->admin = true; else $this->admin = false; } catch (Exception $e) { $this->admin = false; } try { $database = new UserDatabase($this->db); $database->fetch($conf->Couchdb->name); // TODO Modify to put it in SESSION $result = $database->couchAdmin->getDatabaseAdminUsers(); // Administrateur local de la bd if (in_array($this->values->name, $result)) { $this->admin = true; } } catch (Exception $e) { } $this->id = $this->values->_id; $this->login = $this->values->name; return 1; }