From db3a3a10e372c548b9913b6915b1a9f99a8c8a77 Mon Sep 17 00:00:00 2001 From: Aaron L Date: Wed, 27 Jun 2018 10:58:53 -0700 Subject: [PATCH] Add context.Context to RememberingServerStorer --- CHANGELOG.md | 6 ++++++ authboss.go | 2 +- internal/mocks/mocks.go | 6 +++--- mocks_test.go | 6 +++--- remember/remember.go | 8 ++++---- storage.go | 6 +++--- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78de0a8..dc91d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [2.0.0-rc4] - 2018-06-27 + +### Changed + +- RememberingServerStorer now has context on its methods + ## [2.0.0-rc3] - 2018-05-25 ### Changed diff --git a/authboss.go b/authboss.go index 9b7e2f0..f5345e8 100644 --- a/authboss.go +++ b/authboss.go @@ -74,7 +74,7 @@ func (a *Authboss) UpdatePassword(ctx context.Context, user AuthableUser, newPas return nil } - return rmStorer.DelRememberTokens(user.GetPID()) + return rmStorer.DelRememberTokens(ctx, user.GetPID()) } // Middleware prevents someone from accessing a route by returning a 404 if they are not logged in. diff --git a/internal/mocks/mocks.go b/internal/mocks/mocks.go index 2312fe6..76d3f6c 100644 --- a/internal/mocks/mocks.go +++ b/internal/mocks/mocks.go @@ -260,20 +260,20 @@ func (s *ServerStorer) LoadByRecoverSelector(ctx context.Context, selector strin } // AddRememberToken for remember me -func (s *ServerStorer) AddRememberToken(key, token string) error { +func (s *ServerStorer) AddRememberToken(ctx context.Context, key, token string) error { arr := s.RMTokens[key] s.RMTokens[key] = append(arr, token) return nil } // DelRememberTokens for a user -func (s *ServerStorer) DelRememberTokens(key string) error { +func (s *ServerStorer) DelRememberTokens(ctx context.Context, key string) error { delete(s.RMTokens, key) return nil } // UseRememberToken if it exists, deleting it in the process -func (s *ServerStorer) UseRememberToken(givenKey, token string) (err error) { +func (s *ServerStorer) UseRememberToken(ctx context.Context, givenKey, token string) (err error) { arr, ok := s.RMTokens[givenKey] if !ok { return authboss.ErrTokenNotFound diff --git a/mocks_test.go b/mocks_test.go index 7054bbd..3b57a6c 100644 --- a/mocks_test.go +++ b/mocks_test.go @@ -65,17 +65,17 @@ func (m *mockServerStorer) Save(ctx context.Context, user User) error { return nil } -func (m *mockServerStorer) AddRememberToken(pid, token string) error { +func (m *mockServerStorer) AddRememberToken(ctx context.Context, pid, token string) error { m.Tokens[pid] = append(m.Tokens[pid], token) return nil } -func (m *mockServerStorer) DelRememberTokens(pid string) error { +func (m *mockServerStorer) DelRememberTokens(ctx context.Context, pid string) error { delete(m.Tokens, pid) return nil } -func (m *mockServerStorer) UseRememberToken(pid, token string) error { +func (m *mockServerStorer) UseRememberToken(ctx context.Context, pid, token string) error { arr, ok := m.Tokens[pid] if !ok { return ErrTokenNotFound diff --git a/remember/remember.go b/remember/remember.go index 690dd7d..279a488 100644 --- a/remember/remember.go +++ b/remember/remember.go @@ -58,7 +58,7 @@ func (r *Remember) RememberAfterAuth(w http.ResponseWriter, req *http.Request, h } storer := authboss.EnsureCanRemember(r.Authboss.Config.Storage.Server) - if err = storer.AddRememberToken(user.GetPID(), hash); err != nil { + if err = storer.AddRememberToken(req.Context(), user.GetPID(), hash); err != nil { return false, err } @@ -119,7 +119,7 @@ func Authenticate(ab *authboss.Authboss, w http.ResponseWriter, req **http.Reque hash := base64.StdEncoding.EncodeToString(sum[:]) storer := authboss.EnsureCanRemember(ab.Config.Storage.Server) - err = storer.UseRememberToken(pid, hash) + err = storer.UseRememberToken((*req).Context(), pid, hash) switch { case err == authboss.ErrTokenNotFound: logger.Infof("remember me cookie had a token that was not in storage, deleting cookie") @@ -134,7 +134,7 @@ func Authenticate(ab *authboss.Authboss, w http.ResponseWriter, req **http.Reque return err } - if err = storer.AddRememberToken(pid, hash); err != nil { + if err = storer.AddRememberToken((*req).Context(), pid, hash); err != nil { return errors.Wrap(err, "failed to save remember me token") } @@ -163,7 +163,7 @@ func (r *Remember) AfterPasswordReset(w http.ResponseWriter, req *http.Request, logger.Infof("deleting tokens and rm cookies for user %s due to password reset", pid) - return false, storer.DelRememberTokens(pid) + return false, storer.DelRememberTokens(req.Context(), pid) } // GenerateToken creates a remember me token diff --git a/storage.go b/storage.go index 459577b..60a8a6e 100644 --- a/storage.go +++ b/storage.go @@ -99,12 +99,12 @@ type RememberingServerStorer interface { ServerStorer // AddRememberToken to a user - AddRememberToken(pid, token string) error + AddRememberToken(ctx context.Context, pid, token string) error // DelRememberTokens removes all tokens for the given pid - DelRememberTokens(pid string) error + DelRememberTokens(ctx context.Context, pid string) error // UseRememberToken finds the pid-token pair and deletes it. // If the token could not be found return ErrTokenNotFound - UseRememberToken(pid, token string) error + UseRememberToken(ctx context.Context, pid, token string) error } // EnsureCanCreate makes sure the server storer supports create operations