Index: src/main/java/com/xpn/xwiki/XWiki.java =================================================================== --- src/main/java/com/xpn/xwiki/XWiki.java (revision 27576) +++ src/main/java/com/xpn/xwiki/XWiki.java (working copy) @@ -3947,7 +3947,7 @@ public boolean checkAccess(String action, XWikiDocument doc, XWikiContext context) throws XWikiException { - if (action.equals("skin") && doc.getSpace().equals("skins")) { + if (action.equals("skin") && (doc.getSpace().equals("skins") || doc.getSpace().equals("resources"))) { // We still need to call checkAuth to set the proper user. XWikiUser user = checkAuth(context); if (user != null) { @@ -5140,13 +5140,25 @@ "Access to document {0} has been denied to user {1}", null, args); } else if (checkActive(context) == 0) { 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; + String action = context.getAction(); + /* + * Allow inactive user to see skins, ressources, SSX, JSX and downloads it could has seen has guest. The + * rational behind this behaviour is that inactive user should be able to access the same UI that guest use + * to see, including custom icons, panels, and so on... + */ + if ((action.equals("skin") && (doc.getSpace().equals("skins") || doc.getSpace().equals("resources"))) + || ((action.equals("skin") || action.equals("download") || action.equals("ssx") || action.equals("jsx")) && getRightService() + .hasAccessLevel("view", XWikiRightService.GUEST_USER_FULLNAME, doc.getPrefixedFullName(), context))) { + allow = true; + } else { + 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; + } } } }