package helpers import ( "crypto/rand" "encoding/hex" "time" "git.readonly.ch/bouzoure/pop-camarades/models" "github.com/google/uuid" ) func CreateSavedSession(userid uint) (models.UserSavedSession, string, error) { var savedSession models.UserSavedSession db, err := GetDatabase() if err != nil { return savedSession, "", err } secret := GenerateSecureToken(30) hashedSecret, err := HashPassword(secret) if err != nil { return savedSession, "", err } now := time.Now() expiration := now.AddDate(0, 0, 30) savedSession.UserID = userid savedSession.UUID = uuid.NewString() savedSession.Secret = hashedSecret savedSession.Expiration = expiration db.Create(&savedSession) return savedSession, secret, nil } func RemoveSavedSession(uuid string) error { db, err := GetDatabase() if err != nil { return err } db.Delete(&models.UserSavedSession{}, "uuid = ?", uuid) return nil } func GenerateSecureToken(length int) string { b := make([]byte, length) if _, err := rand.Read(b); err != nil { return "" } return hex.EncodeToString(b) }