1
0
mirror of https://github.com/volatiletech/authboss.git synced 2025-02-03 13:21:22 +02:00

Add context.Context to RememberingServerStorer

This commit is contained in:
Aaron L 2018-06-27 10:58:53 -07:00
parent ea27d16052
commit db3a3a10e3
6 changed files with 20 additions and 14 deletions

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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