package middlewares import ( "fmt" "git.readonly.ch/bouzoure/popvaud-people/helpers" "git.readonly.ch/bouzoure/popvaud-people/models" "github.com/gofiber/fiber/v2" "github.com/google/uuid" ) func WelcomeMiddleware(c *fiber.Ctx) error { if c.Path() == "/login" || c.Path() == "/welcome" { return c.Next() } db, err := helpers.GetDatabase() if err != nil { return err } userid, err := helpers.GetSessionUserId(c) if err != nil { return err } var user models.User result := db.First(&user, "id = ?", userid) if result.Error != nil { return result.Error } if user.SkipWelcome { return c.Next() } if c.Path() == "/" { return c.Redirect("/welcome") } id := uuid.NewString() key := fmt.Sprintf("redirect-%s", id) sess, err := helpers.GetSessionStore(c) if err != nil { return err } sess.Set(key, c.Path()) sess.Save() redirectUrl := fmt.Sprintf( "/welcome?redirect=%s", id, ) return c.Redirect(redirectUrl) }