auth

Paddy 2014-09-01 Parent:75cf37088852 Child:88523dab00a5

29:5bf0a5fd1d01 Go to Latest

auth/memstore.go

Implement GrantStore for Memstore. Fix bug in GrantStore that asks for a UUID when it really wants a string. Implement GrantStore interface in Memstore, including unit tests for successful (i.e., works-as-intended) scenarios.

History
paddy@28 1 package auth
paddy@28 2
paddy@28 3 import "sync"
paddy@28 4
paddy@28 5 type Memstore struct {
paddy@28 6 tokens map[string]Token
paddy@28 7 refreshTokenLookup map[string]string
paddy@28 8 profileTokenLookup map[string][]string
paddy@28 9 tokenLock sync.RWMutex
paddy@29 10
paddy@29 11 grants map[string]Grant
paddy@29 12 grantLock sync.RWMutex
paddy@28 13 }
paddy@28 14
paddy@28 15 func NewMemstore() *Memstore {
paddy@28 16 return &Memstore{
paddy@28 17 tokens: map[string]Token{},
paddy@28 18 refreshTokenLookup: map[string]string{},
paddy@28 19 profileTokenLookup: map[string][]string{},
paddy@29 20 grants: map[string]Grant{},
paddy@28 21 }
paddy@28 22 }
paddy@28 23
paddy@28 24 func (m *Memstore) lookupTokenByRefresh(token string) (string, error) {
paddy@28 25 m.tokenLock.RLock()
paddy@28 26 defer m.tokenLock.RUnlock()
paddy@28 27 t, ok := m.refreshTokenLookup[token]
paddy@28 28 if !ok {
paddy@28 29 return "", ErrTokenNotFound
paddy@28 30 }
paddy@28 31 return t, nil
paddy@28 32 }
paddy@28 33
paddy@28 34 func (m *Memstore) lookupTokensByProfileID(id string) ([]string, error) {
paddy@28 35 m.tokenLock.RLock()
paddy@28 36 defer m.tokenLock.RUnlock()
paddy@28 37 return m.profileTokenLookup[id], nil
paddy@28 38 }