113 lines
1.9 KiB
Go

package auth
import (
"dk/internal/router"
"dk/internal/session"
)
func SetFlashMessage(ctx router.Ctx, msgType, message string) bool {
sessionID := GetSessionCookie(ctx)
if sessionID == "" {
return false
}
sess, exists := Manager.GetSession(sessionID)
if !exists {
return false
}
sess.SetFlash("message", session.FlashMessage{
Type: msgType,
Message: message,
})
Manager.store.Save(sess)
return true
}
func GetFlashMessage(ctx router.Ctx) *session.FlashMessage {
sessionID := GetSessionCookie(ctx)
if sessionID == "" {
return nil
}
sess, exists := Manager.GetSession(sessionID)
if !exists {
return nil
}
value, exists := sess.GetFlash("message")
if !exists {
return nil
}
Manager.store.Save(sess)
if msg, ok := value.(session.FlashMessage); ok {
return &msg
}
if msgMap, ok := value.(map[string]interface{}); ok {
msg := &session.FlashMessage{}
if t, ok := msgMap["type"].(string); ok {
msg.Type = t
}
if m, ok := msgMap["message"].(string); ok {
msg.Message = m
}
return msg
}
return nil
}
func SetFormData(ctx router.Ctx, data map[string]string) bool {
sessionID := GetSessionCookie(ctx)
if sessionID == "" {
return false
}
sess, exists := Manager.GetSession(sessionID)
if !exists {
return false
}
sess.Set("form_data", data)
Manager.store.Save(sess)
return true
}
func GetFormData(ctx router.Ctx) map[string]string {
sessionID := GetSessionCookie(ctx)
if sessionID == "" {
return nil
}
sess, exists := Manager.GetSession(sessionID)
if !exists {
return nil
}
value, exists := sess.Get("form_data")
if !exists {
return nil
}
sess.Delete("form_data")
Manager.store.Save(sess)
if formData, ok := value.(map[string]string); ok {
return formData
}
if formMap, ok := value.(map[string]interface{}); ok {
result := make(map[string]string)
for k, v := range formMap {
if str, ok := v.(string); ok {
result[k] = str
}
}
return result
}
return nil
}