Skip to content

Commit 46f8b58

Browse files
committed
[breaking] sessions - Clearing restx principal cache when logging out, thus allowing to refresh principal roles on his next authentication.
This fixes #260
1 parent 316c3f4 commit 46f8b58

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

restx-security-basic/src/main/java/restx/security/SessionInvalider.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
package restx.security;
22

3+
import com.google.common.base.Optional;
34
import restx.factory.Component;
45

56
@Component
67
public class SessionInvalider {
78

8-
public SessionInvalider() {
9+
private RestxSession.Definition restxSessionDefinition;
10+
11+
public SessionInvalider(RestxSession.Definition restxSessionDefinition) {
12+
this.restxSessionDefinition = restxSessionDefinition;
913
}
1014

1115
public void invalidateSession(){
16+
// Invalidating principal cache (on next login, principal roles will be refreshed)
17+
Optional<? extends RestxPrincipal> principal = RestxSession.current().getPrincipal();
18+
if (principal.isPresent()) {
19+
restxSessionDefinition.getEntry(RestxPrincipal.SESSION_DEF_KEY).get().invalidateCacheFor(principal.get().getName());
20+
}
21+
1222
// Clearing principal
1323
RestxSession.current().clearPrincipal();
1424
RestxSession.current().define(String.class, Session.SESSION_DEF_KEY, null);

0 commit comments

Comments
 (0)