70 lines
1.8 KiB
Go
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(®ister); 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()
|
|
}
|