On 17.07.2011 18:09, Ryan Schmidt wrote:
>
> The userCan hook fires off before the shortcut, so you should be using that
>           $result = null;
>           wfRunHooks( 'userCan', array(&$this,&$wgUser, 'read',
> &$result ) );
>           if ( $result !== null ) {
>               return $result;
>           }
>
>           # Shortcut for public wikis, allows skipping quite a bit of code
>           if ( $useShortcut ) {
>               return true;
>           }
> By setting $result in userCan, you can basically do whatever you want
> (Extension:Lockdown uses userCan, I believe, which is why it works
> properly). If for some reason you really can't or don't want to use the
> userCan hook, set something like $wgRevokePermissions['invalid']['read']
> = true; and $wgImplicitGroups[] = 'invalid'; (so that it won't show up
> in group name dropdowns), but this is a really hacky workaround that
> abuses an implementation detail, so it might change in the future.
>
Thanks for the good tip. Of course I use userCan hook, however it's too 
large to be pasted here and a bit unpolished.
In the end of my hook I have the following code:

         if ($result==true) {
             $result=NULL; // continue further checks
             return true;  // continue hook chain
         } else {
             return false; // deny access, no further checks
         }

I guess it is my mistake that I respect the chain and nullify the 
result? In case my extension "allows" access I honour further handlers 
of the same hook, which still may set $result to false.
However, changing to:

         if ($result==true) {
             return false; // allow access, no further checks
         } else {
             return false; // deny access, no further checks
         }

didn't help :-(.

I will debug my extension further (later). Maybe there is some mistake 
in my own code. Thanks for the tips, anyway.
Dmitriy


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

Reply via email to