|
|
|
|
@ -4,6 +4,7 @@ package memory
|
|
|
|
|
import ( |
|
|
|
|
"strings" |
|
|
|
|
"sync" |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
"github.com/coreos/dex/storage" |
|
|
|
|
) |
|
|
|
|
@ -51,6 +52,24 @@ func (s *memStorage) tx(f func()) {
|
|
|
|
|
|
|
|
|
|
func (s *memStorage) Close() error { return nil } |
|
|
|
|
|
|
|
|
|
func (s *memStorage) GarbageCollect(now time.Time) (result storage.GCResult, err error) { |
|
|
|
|
s.tx(func() { |
|
|
|
|
for id, a := range s.authCodes { |
|
|
|
|
if now.After(a.Expiry) { |
|
|
|
|
delete(s.authCodes, id) |
|
|
|
|
result.AuthCodes++ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for id, a := range s.authReqs { |
|
|
|
|
if now.After(a.Expiry) { |
|
|
|
|
delete(s.authReqs, id) |
|
|
|
|
result.AuthRequests++ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
return result, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *memStorage) CreateClient(c storage.Client) (err error) { |
|
|
|
|
s.tx(func() { |
|
|
|
|
if _, ok := s.clients[c.ID]; ok { |
|
|
|
|
@ -240,29 +259,6 @@ func (s *memStorage) GetAuthCode(id string) (c storage.AuthCode, err error) {
|
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *memStorage) ClaimCode(id string) (err error) { |
|
|
|
|
s.tx(func() { |
|
|
|
|
if _, ok := s.authCodes[id]; !ok { |
|
|
|
|
err = storage.ErrNotFound |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
delete(s.authCodes, id) |
|
|
|
|
}) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *memStorage) ClaimRefresh(refreshToken string) (token storage.RefreshToken, err error) { |
|
|
|
|
s.tx(func() { |
|
|
|
|
var ok bool |
|
|
|
|
if token, ok = s.refreshTokens[refreshToken]; !ok { |
|
|
|
|
err = storage.ErrNotFound |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
delete(s.refreshTokens, refreshToken) |
|
|
|
|
}) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *memStorage) UpdateClient(id string, updater func(old storage.Client) (storage.Client, error)) (err error) { |
|
|
|
|
s.tx(func() { |
|
|
|
|
client, ok := s.clients[id] |
|
|
|
|
|