Skip to content
Snippets Groups Projects
Commit b3cfbcb0 authored by Christian Pointner's avatar Christian Pointner
Browse files

sessions.insert() vs session.new()

parent 53707b82
No related branches found
No related tags found
No related merge requests found
...@@ -192,13 +192,10 @@ func TestAuthBearerToken(t *testing.T) { ...@@ -192,13 +192,10 @@ func TestAuthBearerToken(t *testing.T) {
t.Fatalf("authentication should be enabled but Init created no session manager") t.Fatalf("authentication should be enabled but Init created no session manager")
} }
s, err := NewSession() s, err := auth.sessions.new()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
if err = auth.sessions.insert(s); err != nil {
t.Fatalf("unexpected error: %v", err)
}
router := mux.NewRouter() router := mux.NewRouter()
InstallHTTPHandler(router) InstallHTTPHandler(router)
...@@ -242,13 +239,10 @@ func TestAuthWaitForLogin(t *testing.T) { ...@@ -242,13 +239,10 @@ func TestAuthWaitForLogin(t *testing.T) {
t.Fatalf("authentication should be enabled but Init created no session manager") t.Fatalf("authentication should be enabled but Init created no session manager")
} }
s, err := NewSession() s, err := auth.sessions.new()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
if err = auth.sessions.insert(s); err != nil {
t.Fatalf("unexpected error: %v", err)
}
router := mux.NewRouter() router := mux.NewRouter()
InstallHTTPHandler(router) InstallHTTPHandler(router)
...@@ -313,13 +307,10 @@ func TestAuthDeleteSession(t *testing.T) { ...@@ -313,13 +307,10 @@ func TestAuthDeleteSession(t *testing.T) {
t.Fatalf("authentication should be enabled but Init created no session manager") t.Fatalf("authentication should be enabled but Init created no session manager")
} }
s, err := NewSession() s, err := auth.sessions.new()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
if err = auth.sessions.insert(s); err != nil {
t.Fatalf("unexpected error: %v", err)
}
router := mux.NewRouter() router := mux.NewRouter()
InstallHTTPHandler(router) InstallHTTPHandler(router)
...@@ -358,13 +349,10 @@ func TestAuthMiddleware(t *testing.T) { ...@@ -358,13 +349,10 @@ func TestAuthMiddleware(t *testing.T) {
t.Fatalf("authentication should be enabled but Init created no session manager") t.Fatalf("authentication should be enabled but Init created no session manager")
} }
s, err := NewSession() s, err := auth.sessions.new()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
if err = auth.sessions.insert(s); err != nil {
t.Fatalf("unexpected error: %v", err)
}
router := mux.NewRouter() router := mux.NewRouter()
InstallHTTPHandler(router) InstallHTTPHandler(router)
......
...@@ -51,9 +51,7 @@ func (s *OIDCSession) refresh(ctx context.Context) (*Session, error) { ...@@ -51,9 +51,7 @@ func (s *OIDCSession) refresh(ctx context.Context) (*Session, error) {
return nil, errors.New("fetching OIDC UserInfo failed: " + err.Error()) return nil, errors.New("fetching OIDC UserInfo failed: " + err.Error())
} }
// TOOD: if we later use sessions.update() it is overkill generate newS, err := &Session{}, nil // NewSession()
// a whole new session...
newS, err := NewSession()
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -138,15 +136,15 @@ func (b *OIDCBackend) NewOIDCSession(ctx context.Context, arguments json.RawMess ...@@ -138,15 +136,15 @@ func (b *OIDCBackend) NewOIDCSession(ctx context.Context, arguments json.RawMess
} }
s.setState(SessionStateLoggedIn) s.setState(SessionStateLoggedIn)
} else { } else {
if s, err = NewSession(); err != nil { // if s, err = NewSession(); err != nil {
return // return
} // }
} }
s.oidc = os s.oidc = os
if err = auth.sessions.insert(s); err != nil { // if err = auth.sessions.insert(s); err != nil {
return nil, err // return nil, err
} // }
if s.State() != SessionStateLoggedIn { if s.State() != SessionStateLoggedIn {
time.AfterFunc(b.loginTimeout, func() { time.AfterFunc(b.loginTimeout, func() {
......
...@@ -97,19 +97,6 @@ type Session struct { ...@@ -97,19 +97,6 @@ type Session struct {
Shows []string `json:"shows"` Shows []string `json:"shows"`
} }
func NewSession() (s *Session, err error) {
s = &Session{}
if s.id, err = generateRandomString(16); err != nil {
return
}
if s.secret, err = generateRandomString(32); err != nil {
return
}
s.state = SessionStateNew
s.ctx = context.Background()
return
}
var ( var (
anonAllowNone = &Session{Username: "anonymous", ReadOnly: false, AllShows: false, Shows: []string{}} anonAllowNone = &Session{Username: "anonymous", ReadOnly: false, AllShows: false, Shows: []string{}}
anonAllowAll = &Session{Username: "anonymous", ReadOnly: false, AllShows: true, Shows: []string{}} anonAllowAll = &Session{Username: "anonymous", ReadOnly: false, AllShows: true, Shows: []string{}}
...@@ -280,10 +267,19 @@ func (sm *SessionManager) runMaintenance() { ...@@ -280,10 +267,19 @@ func (sm *SessionManager) runMaintenance() {
} }
} }
func (sm *SessionManager) insert(s *Session) (err error) { func (sm *SessionManager) new() (s *Session, err error) {
sm.mutex.Lock() sm.mutex.Lock()
defer sm.mutex.Unlock() defer sm.mutex.Unlock()
s.ctx, s.cancel = context.WithTimeout(s.ctx, sm.maxAge)
s = &Session{}
if s.id, err = generateRandomString(16); err != nil {
return
}
if s.secret, err = generateRandomString(32); err != nil {
return
}
s.state = SessionStateNew
s.ctx, s.cancel = context.WithTimeout(context.Background(), sm.maxAge)
sm.sessions[s.id] = s sm.sessions[s.id] = s
auth.dbgLog.Printf("authentication: added new session %s", s.id) auth.dbgLog.Printf("authentication: added new session %s", s.id)
return return
......
...@@ -52,14 +52,10 @@ func TestSessionExpiry(t *testing.T) { ...@@ -52,14 +52,10 @@ func TestSessionExpiry(t *testing.T) {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
s1, err := NewSession() s1, err := sm.new()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
s1.Username = "test"
if err = sm.insert(s1); err != nil {
t.Fatalf("unexpected error: %v", err)
}
s2 := sm.get(s1.ID()) s2 := sm.get(s1.ID())
if s2 == nil { if s2 == nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment