Jonathan Laterreur created DELTASPIKE-1345: ----------------------------------------------
Summary: Support JavaEE Security annotation Key: DELTASPIKE-1345 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1345 Project: DeltaSpike Issue Type: New Feature Components: Security-Module Reporter: Jonathan Laterreur Deltaspike should take care of the standard JavaEE security annotation. {code:java} @RolesAllowed @PermitAll @DenyAll {code} Maybe a default interceptor should do the job. I did something like this (does not covers everything) {code:java} @Interceptor @RolesSecured public class RolesSecuredInterceptor { private static final Logger LOGGER = LoggerFactory.getLogger(RolesSecuredInterceptor.class); @Inject private HttpServletRequest request; @AroundInvoke public Object intercept(InvocationContext ctx) throws Exception { boolean allowed = ctx.getMethod().getAnnotation(PermitAll.class) != null; if (!allowed) { RolesAllowed rolesAllowed = ctx.getMethod().getAnnotation(RolesAllowed.class); if (rolesAllowed != null) { allowed = verifyRolesAllowed(rolesAllowed); } if (!allowed) { allowed = ctx.getMethod().getDeclaringClass().getAnnotation(PermitAll.class) != null; if (!allowed) { rolesAllowed = ctx.getMethod().getDeclaringClass().getAnnotation(RolesAllowed.class); if (rolesAllowed != null) { allowed = verifyRolesAllowed(rolesAllowed); } else { allowed = true; } } } } if (!allowed) { LOGGER.error("Utilisateur « {} » ne possede pas les droits pour appeler cette fonction « {} »", request.getUserPrincipal() != null ? request.getUserPrincipal().getName() : "anonyme", ctx.getMethod().getName()); throw new SecurityException("Ne possede pas les droits pour appeler ce bean CDI"); } return ctx.proceed(); } private boolean verifyRolesAllowed(RolesAllowed rolesAllowed) { boolean allowed = false; if (request.getUserPrincipal() != null) { String[] roles = rolesAllowed.value(); for (String role : roles) { allowed = request.isUserInRole(role); if (allowed) { break; } } } return allowed; } } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)