|
|
|
@ -13,9 +13,8 @@ import (
|
|
|
|
|
// SessionService is an implementation of service.Session
|
|
|
|
|
// based on the github.com/gorilla/sessions
|
|
|
|
|
type SessionService struct { |
|
|
|
|
sessionName string |
|
|
|
|
store sessions.Store |
|
|
|
|
defaultOptions *sessions.Options |
|
|
|
|
sessionName string |
|
|
|
|
store sessions.Store |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get returns a Session associated with the given HTTP request
|
|
|
|
@ -27,26 +26,14 @@ func (s *SessionService) Get(w http.ResponseWriter, r *http.Request) (session.Se
|
|
|
|
|
return nil, errors.Wrap(err, "error while retrieving the session from the request") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if err != nil { |
|
|
|
|
defaultOptions := s.defaultOptionsCopy() |
|
|
|
|
sess.Options = &defaultOptions |
|
|
|
|
if err := sess.Save(r, w); err != nil { |
|
|
|
|
return nil, errors.Wrap(err, "error while saving session") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return NewSession(sess), nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *SessionService) defaultOptionsCopy() sessions.Options { |
|
|
|
|
return *s.defaultOptions |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NewSessionService returns a new SessionService backed
|
|
|
|
|
// by the given Store
|
|
|
|
|
func NewSessionService(sessionName string, store sessions.Store, defaultOptions *sessions.Options) *SessionService { |
|
|
|
|
func NewSessionService(sessionName string, store sessions.Store) *SessionService { |
|
|
|
|
return &SessionService{ |
|
|
|
|
sessionName: sessionName, |
|
|
|
|
store: store, |
|
|
|
|
defaultOptions: defaultOptions, |
|
|
|
|
sessionName: sessionName, |
|
|
|
|
store: store, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|