finish session getting code

This commit is contained in:
Gregory Wells
2026-06-07 20:27:42 -04:00
parent 78d259ea3b
commit 5386b64648
3 changed files with 19 additions and 10 deletions
+1
View File
@@ -5,3 +5,4 @@ import "errors"
var ErrSessionNotFound = errors.New("session not found")
var ErrSessionAlreadyExists = errors.New("session already exists")
var ErrSessionExpired = errors.New("session expired")
var ErrSessionBackend = errors.New("session backend")
+15 -7
View File
@@ -2,6 +2,8 @@ package session
import (
"context"
"encoding/json"
"time"
"astraltech.xyz/accountmanager/src/logging"
"github.com/redis/go-redis/v9"
@@ -45,19 +47,25 @@ func (m *RedisStore) Create(sessionID string, session *SessionData) (err error)
func (m *RedisStore) Get(sessionID string) (*SessionData, error) {
hashed := hashSession(sessionID)
_, err := m.client.Get(m.ctx, hashed).Result()
data, err := m.client.Get(m.ctx, hashed).Bytes()
if err == redis.Nil {
return nil, ErrSessionNotFound
} else if err != nil {
logging.Error(err.Error())
return nil, ErrSessionBackend
}
// if time.Now().After(data.ExpiresAt) {
// _ = m.Delete(sessionID) // ignore error
// return nil, ErrSessionExpired
// }
// copy := *data
return nil, nil
var session_data SessionData
if err := json.Unmarshal(data, &session_data); err != nil {
logging.Error(err.Error())
return nil, ErrSessionBackend
}
if time.Now().After(session_data.ExpiresAt) {
_ = m.Delete(sessionID)
return nil, ErrSessionBackend
}
return &session_data, nil
}
func (m *RedisStore) Update(sessionID string, session *SessionData) error {
return nil
+3 -3
View File
@@ -3,9 +3,9 @@ package session
import "time"
type SessionData struct {
UserID string
CSRFToken string
ExpiresAt time.Time
UserID string `json:"userid"`
CSRFToken string `json:"csrftoken"`
ExpiresAt time.Time `json:"expiresat"`
}
type SessionStore interface {