Initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2" //nolint:goimports
|
||||
"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"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
|
||||
)
|
||||
|
||||
func OAuthToken(c *fiber.Ctx) error { //nolint:wsl
|
||||
var login models.Login
|
||||
if err := c.BodyParser(&login); err != nil {
|
||||
return c.Status(401).JSON(fiber.Map{
|
||||
"error": true,
|
||||
"message": "Invalid Credentials",
|
||||
})
|
||||
}
|
||||
|
||||
v := validate.Struct(login)
|
||||
if !v.Validate() {
|
||||
return c.Status(401).JSON(fiber.Map{
|
||||
"error": true,
|
||||
"message": v.Errors.All(),
|
||||
})
|
||||
}
|
||||
user, err := login.CheckLogin() //nolint:wsl
|
||||
if err != nil {
|
||||
return c.Status(401).JSON(fiber.Map{
|
||||
"error": true,
|
||||
"message": err.Error(),
|
||||
})
|
||||
}
|
||||
token, err := auth.Login(c, user.ID, app.Http.Token.ApiJwtSecret) //nolint:wsl
|
||||
if err != nil {
|
||||
return c.Status(401).JSON(fiber.Map{
|
||||
"error": true,
|
||||
"message": err.Error(),
|
||||
})
|
||||
}
|
||||
return c.JSON(fiber.Map{
|
||||
"token": token.Hash,
|
||||
"expires_in": token.Expire,
|
||||
})
|
||||
}
|
||||
|
||||
func ApiLoginPost(c *fiber.Ctx) error { //nolint:wsl
|
||||
// Obtener el usuario del contexto
|
||||
user, ok := c.Locals("user").(*models.User)
|
||||
if !ok || user == nil {
|
||||
return c.JSON(fiber.Map{
|
||||
"success": false,
|
||||
"message": "Usuario no encontrado o no autenticado",
|
||||
})
|
||||
}
|
||||
|
||||
// Generar el token JWT para el usuario
|
||||
token, err := auth.Login(c, user.ID, app.Http.Token.AppJwtSecret)
|
||||
if err != nil {
|
||||
return c.JSON(fiber.Map{
|
||||
"success": false,
|
||||
"message": "Error al generar el token: " + err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
// Retornar respuesta con el usuario y el token
|
||||
return c.JSON(fiber.Map{
|
||||
"success": true,
|
||||
"message": "Inicio de sesión exitoso",
|
||||
"user": user,
|
||||
"token": token,
|
||||
})
|
||||
}
|
||||
|
||||
func ApiRegisterPost(c *fiber.Ctx) error {
|
||||
register := c.Locals("register").(models.RegisterForm)
|
||||
user, err := register.Signup()
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": true, "message": "Error on register request", "data": err.Error()}) //nolint:errcheck
|
||||
|
||||
}
|
||||
store := app.Http.Session.Get(c) // get/create new session
|
||||
store.Set("user_id", user.ID) // save to storage
|
||||
_ = store.Save()
|
||||
|
||||
go services.SendConfirmationEmail(user.Email, c.BaseURL(), user.NombreUsuario)
|
||||
return c.JSON(fiber.Map{
|
||||
"success": true,
|
||||
"message": "Registered successfully! Please confirm your email",
|
||||
})
|
||||
}
|
||||
|
||||
func RefreshOauthToken(c *fiber.Ctx) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user