On 2016-12-20 06:22, Daniel Barrett wrote:
>>> My goal is to remove some special pages for anonymous users but permit
>>> logged-in users to see them.
>>> Is there a better way to check for a logged-in user at this hook point?
>>> Or a better way to remove special pages for anonymous users?

Bartosz Dziewoński <mailto:matma....@gmail.com> replied:
>> Yes, the list of special pages can't depend on anything related to the
>> current user.
>>
>> Instead, you should check whether the user is logged in when displaying
>> the special page. You can just call `$this->requireLogin();` at the
>> beginning of the special page's execute() function...

Brad Jorsch (Anomie) added:
>And to hide a special page on Special:SpecialPages from users who can't use
>it, have the page's userCanExecute() return false when appropriate and have
>isRestricted() return true. If the check is based on having one user right,
>this can be easily done by passing the user right as the $restriction
>parameter to SpecialPage::__construct().

Thanks! Since I am trying to hide *all* special pages (except login, logout, 
and search),
from anonymous users, not just custom special pages that I wrote, these 
solutions
won't quite work. I'll try using the hook "SpecialPageBeforeExecute" to check
if the user is logged in, then blocking the execution if not. Then maybe a 
separate hook
to prevent special pages from showing up in the search box auto-suggestions, 
maybe
"ApiOpenSearchSuggest"?

As an additional note, even after removing the problematic code, VisualEditor is
still not loading. I guess the errors I saw were red herrings. Now there are no 
errors
at all showing up when VE fails. :-(  I'll do some more debugging and follow up.

DanB
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to