- // If the user is not logged in, the Namespace:title of the article must be in
- // the Read array in order for the user to see it. (We have to check here to
- // catch special pages etc. We check again in Article::view())
- } elseif ( !$title->userCanRead() ) {
- $output->loginToUse();
+ }
+
+ // Check user's permissions to read this page.
+ // We have to check here to catch special pages etc.
+ // We will check again in Article::view().
+ $permErrors = $title->getUserPermissionsErrors( 'read', $user );
+ if ( count( $permErrors ) ) {
+ wfProfileOut( __METHOD__ );
+ throw new PermissionsError( 'read', $permErrors );
+ }
+
+ $pageView = false; // was an article or special page viewed?
+