On Mar 3, 2008, at 9:57 PM, sdumitriu (SVN) wrote:

> Author: sdumitriu
> Date: 2008-03-03 21:57:43 +0100 (Mon, 03 Mar 2008)
> New Revision: 8181
>
> Modified:
>   xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
> XWiki.java
> Log:
> XWIKI-2170: Allow inactive users to see specific pages

What's an inactive user?

I think the code below would benefit from some comment and from a  
separate method, like boolean checkAccessForInactiveUsers()

Do we have tests to prove this works? :) Since this seems to be a new  
feature, I think we really need some tests.

Thanks
-Vincent

> Done.
> Patch submitted by David Ward, applied with minor changes.
>
>
> Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/ 
> xwiki/XWiki.java
> ===================================================================
> --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
> XWiki.java    2008-03-03 20:01:33 UTC (rev 8180)
> +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
> XWiki.java    2008-03-03 20:57:43 UTC (rev 8181)
> @@ -4209,13 +4209,26 @@
>                 null,
>                 args);
>         } else if (checkActive(context) == 0) {
> -            Object[] args = {context.getUser()};
> -            setPhonyDocument(docName, context, vcontext);
> -            throw new  
> XWikiException(XWikiException.MODULE_XWIKI_USER,
> -                XWikiException.ERROR_XWIKI_USER_INACTIVE,
> -                "User {0} account is inactive",
> -                null,
> -                args);
> +            boolean allow = false;
> +            String allowed =  
> Param("xwiki.inactiveuser.allowedpages", "");
> +            if (context.getAction().equals("view") && ! 
> allowed.equals("")) {
> +                String[] allowedList = StringUtils.split(allowed,  
> " ,");
> +                for (int i=0; i < allowedList.length; i++) {
> +                    if (allowedList[i].equals(doc.getFullName())) {
> +                        allow = true;
> +                        break;
> +                    }
> +                }
> +            }
> +            if (!allow) {
> +                Object[] args = {context.getUser()};
> +                setPhonyDocument(docName, context, vcontext);
> +                throw new  
> XWikiException(XWikiException.MODULE_XWIKI_USER,
> +                    XWikiException.ERROR_XWIKI_USER_INACTIVE,
> +                    "User {0} account is inactive",
> +                    null,
> +                    args);
> +            }
>         }
>
>         context.put("doc", doc);
>
> _______________________________________________
> notifications mailing list
> [EMAIL PROTECTED]
> http://lists.xwiki.org/mailman/listinfo/notifications

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to