begin handling cleanup of session tokens

This commit is contained in:
Gregory Wells
2026-06-08 18:37:42 -04:00
parent 2a97ec72be
commit d162c32a57
2 changed files with 41 additions and 19 deletions
+23 -1
View File
@@ -7,6 +7,7 @@ import (
"astraltech.xyz/accountmanager/src/logging"
"astraltech.xyz/accountmanager/src/store"
"astraltech.xyz/accountmanager/src/worker"
)
const SessionCookieName = "session_token"
@@ -37,7 +38,11 @@ func (manager *SessionManager) SetStoreType(storeType StoreType) {
switch storeType {
case InMemory:
{
// manager.store = NewMemoryStore()
manager.store = store.NewMemoryStore[*SessionData]()
worker.CreateWorker(time.Minute*5, func() {
inMemStore, _ := manager.store.(*store.MemoryStore[*SessionData])
cleanupInMemoryStore(inMemStore)
})
break
}
case Redis:
@@ -98,6 +103,23 @@ func (manager *SessionManager) GetSession(r *http.Request) (*SessionData, error)
return data, nil
}
func cleanupInMemoryStore(m *store.MemoryStore[*SessionData]) {
logging.Debug("Cleaning up memory store sessions")
now := time.Now()
m.Lock.Lock()
defer m.Lock.Unlock()
deleted := 0
for id, session := range m.Sessions {
if now.After(session.ExpiresAt) {
delete(m.Sessions, id)
deleted = deleted + 1
}
}
logging.Infof("Cleaned up %d stale sessions", deleted)
}
func (manager *SessionManager) DeleteSession(sessionId string) error {
return manager.store.Delete(sessionId)
}