make session manager a singleton
This commit is contained in:
@@ -2,6 +2,7 @@ package session
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"astraltech.xyz/accountmanager/src/logging"
|
"astraltech.xyz/accountmanager/src/logging"
|
||||||
@@ -13,6 +14,9 @@ type SessionManager struct {
|
|||||||
store SessionStore
|
store SessionStore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var instance *SessionManager
|
||||||
|
var once sync.Once
|
||||||
|
|
||||||
type StoreType int
|
type StoreType int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -20,15 +24,17 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func CreateSessionManager(storeType StoreType) *SessionManager {
|
func CreateSessionManager(storeType StoreType) *SessionManager {
|
||||||
sessionManager := SessionManager{}
|
once.Do(func() {
|
||||||
|
instance = &SessionManager{}
|
||||||
switch storeType {
|
switch storeType {
|
||||||
case InMemory:
|
case InMemory:
|
||||||
{
|
{
|
||||||
sessionManager.store = NewMemoryStore()
|
instance.store = NewMemoryStore()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &sessionManager
|
})
|
||||||
|
return instance
|
||||||
}
|
}
|
||||||
|
|
||||||
func (manager *SessionManager) CreateSession(userID string) (cookie *http.Cookie, err error) {
|
func (manager *SessionManager) CreateSession(userID string) (cookie *http.Cookie, err error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user