diff options
| author | Alexander Kavon <hawk@alexkavon.com> | 2023-11-30 05:21:38 -0500 |
|---|---|---|
| committer | Alexander Kavon <hawk@alexkavon.com> | 2023-11-30 05:21:38 -0500 |
| commit | ec1f49a98765800481608394af3feb5a5221110c (patch) | |
| tree | a9e1843c7b79a5c111d5fb18c7c336068479eb55 /src/sessions/sessions.go | |
| parent | 218cd643550ed00d26b6e9772d8a64875b5abf2e (diff) | |
adjusted session store to only require library and returnable session object
Diffstat (limited to 'src/sessions/sessions.go')
| -rw-r--r-- | src/sessions/sessions.go | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/src/sessions/sessions.go b/src/sessions/sessions.go index d2acab6..34fe91c 100644 --- a/src/sessions/sessions.go +++ b/src/sessions/sessions.go @@ -2,22 +2,24 @@ package sessions import ( "net/http" + "sync" "github.com/google/uuid" ) -type SessionMgr struct { - key string - Values map[string]string -} +type sessionvalues map[string]any -type session map[string]any +type Session struct { + id string + values sessionvalues + mu *sync.Mutex +} type SessionCtxKey string -var sessions map[string]session +var _sessions map[string]Session -func (sm *SessionMgr) NewSession(w http.ResponseWriter, r http.Request) { +func NewSession(w http.ResponseWriter, values map[string]any) Session { token := uuid.NewString() // set secure cookie in http.ResponseWriter @@ -27,9 +29,33 @@ func (sm *SessionMgr) NewSession(w http.ResponseWriter, r http.Request) { Value: token, }) - sessions[token] = session{ - "username": username, + // create session and store + s := Session{ + id: token, + values: sessionvalues(values), } - // set request context + _sessions[token] = s + return s +} + +func GetSession(id string) (Session, bool) { + s, ok := _sessions[id] + return s, ok +} + +func (s *Session) Id() string { + return s.id +} + +func (s *Session) Get(key string) interface{} { + s.mu.Lock() + defer s.mu.Unlock() + return s.values[key] +} +func (s *Session) Set(key string, value interface{}) bool { + s.mu.Lock() + defer s.mu.Unlock() + s.values[key] = value + return true } |
