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