diff --git a/identity/src/main/java/org/zstack/identity/Session.java b/identity/src/main/java/org/zstack/identity/Session.java index fdc837f2d54..2b27931beef 100755 --- a/identity/src/main/java/org/zstack/identity/Session.java +++ b/identity/src/main/java/org/zstack/identity/Session.java @@ -40,6 +40,10 @@ public class Session implements Component { private DatabaseFacade dbf; @Autowired private EventFacade evtf; + @Autowired + private PluginRegistry pluginRgty; + + private static List logoutExtensionPoints; private Future expiredSessionCollector; private static Interner sessionLock = Interners.newWeakInterner(); @@ -221,6 +225,11 @@ protected ErrorCode scripts() { } logout(s.getUuid()); + + for (LogoutExtensionPoint ext : logoutExtensionPoints) { + ext.beforeLogout(s); + } + return err(IdentityErrors.INVALID_SESSION, "Session expired"); } @@ -266,6 +275,7 @@ public boolean start() { setupGlobalConfig(); startCleanUpStaleSessionTask(); setupCanonicalEvents(); + logoutExtensionPoints = pluginRgty.getExtensionList(LogoutExtensionPoint.class); return true; }