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