Files
soft_usite/rest/middlewares/register.go
T
2025-02-06 14:22:29 -05:00

70 lines
1.8 KiB
Go

package middlewares
import (
"fmt"
"github.com/sujit-baniya/fiber-boilerplate/utils"
"github.com/gofiber/fiber/v2"
"github.com/gookit/validate"
"github.com/sujit-baniya/fiber-boilerplate/app"
"github.com/sujit-baniya/fiber-boilerplate/pkg/auth"
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
)
func ValidateRegisterPost(c *fiber.Ctx) error {
// Declara el modelo RegisterForm
var register models.RegisterForm
// Intenta parsear el cuerpo de la solicitud
if err := c.BodyParser(&register); err != nil {
return app.Http.Flash.WithError(c, fiber.Map{
"message": "Error al procesar los datos del formulario: " + err.Error(),
}).Redirect("/register-gas")
}
// Realiza la validación del formulario
v := validate.Struct(register)
if v == nil {
return app.Http.Flash.WithError(c, fiber.Map{
"message": "Error en la validación de los datos del formulario.",
}).Redirect("/register-gas")
}
// Verifica si hay errores de validación
if !v.Validate() {
errorMessage := "Error desconocido en los datos del formulario."
if len(v.Errors) > 0 {
errorMessage = v.Errors.One() // Obtiene el primer error si existe
}
return app.Http.Flash.WithError(c, fiber.Map{
"message": errorMessage,
}).Redirect("/register-gas")
}
return c.Next()
}
func ValidateConfirmToken(c *fiber.Ctx) error {
t := utils.Decrypt(c.Query("t"), app.Http.Server.Key)
fmt.Println(t)
user, err := models.GetUserByUsuarioVerify(t)
if err != nil {
return app.Http.Flash.WithError(c, fiber.Map{
"message": err.Error(),
}).Redirect("/login")
}
if user.EmailVerified {
return app.Http.Flash.WithError(c, fiber.Map{
"message": "Usuario was already validated",
}).Redirect("/login")
}
user.EmailVerified = true
app.Http.Database.DB.Save(&user)
auth.Login(c, user.ID, app.Http.Server.Key) //nolint:wsl
c.Locals("user", user)
return c.Next()
}