finish session getting code
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
Reference in New Issue
Block a user