fix: guard against nil session storage
This commit is contained in:
parent
aa8322c354
commit
0dd9e9b2b7
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue