TokenService.java
package org.entrystore.rest.springboot.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.entrystore.PrincipalManager;
import org.entrystore.rest.springboot.model.auth.SessionInfo;
import org.entrystore.rest.springboot.security.ESUserSessionDetails;
import org.springframework.security.core.session.SessionInformation;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@RequiredArgsConstructor
public class TokenService {
private final PrincipalManager principalManager;
private final AuthService authService;
public Map<String, SessionInfo> getTokens() {
Map<String, SessionInfo> tokenInfo = new HashMap<>();
List<SessionInformation> sessionsList = authService.getAllUserSessions(principalManager.getAuthenticatedUserURI(), false);
for (SessionInformation session : sessionsList) {
if (session.getPrincipal() instanceof ESUserSessionDetails esUser && esUser.getEsUser() != null) {
tokenInfo.put(session.getSessionId(), esUser.getSessionInfo());
}
}
return tokenInfo;
}
public void deleteToken(String token) {
List<SessionInformation> sessionsList = authService.getAllUserSessions(principalManager.getAuthenticatedUserURI(), false);
for (SessionInformation session : sessionsList) {
if (session.getSessionId().equals(token)) {
session.expireNow();
}
}
}
}