struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Newton (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4117) RolesInterceptor ignores disallowedRoles when allowedRoles are configured
Date Wed, 19 Jun 2013 16:45:22 GMT

    [ https://issues.apache.org/jira/browse/WW-4117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13688147#comment-13688147
] 

Dave Newton commented on WW-4117:
---------------------------------

It looks like the issue is the {{return true}} part, it should be {{return result}}.

{{allowedRoles}} is a whitelist; it *should* ignore disallowedRoles if configured, no? IMO
configuring *both* would be more confusing and error-prone.

I'd think it'd look roughly like:

{code}
    protected boolean isAllowed(HttpServletRequest request, Object action) {
        if (allowedRoles.size() > 0) {
            return processAllowedRoles();
        }

        if (disallowedRoles.size() > 0) {
            return processDisallowedRoles();
        }

        return true;
    }

    protected boolean processAllowedRoles() {
        for (String role : allowedRoles) {
            if (request.isUserInRole(role)) {
                return true;
            }
        }
        return false;
    }

    protected boolean processDisallowedRoles() {
       for (String role : disallowedRoles) {
            if (request.isUserInRole(role)) {
                return false;
            }
        }
        return true;
    }
{code}

(Delta an additional refactor if it's important.)


                
> RolesInterceptor ignores disallowedRoles when allowedRoles are configured
> -------------------------------------------------------------------------
>
>                 Key: WW-4117
>                 URL: https://issues.apache.org/jira/browse/WW-4117
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Interceptors
>            Reporter: Cam Morris
>         Attachments: patch.txt
>
>
> The isAllowed method of RolesInterceptor does not enforce the disallowedRoles when allowedRoles
are configured.  ex:
> {code}    
> <interceptor-ref name="roles">
>   <param name="allowedRoles">authenticated</param>
>   <param name="disallowedRoles">restrictedUser</param>
> </interceptor-ref>
> {code}
> With the above configuration a user with the roles "authenticated", and "restrictedUser"
would be granted access.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message