fix: guard against nil session storage

This commit is contained in:
jamesread 2025-10-25 00:22:28 +01:00
parent aa8322c354
commit 0dd9e9b2b7
1 changed files with 22 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import (
"time" "time"
"github.com/OliveTin/OliveTin/internal/config" "github.com/OliveTin/OliveTin/internal/config"
"github.com/sirupsen/logrus"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )
@ -86,29 +87,50 @@ func LoadUserSessions(cfg *config.Config) {
data, err := os.ReadFile(cfg.GetDir() + "/sessions.yaml") data, err := os.ReadFile(cfg.GetDir() + "/sessions.yaml")
if err != nil { if err != nil {
logrus.WithError(err).Warn("Failed to read sessions.yaml file")
// Initialize empty session storage if file doesn't exist
if sessionStorage == nil {
sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider),
}
}
return return
} }
err = yaml.Unmarshal(data, &sessionStorage) err = yaml.Unmarshal(data, &sessionStorage)
if err != nil { if err != nil {
logrus.WithError(err).Error("Failed to unmarshal sessions.yaml")
// Initialize empty session storage if unmarshal fails
if sessionStorage == nil {
sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider),
}
}
return return
} }
// Ensure sessionStorage and Providers are properly initialized
if sessionStorage == nil { if sessionStorage == nil {
sessionStorage = &SessionStorage{ sessionStorage = &SessionStorage{
Providers: make(map[string]*SessionProvider), Providers: make(map[string]*SessionProvider),
} }
} }
if sessionStorage.Providers == nil {
sessionStorage.Providers = make(map[string]*SessionProvider)
}
} }
func saveUserSessions(cfg *config.Config) { func saveUserSessions(cfg *config.Config) {
out, err := yaml.Marshal(sessionStorage) out, err := yaml.Marshal(sessionStorage)
if err != nil { if err != nil {
logrus.WithError(err).Error("Failed to marshal session storage")
return return
} }
err = os.WriteFile(cfg.GetDir()+"/sessions.yaml", out, 0600) err = os.WriteFile(cfg.GetDir()+"/sessions.yaml", out, 0600)
if err != nil { if err != nil {
logrus.WithError(err).Error("Failed to write sessions.yaml file")
return return
} }
} }