From e1a3940e8e83cfa0653ba1fd9b3dec095311cabc Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 26 Jul 2013 08:25:22 +0200 Subject: [PATCH] clear authorization cache, when a group has changed --- .../scm/security/AuthorizationCollector.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java index 0274467610..e29cf7eaf0 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java +++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java @@ -30,6 +30,7 @@ */ + package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- @@ -55,6 +56,7 @@ import org.slf4j.LoggerFactory; import sonia.scm.cache.Cache; import sonia.scm.cache.CacheManager; +import sonia.scm.group.GroupEvent; import sonia.scm.group.GroupNames; import sonia.scm.repository.PermissionType; import sonia.scm.repository.Repository; @@ -205,8 +207,27 @@ public class AuthorizationCollector * Method description * * - * @param user - * @param groups + * @param event + */ + @Subscribe + public void onEvent(GroupEvent event) + { + if (event.getEventType().isPost()) + { + if (logger.isDebugEnabled()) + { + logger.debug("clear cache, because group {} has changed", + event.getItem().getId()); + } + + cache.clear(); + } + } + + /** + * Method description + * + * * * @param principals * @@ -252,7 +273,6 @@ public class AuthorizationCollector * @param user * @param groups * - * @return */ private void collectGlobalPermissions(Builder builder, final User user, final GroupNames groups) @@ -299,7 +319,6 @@ public class AuthorizationCollector * @param user * @param groups * - * @return */ private void collectRepositoryPermissions(Builder builder, User user, GroupNames groups) @@ -320,7 +339,6 @@ public class AuthorizationCollector * Method description * * - * @param permissions * * @param builder * @param repository