update session stores to decide TTLs
This commit is contained in:
@@ -7,7 +7,6 @@ import (
|
||||
|
||||
"astraltech.xyz/accountmanager/src/logging"
|
||||
"astraltech.xyz/accountmanager/src/store"
|
||||
"astraltech.xyz/accountmanager/src/worker"
|
||||
)
|
||||
|
||||
const SessionCookieName = "session_token"
|
||||
@@ -39,10 +38,10 @@ func (manager *SessionManager) SetStoreType(storeType StoreType, params ...any)
|
||||
case InMemory:
|
||||
{
|
||||
manager.store = store.NewMemoryStore[*SessionData]()
|
||||
worker.CreateWorker(time.Minute*5, func() {
|
||||
inMemStore, _ := manager.store.(*store.MemoryStore[*SessionData])
|
||||
cleanupInMemoryStore(inMemStore)
|
||||
})
|
||||
// worker.CreateWorker(time.Minute*5, func() {
|
||||
// inMemStore, _ := manager.store.(*store.MemoryStore[*SessionData])
|
||||
// cleanupInMemoryStore(inMemStore)
|
||||
// })
|
||||
break
|
||||
}
|
||||
case Redis:
|
||||
@@ -70,7 +69,7 @@ func (manager *SessionManager) CreateSession(userID string) (cookie *http.Cookie
|
||||
CSRFToken: CSRFToken,
|
||||
ExpiresAt: time.Now().Add(time.Hour),
|
||||
}
|
||||
err = manager.store.Create(token, &newSessionData)
|
||||
err = manager.store.CreateExpiring(token, &newSessionData, time.Hour)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -110,22 +109,22 @@ 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()
|
||||
// func cleanupInMemoryStore(m *store.MemoryStore[*SessionData]) {
|
||||
// logging.Debug("Cleaning up memory store sessions")
|
||||
// now := time.Now()
|
||||
|
||||
m.Lock.Lock()
|
||||
defer m.Lock.Unlock()
|
||||
// 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)
|
||||
}
|
||||
// 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)
|
||||
|
||||
Reference in New Issue
Block a user