Special:Userrights didn't recognize user as self if person didn't capitalize
[lhc/web/wiklou.git] / includes / api / ApiUserrights.php
index 25254d7..9686217 100644 (file)
@@ -36,13 +36,14 @@ class ApiUserrights extends ApiBase {
                parent::__construct( $main, $action );
        }
 
+       private $mUser = null;
+
        public function execute() {
                $params = $this->extractRequestParams();
 
-               // User already validated in call to getTokenSalt from Main
-               $form = new UserrightsPage;
-               $user = $form->fetchUser( $params['user'] );
+               $user = $this->getUser();
 
+               $form = new UserrightsPage;
                $r['user'] = $user->getName();
                list( $r['added'], $r['removed'] ) =
                        $form->doSaveUserGroups(
@@ -53,6 +54,29 @@ class ApiUserrights extends ApiBase {
                $this->getResult()->setIndexedTagName( $r['removed'], 'group' );
                $this->getResult()->addValue( null, $this->getModuleName(), $r );
        }
+       
+       private function getUser() {
+               if ( $this->mUser !== null ) {
+                       return $this->mUser;
+               }
+
+               $params = $this->extractRequestParams();
+               if ( is_null( $params['user'] ) ) {
+                       $this->dieUsageMsg( array( 'missingparam', 'user' ) );
+               }
+
+               $form = new UserrightsPage;
+               $status = $form->fetchUser( $params['user'] );
+               if ( !$status->isOK() ) {
+                       $errors = $status->getErrorsArray();
+                       $this->dieUsageMsg( $errors[0] );
+               } else {
+                       $user = $status->value;
+               }
+
+               $this->mUser = $user;
+               return $user;
+       }
 
        public function mustBePosted() {
                return true;
@@ -103,19 +127,7 @@ class ApiUserrights extends ApiBase {
        }
 
        public function getTokenSalt() {
-               $params = $this->extractRequestParams();
-               if ( is_null( $params['user'] ) ) {
-                       $this->dieUsageMsg( array( 'missingparam', 'user' ) );
-               }
-
-               $form = new UserrightsPage;
-               $user = $form->fetchUser( $params['user'] );
-               if ( $user instanceof WikiErrorMsg ) {
-                       $this->dieUsageMsg( array_merge(
-                               (array)$user->getMessageKey(), $user->getMessageArgs() ) );
-               }
-
-               return $user->getName();
+               return $this->getUser()->getName();
        }
 
        protected function getExamples() {