auth
91:c1b3a36af1a7 Browse Files
Implement revoking tokens. Add a revokeToken method to tokenStore, and an implementation for memstore. All it does is set the token's Revoked property to true.
1.1 --- a/token.go Sat Dec 13 19:16:57 2014 -0500 1.2 +++ b/token.go Sat Dec 13 19:21:20 2014 -0500 1.3 @@ -42,6 +42,7 @@ 1.4 getToken(token string, refresh bool) (Token, error) 1.5 saveToken(token Token) error 1.6 removeToken(token string) error 1.7 + revokeToken(token string, refresh bool) error 1.8 getTokensByProfileID(profileID uuid.ID, num, offset int) ([]Token, error) 1.9 } 1.10 1.11 @@ -105,6 +106,25 @@ 1.12 return nil 1.13 } 1.14 1.15 +func (m *memstore) revokeToken(token string, refresh bool) error { 1.16 + if refresh { 1.17 + t, err := m.lookupTokenByRefresh(token) 1.18 + if err != nil { 1.19 + return err 1.20 + } 1.21 + token = t 1.22 + } 1.23 + m.tokenLock.Lock() 1.24 + defer m.tokenLock.Unlock() 1.25 + t, ok := m.tokens[token] 1.26 + if !ok { 1.27 + return ErrTokenNotFound 1.28 + } 1.29 + t.Revoked = true 1.30 + m.tokens[token] = t 1.31 + return nil 1.32 +} 1.33 + 1.34 func (m *memstore) getTokensByProfileID(profileID uuid.ID, num, offset int) ([]Token, error) { 1.35 ids, err := m.lookupTokensByProfileID(profileID.String()) 1.36 if err != nil {