public function execute() { $params = $this->extractRequestParams(); $user = $this->getUser(); $form = new UserrightsPage(); $r['user'] = $user->getName(); list($r['added'], $r['removed']) = $form->doSaveUserGroups($user, (array) $params['add'], (array) $params['remove'], $params['reason']); $this->getResult()->setIndexedTagName($r['added'], 'group'); $this->getResult()->setIndexedTagName($r['removed'], 'group'); $this->getResult()->addValue(null, $this->getModuleName(), $r); }
public function execute() { $params = $this->extractRequestParams(); // User already validated in call to getTokenSalt from Main $form = new UserrightsPage(); $user = $form->fetchUser($params['user']); $r['user'] = $user->getName(); list($r['added'], $r['removed']) = $form->doSaveUserGroups($user, (array) $params['add'], (array) $params['remove'], $params['reason']); $this->getResult()->setIndexedTagName($r['added'], 'group'); $this->getResult()->setIndexedTagName($r['removed'], 'group'); $this->getResult()->addValue(null, $this->getModuleName(), $r); }
function doPOST() { global $wgUser, $wgAuth; switch ($this->action) { default: throw new InvalidPOSTParamException(wfMsg('uadm-formsubmissionerrormsg')); case 'emailwelcomepreview': $this->pwdaction = 'emailwelcome'; $newParams = array('preview' => 'welcome') + $this->mParams; $newParams = array_intersect_key($newParams, $this->getParamsGET()); return $this->getURL($newParams); case 'adduser': break; } $this->validatePOSTParams(); if ($this->domain != 'local' && $this->domain != '') { if (!$wgAuth->canCreateAccounts()) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-createextacctfailmsg')); } } $logRights = new LogPage('rights'); $user = new User(); $user->setName($wgAuth->getCanonicalName($this->username)); $user->setRealName($this->realname); $user->setEmail($this->email); $successWikiText = array(); $successWikiText[] = wfMsg('uadm-newusersuccessmsg', $this->username); $userPassword = ''; switch ($this->pwdaction) { case 'manual': try { $user->setPassword($this->password1); $userPassword = $this->password1; } catch (PasswordError $pe) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-passworderrormsg') . $pe->getText()); } $successWikiText[] = wfMsg('uadm-passwordchangesuccessmsg', $this->username); break; case 'emailwelcome': $result = self::mailWelcomeAndPassword($user); if ($result->isGood()) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-mailerror', $result->getMessage())); } $successWikiText[] = wfMsg('uadm-welcomeemailsuccessmsg', $this->username, $this->email); break; } $user->setToken(); $wgAuth->initUser($user, false); $abortError = ''; if (!wfRunHooks('AbortNewAccount', array($user, &$abortError))) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-hookblocknewusermsg', $abortError)); } if (!$wgAuth->addUser($user, $userPassword, $this->email, $this->realname)) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-wgauthaddfailmsg', $abortError)); } $user->addToDatabase(); $user->addNewUserLogEntry(); if (count($this->groups) > 0) { $userrightsPage = new UserrightsPage(); $userrightsPage->doSaveUserGroups($user, $this->groups, array(), $this->newuserreasonmsg); wfRunHooks('UserRights', array($user, $add, $remove)); $successWikiText[] = wfMsg('uadm-changestogroupsuccessmsg', $this->username); } $successWikiText = implode('<br/>', $successWikiText); wfRunHooks('AddNewAccount', array($user, true)); $ssUpdate = new SiteStatsUpdate(0, 0, 0, 0, 1); $ssUpdate->doUpdate(); # password log entry switch ($this->pwdaction) { case 'manual': $logRights->addEntry('uadm-changeduserpasswordlog', $user->getUserPage(), $this->newuserreasonmsg, array()); break; case 'emailwelcome': $logRights->addEntry('uadm-emailwelcomelog', $user->getUserPage(), $this->newuserreasonmsg, array()); break; } // Redirect to EditUser special page instead of AddUser to allow editing of // user just added return $this->getSpecialPageURL('EditUser', $this->username, array('statusmsg' => base64_encode($successWikiText), 'statusok' => true, 'returnto' => $this->returnto)); }
function doPOST() { global $wgUser, $wgAuth; switch ($this->action) { case 'emailpwdpreview': return $this->getURL(array('preview' => 'password', 'pwdaction' => 'email') + $this->mParams); case 'emailwelcomepreview': return $this->getURL(array('preview' => 'welcome', 'pwdaction' => 'emailwelcome') + $this->mParams); default: throw new InvalidPOSTParamException(wfMsg('uadm-formsubmissionerrormsg')); case 'saveuser': break; } $user = $this->validatePOSTParams(); $log = new LogPage('rights'); $changesMade = false; $userName = $user->getName(); // Apply parameters that have changed if ($user->getName() != $this->username) { $oldName = $user->getName(); $user->setName($wgAuth->getCanonicalName($this->username)); $newName = $user->getName(); $log->addEntry('uadm-changedusernamelog', $user->getUserPage(), $this->reason, array($this->userid, $oldName, $newName)); $changesMade = true; } if ($user->getRealName() != $this->realname) { $oldRealName = $user->getRealName(); $user->setRealName($this->realname); $newRealName = $user->getRealName(); $log->addEntry('uadm-changeduserrealnamelog', $user->getUserPage(), $this->reason, array($oldRealName, $newRealName)); $changesMade = true; } if ($user->getEmail() != $this->email) { $oldEmail = $user->getEmail(); $user->setEmail($this->email); $newEmail = $user->getEmail(); $log->addEntry('uadm-changeduseremaillog', $user->getUserPage(), $this->reason, array($oldEmail, $newEmail)); $changesMade = true; } $successWikiText = array(); if ($changesMade) { $successWikiText[] = wfMsg('uadm-changestousersuccessmsg', $this->username); } switch ($this->pwdaction) { case 'manual': try { $user->setPassword($this->password1); $changesMade = true; } catch (PasswordError $pe) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-passworderrormsg') . $pe->getText()); } $log->addEntry('uadm-changeduserpasswordlog', $user->getUserPage(), $this->reason, array()); $successWikiText[] = wfMsg('uadm-passwordchangesuccessmsg', $this->username); break; case 'email': $result = self::mailPassword($user); if ($result->isGood()) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-mailerrormsg', $result->getMessage())); } $changesMade = true; $log->addEntry('uadm-emailpasswordlog', $user->getUserPage(), $this->reason, array()); $successWikiText[] = wfMsg('uadm-passwordemailsuccessmsg', $this->username, $this->email); break; case 'emailwelcome': $result = self::mailWelcomeAndPassword($user); if ($result->isGood()) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-mailerrormsg', $result->getMessage())); } $changesMade = true; $log->addEntry('uadm-emailwelcomelog', $user->getUserPage(), $this->reason, array()); $successWikiText[] = wfMsg('uadm-welcomeemailsuccessmsg', $this->username, $this->email); break; } if ($changesMade) { if (!$wgAuth->updateExternalDB($user)) { return $this->getPOSTRedirectURL(false, wfMsg('uadm-externalupdateerrormsg')); } $user->saveSettings(); } # Update groups if needed $currentGroups = $user->getGroups(); $remove = array(); $add = array(); foreach ($currentGroups as $groupName) { if (!in_array($groupName, $this->groups)) { $remove[] = $groupName; } } foreach ($this->groups as $groupName) { if (!in_array($groupName, $currentGroups)) { $add[] = $groupName; } } if (count($remove) > 0 || count($add) > 0) { $userrightsPage = new UserrightsPage(); $userrightsPage->doSaveUserGroups($user, $add, $remove, $this->reason); wfRunHooks('UserRights', array($user, $add, $remove)); $successWikiText[] = wfMsg('uadm-changestogroupsuccessmsg', $this->username); } $successWikiText = implode('<br/>', $successWikiText); return $this->getPOSTRedirectURL(true, $successWikiText); }