41 lines
790 B
Go
41 lines
790 B
Go
|
package session
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
// Used to maintain a cache of user specific jwt secrets
|
||
|
// This will prevent DB lookups on every request
|
||
|
// May not actually be needed. Refresh Token is the only
|
||
|
// token that will require proactive DB lookups.
|
||
|
type SessionManager struct {
|
||
|
mutex sync.Mutex
|
||
|
values map[string]string
|
||
|
}
|
||
|
|
||
|
func NewMgr() *SessionManager {
|
||
|
return &SessionManager{}
|
||
|
}
|
||
|
|
||
|
func (sm *SessionManager) Set(key, value string) {
|
||
|
sm.mutex.Lock()
|
||
|
sm.values[key] = value
|
||
|
sm.mutex.Unlock()
|
||
|
}
|
||
|
|
||
|
func (sm *SessionManager) Get(key string) string {
|
||
|
sm.mutex.Lock()
|
||
|
defer sm.mutex.Unlock()
|
||
|
return sm.values[key]
|
||
|
}
|
||
|
|
||
|
func (sm *SessionManager) Delete(key string) {
|
||
|
sm.mutex.Lock()
|
||
|
defer sm.mutex.Unlock()
|
||
|
_, exists := sm.values[key]
|
||
|
if !exists {
|
||
|
return
|
||
|
}
|
||
|
delete(sm.values, key)
|
||
|
}
|