[ Index ] |
|
Code source de Horde 3.1.3 |
1 <?php 2 /** 3 * $Horde: horde/admin/user.php,v 1.47.10.7 2006/01/01 21:28:05 jan Exp $ 4 * 5 * Copyright 1999-2006 Chuck Hagenbuch <chuck@horde.org> 6 * 7 * See the enclosed file COPYING for license information (LGPL). If you 8 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. 9 */ 10 11 @define('HORDE_BASE', dirname(__FILE__) . '/..'); 12 require_once HORDE_BASE . '/lib/base.php'; 13 require_once 'Horde/Menu.php'; 14 require_once 'Horde/Form.php'; 15 require_once 'Horde/Variables.php'; 16 require_once 'Horde/Form/Renderer.php'; 17 require_once 'Horde/Variables.php'; 18 19 if (!Auth::isAdmin()) { 20 Horde::fatal('Forbidden.', __FILE__, __LINE__); 21 } 22 $auth = &Auth::singleton($conf['auth']['driver']); 23 24 if ($conf['signup']['allow'] && $conf['signup']['approve']) { 25 require_once 'Horde/Auth/Signup.php'; 26 $signup = &Auth_Signup::singleton(); 27 } 28 29 $vars = &Variables::getDefaultVariables(); 30 $addForm = &new Horde_Form($vars, _("Add a new user:"), 'adduser'); 31 $addForm->setButtons(_("Add user"), _("Reset")); 32 33 $vars->set('form', 'add'); 34 $addForm->addHidden('', 'form', 'text', true, true); 35 $addForm->addVariable(_("Username"), 'user_name', 'text', true); 36 $addForm->addVariable(_("Password"), 'password', 'passwordconfirm', false, false, _("type the password twice to confirm")); 37 38 /* Use hooks get any extra fields for new accounts. */ 39 $extra = Horde::callHook('_horde_hook_signup_getextra'); 40 if (!is_a($extra, 'PEAR_Error') && !empty($extra)) { 41 foreach ($extra as $field_name => $field) { 42 $readonly = isset($field['readonly']) ? $field['readonly'] : null; 43 $desc = isset($field['desc']) ? $field['desc'] : null; 44 $field_params = isset($field['params']) ? $field['params'] : array(); 45 46 $addForm->addVariable($field['label'], 'extra[' . $field_name . ']', $field['type'], $field['required'], $readonly, $desc, $field_params); 47 } 48 } 49 50 51 // Process forms. Use Util::getPost() instead of Util::getFormData() 52 // for a lot of the data because we want to actively ignore GET data 53 // in some cases - adding/modifying users - as a security precaution. 54 switch (Util::getFormData('form')) { 55 case 'add': 56 $addForm->validate($vars); 57 58 if ($addForm->isValid() && $vars->get('formname') == 'adduser') { 59 $addForm->getInfo($vars, $info); 60 61 if (empty($info['user_name'])) { 62 $notification->push(_("You must specify the username to add."), 'horde.error'); 63 64 } else { 65 $credentials = array('password' => $info['password']); 66 if (isset($info['extra'])) { 67 foreach ($info['extra'] as $field => $value) { 68 $credentials[$field] = $value; 69 } 70 } 71 72 if (is_a($ret = $auth->addUser($info['user_name'], $credentials), 'PEAR_Error')) { 73 $notification->push(sprintf(_("There was a problem adding \"%s\" to the system: %s"), $info['user_name'], $ret->getMessage()), 'horde.error'); 74 } else { 75 if (isset($info['extra'])) { 76 $result = Horde::callHook('_horde_hook_signup_addextra', 77 array($info['user_name'], $info['extra'])); 78 if (is_a($result, 'PEAR_Error')) { 79 $notification->push(sprintf(_("Added \"%s\" to the system, but could not add additional signup information: %s."), $info['user_name'], $result->getMessage()), 'horde.warning'); 80 } 81 } 82 if (Util::getFormData('removeQueuedSignup')) { 83 $signup->removeQueuedSignup($info['user_name']); 84 } 85 $notification->push(sprintf(_("Successfully added \"%s\" to the system."), $info['user_name']), 'horde.success'); 86 $addForm->unsetVars($vars); 87 } 88 } 89 } 90 break; 91 92 case 'remove_f': 93 $f_user_name = Util::getFormData('user_name'); 94 $remove_form = true; 95 break; 96 97 case 'remove': 98 $f_user_name = Util::getFormData('user_name'); 99 if (empty($f_user_name)) { 100 $notification->push(_("You must specify a username to remove."), 'horde.message'); 101 } elseif (Util::getFormData('submit') !== _("Cancel")) { 102 if (is_a($result = $auth->removeUser($f_user_name), 'PEAR_Error')) { 103 $notification->push(sprintf(_("There was a problem removing \"%s\" from the system: ") . $result->getMessage(), $f_user_name), 'horde.error'); 104 } else { 105 $notification->push(sprintf(_("Successfully removed \"%s\" from the system."), $f_user_name), 'horde.success'); 106 } 107 } 108 $vars->remove('user_name'); 109 break; 110 111 case 'clear_f': 112 $f_user_name = Util::getFormData('user_name'); 113 $clear_form = true; 114 break; 115 116 case 'clear': 117 $f_user_name = Util::getFormData('user_name'); 118 if (empty($f_user_name)) { 119 $notification->push(_("You must specify a username to clear out."), 'horde.message'); 120 } elseif (Util::getFormData('submit') !== _("Cancel")) { 121 if (is_a($result = $auth->removeUserData($f_user_name), 'PEAR_Error')) { 122 $notification->push(sprintf(_("There was a problem clearing data for user \"%s\" from the system: ") . $result->getMessage(), $f_user_name), 'horde.error'); 123 } else { 124 $notification->push(sprintf(_("Successfully cleared data for user \"%s\" from the system."), $f_user_name), 'horde.success'); 125 } 126 } 127 $vars->remove('user_name'); 128 break; 129 130 case 'update_f': 131 $f_user_name = Util::getFormData('user_name'); 132 $update_form = true; 133 break; 134 135 case 'update': 136 $user_name_1 = Util::getPost('user_name'); 137 $user_name_2 = Util::getPost('user_name2', $user_name_1); 138 $fullname = Util::getPost('user_fullname'); 139 $email = Util::getPost('user_email'); 140 141 if ($auth->hasCapability('update')) { 142 $user_pass_1 = Util::getPost('user_pass_1'); 143 $user_pass_2 = Util::getPost('user_pass_2'); 144 145 if (empty($user_name_1)) { 146 $notification->push(_("You must specify the username to update."), 'horde.error'); 147 } elseif (empty($user_pass_1) || empty($user_pass_2)) { 148 // Don't update, but don't complain. 149 } elseif ($user_pass_1 != $user_pass_2) { 150 $notification->push(_("Passwords must match."), 'horde.error'); 151 } else { 152 $result = $auth->updateUser($user_name_1, 153 $user_name_2, 154 array('password' => $user_pass_1)); 155 } 156 } 157 158 if (isset($result) && is_a($result, 'PEAR_Error')) { 159 $notification->push(sprintf(_("There was a problem updating \"%s\": %s"), 160 $user_name_1, $result->getMessage()), 'horde.error'); 161 } else { 162 require_once 'Horde/Identity.php'; 163 $identity = &Identity::singleton('none', $user_name_1); 164 $identity->setValue('fullname', $fullname); 165 $identity->setValue('from_addr', $email); 166 $identity->save(); 167 168 $notification->push(sprintf(_("Successfully updated \"%s\""), 169 $user_name_2), 'horde.success'); 170 } 171 $vars->remove('user_name'); 172 break; 173 174 case 'approve_f': 175 $thisSignup = $signup->getQueuedSignup(Util::getFormData('user_name')); 176 $info = $thisSignup->getData(); 177 178 $vars->set('password', 179 array('original' => $info['password'], 180 'confirm' => $info['password'])); 181 unset($info['password']); 182 $vars->set('extra', $info); 183 184 $vars->set('removeQueuedSignup', true); 185 $addForm->addHidden('', 'removeQueuedSignup', 'boolean', true); 186 break; 187 188 case 'removequeued_f': 189 $f_user_name = Util::getFormData('user_name'); 190 $removequeued_form = true; 191 break; 192 193 case 'removequeued': 194 $result = $signup->removeQueuedSignup(Util::getFormData('user_name')); 195 if (is_a($result, 'PEAR_Error')) { 196 $notification->push($result); 197 } else { 198 $notification->push(sprintf(_("The signup request for %s has been removed."), Util::getFormData('user_name'))); 199 } 200 break; 201 } 202 203 $title = _("User Administration"); 204 Horde::addScriptFile('stripe.js', 'horde', true); 205 require HORDE_TEMPLATES . '/common-header.inc'; 206 require HORDE_TEMPLATES . '/admin/common-header.inc'; 207 $notification->notify(array('listeners' => 'status')); 208 209 if (isset($update_form) && $auth->hasCapability('list')) { 210 require_once 'Horde/Identity.php'; 211 $identity = &Identity::singleton('none', $f_user_name); 212 require HORDE_TEMPLATES . '/admin/user/update.inc'; 213 } elseif (isset($remove_form) && $auth->hasCapability('list') && $auth->hasCapability('remove')) { 214 require HORDE_TEMPLATES . '/admin/user/remove.inc'; 215 } elseif (isset($clear_form)) { 216 require HORDE_TEMPLATES . '/admin/user/clear.inc'; 217 } elseif (isset($removequeued_form)) { 218 require HORDE_TEMPLATES . '/admin/user/removequeued.inc'; 219 } elseif ($auth->hasCapability('add')) { 220 require HORDE_TEMPLATES . '/admin/user/add.inc'; 221 if ($conf['signup']['allow'] && $conf['signup']['approve']) { 222 require HORDE_TEMPLATES . '/admin/user/approve.inc'; 223 } 224 } else { 225 require HORDE_TEMPLATES . '/admin/user/noadd.inc'; 226 } 227 228 if ($auth->hasCapability('list')) { 229 230 /* If we aren't supplied with a page number, default to page 0. */ 231 $page = Util::getFormData('page', 0); 232 $search_pattern = Util::getFormData('search_pattern', ''); 233 234 $users = $auth->listUsers(); 235 if (is_a($users, 'PEAR_Error')) { 236 Horde::fatal($users, __FILE__, __LINE__); 237 } 238 239 /* Returns only users that match the specified pattern. */ 240 require_once 'Horde/Array.php'; 241 $users = preg_grep('/' . $search_pattern . '/', $users); 242 sort($users); 243 244 require_once 'Horde/UI/Pager.php'; 245 $viewurl = Util::addParameter('admin/user.php', 'search_pattern', $search_pattern); 246 247 $numitem = count($users); 248 $perpage = 20; 249 250 $min = $page * $perpage; 251 while ($min > $numitem) { 252 $page--; 253 $min = $page * $perpage; 254 } 255 $max = $min + $perpage; 256 257 $start = ($page * $perpage) + 1; 258 $end = min($numitem, $start + $perpage - 1); 259 260 require HORDE_TEMPLATES . '/admin/user/list.inc'; 261 } else { 262 require HORDE_TEMPLATES . '/admin/user/nolist.inc'; 263 } 264 265 require HORDE_TEMPLATES . '/common-footer.inc';
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 18:01:28 2007 | par Balluche grâce à PHPXref 0.7 |