fixed session
This commit is contained in:
parent
4221587d5b
commit
6e4886b35e
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,3 +9,4 @@ target
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
*.log
|
*.log
|
||||||
plans
|
plans
|
||||||
|
.codex
|
||||||
@ -178,8 +178,8 @@ public class HttpServerApplication {
|
|||||||
|
|
||||||
List<SearchResultItem> results = forumRepository.searchMessages(userId, searchText, forumId);
|
List<SearchResultItem> results = forumRepository.searchMessages(userId, searchText, forumId);
|
||||||
|
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
|
|
||||||
Responses.html(ctx.exchange(), 200, Pages.searchResultsPage(
|
Responses.html(ctx.exchange(), 200, Pages.searchResultsPage(
|
||||||
@ -336,8 +336,8 @@ public class HttpServerApplication {
|
|||||||
forumRepository.putHistoryRecord(userId, 0L);
|
forumRepository.putHistoryRecord(userId, 0L);
|
||||||
List<ForumSummary> forums = forumRepository.listActiveForums();
|
List<ForumSummary> forums = forumRepository.listActiveForums();
|
||||||
Map<Long, Integer> newCounts = forumRepository.getNewMessagesCountByUserId(userId);
|
Map<Long, Integer> newCounts = forumRepository.getNewMessagesCountByUserId(userId);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(ctx.exchange(), 200, Pages.forumPage(username, forums, newCounts, loggedUsersCount, loggedUsers, pmStats));
|
Responses.html(ctx.exchange(), 200, Pages.forumPage(username, forums, newCounts, loggedUsersCount, loggedUsers, pmStats));
|
||||||
});
|
});
|
||||||
@ -356,8 +356,8 @@ public class HttpServerApplication {
|
|||||||
String soundSetting = (soundRaw == null) ? "soundon" : String.valueOf(soundRaw);
|
String soundSetting = (soundRaw == null) ? "soundon" : String.valueOf(soundRaw);
|
||||||
String error = (String) session.getAttribute(MEMBER_ERROR_KEY);
|
String error = (String) session.getAttribute(MEMBER_ERROR_KEY);
|
||||||
session.setAttribute(MEMBER_ERROR_KEY, null);
|
session.setAttribute(MEMBER_ERROR_KEY, null);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(
|
Responses.html(
|
||||||
ctx.exchange(),
|
ctx.exchange(),
|
||||||
@ -383,8 +383,8 @@ public class HttpServerApplication {
|
|||||||
session.setAttribute(CURRENT_PAGE_KEY, "chat");
|
session.setAttribute(CURRENT_PAGE_KEY, "chat");
|
||||||
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
||||||
long userId = parseLong(session.getAttribute(AUTH_USER_ID_KEY), -1L);
|
long userId = parseLong(session.getAttribute(AUTH_USER_ID_KEY), -1L);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(ctx.exchange(), 200, Pages.chatPage(username, loggedUsersCount, loggedUsers, pmStats));
|
Responses.html(ctx.exchange(), 200, Pages.chatPage(username, loggedUsersCount, loggedUsers, pmStats));
|
||||||
});
|
});
|
||||||
@ -423,8 +423,8 @@ public class HttpServerApplication {
|
|||||||
List<PrivateThreadSummary> threads = totalRows == 0 ? List.of() : allThreads.subList(fromIdx, toIdx);
|
List<PrivateThreadSummary> threads = totalRows == 0 ? List.of() : allThreads.subList(fromIdx, toIdx);
|
||||||
int rowsFrom = totalRows == 0 ? 0 : fromIdx + 1;
|
int rowsFrom = totalRows == 0 ? 0 : fromIdx + 1;
|
||||||
int rowsTo = toIdx;
|
int rowsTo = toIdx;
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(
|
Responses.html(
|
||||||
ctx.exchange(),
|
ctx.exchange(),
|
||||||
@ -494,8 +494,8 @@ public class HttpServerApplication {
|
|||||||
String toUsername = privateMessageRepository.usernameById(toUser);
|
String toUsername = privateMessageRepository.usernameById(toUser);
|
||||||
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
||||||
session.setAttribute(PM_ERROR_KEY, null);
|
session.setAttribute(PM_ERROR_KEY, null);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(ctx.exchange(), 200, Pages.newPmPage(username, toUser, toUsername, error, loggedUsersCount, loggedUsers, pmStats));
|
Responses.html(ctx.exchange(), 200, Pages.newPmPage(username, toUser, toUsername, error, loggedUsersCount, loggedUsers, pmStats));
|
||||||
});
|
});
|
||||||
@ -511,8 +511,8 @@ public class HttpServerApplication {
|
|||||||
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
String username = String.valueOf(session.getAttribute(AUTH_USER_KEY));
|
||||||
String error = valueOrDefault((String) session.getAttribute(NEW_THREAD_ERROR_KEY), "");
|
String error = valueOrDefault((String) session.getAttribute(NEW_THREAD_ERROR_KEY), "");
|
||||||
session.setAttribute(NEW_THREAD_ERROR_KEY, null);
|
session.setAttribute(NEW_THREAD_ERROR_KEY, null);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(ctx.exchange(), 200, Pages.newThreadPage(username, error, loggedUsersCount, loggedUsers, pmStats));
|
Responses.html(ctx.exchange(), 200, Pages.newThreadPage(username, error, loggedUsersCount, loggedUsers, pmStats));
|
||||||
});
|
});
|
||||||
@ -607,8 +607,8 @@ public class HttpServerApplication {
|
|||||||
int rowsTo = toIdx;
|
int rowsTo = toIdx;
|
||||||
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
String error = valueOrDefault((String) session.getAttribute(PM_ERROR_KEY), "");
|
||||||
session.setAttribute(PM_ERROR_KEY, null);
|
session.setAttribute(PM_ERROR_KEY, null);
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(
|
Responses.html(
|
||||||
ctx.exchange(),
|
ctx.exchange(),
|
||||||
@ -791,8 +791,8 @@ public class HttpServerApplication {
|
|||||||
}
|
}
|
||||||
ForumDisplayView view = paginate(filtered, pageNo, perPage, searchText, showType, showImg, sortBy, sortType);
|
ForumDisplayView view = paginate(filtered, pageNo, perPage, searchText, showType, showImg, sortBy, sortType);
|
||||||
|
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
MessageRenderSettings renderSettings = settingsRepository.loadMessageRenderSettings();
|
MessageRenderSettings renderSettings = settingsRepository.loadMessageRenderSettings();
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(
|
Responses.html(
|
||||||
@ -1315,8 +1315,8 @@ public class HttpServerApplication {
|
|||||||
tableName = "";
|
tableName = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
int loggedUsersCount = sessionManager.countSessionsWithAttribute(AUTH_USER_KEY);
|
int loggedUsersCount = sessionManager.countDistinctAttributeValues(AUTH_USER_KEY);
|
||||||
List<String> loggedUsers = sessionManager.sessionAttributeValues(AUTH_USER_KEY);
|
List<String> loggedUsers = sessionManager.distinctSessionAttributeValues(AUTH_USER_KEY);
|
||||||
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
PrivateMessageStats pmStats = privateMessageRepository.stats(userId);
|
||||||
Responses.html(
|
Responses.html(
|
||||||
ctx.exchange(),
|
ctx.exchange(),
|
||||||
|
|||||||
@ -2,8 +2,10 @@ package cz.kamma.fabka.session;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@ -75,6 +77,26 @@ public class SessionManager {
|
|||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int countDistinctAttributeValues(String attributeKey) {
|
||||||
|
return distinctSessionAttributeValues(attributeKey).size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> distinctSessionAttributeValues(String attributeKey) {
|
||||||
|
cleanupExpired();
|
||||||
|
Set<String> values = new LinkedHashSet<>();
|
||||||
|
for (SessionData session : sessions.values()) {
|
||||||
|
Object value = session.getAttribute(attributeKey);
|
||||||
|
if (value == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String asString = String.valueOf(value).trim();
|
||||||
|
if (!asString.isBlank()) {
|
||||||
|
values.add(asString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ArrayList<>(values);
|
||||||
|
}
|
||||||
|
|
||||||
public List<SessionData> activeSessions() {
|
public List<SessionData> activeSessions() {
|
||||||
cleanupExpired();
|
cleanupExpired();
|
||||||
return new ArrayList<>(sessions.values());
|
return new ArrayList<>(sessions.values());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user